mcpbeat Sign in

Souvenir MCP Server

answering

Souvenir is answering right now. Last checked 12 min ago. It exposes 23 tools.

Souvenir prize coins on Solana: search coins and rounds, launch and trade coins, claim wins.

Uptime history 5 hours of history
5 hours agonow
100.0%
Uptime 24h
15 of 15 checks
23
Tools
read from the server
240 ms
Response time
average over 24h
open, no key
Access
streamable-http

Nothing serious here today

Today is the operative word: we check Souvenir every 15 minutes and re-read its code on every release. Watch it and you find out the day that stops being true.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 12 min ago.

run in your terminal
claude mcp add coins --transport http https://souvenir.finance/mcp
Settings → Connectors → Add custom connector, then paste this address
https://souvenir.finance/mcp
~/.codex/config.toml
[mcp_servers.coins]
url = "https://souvenir.finance/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "coins": {
      "url": "https://souvenir.finance/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "coins": {
      "type": "http",
      "url": "https://souvenir.finance/mcp"
    }
  }
}

Available tools 23

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

coin
create_coin_key
A coin key for the coins your wallet created, as the coin page's Developers dialog makes one: { key, id, webhookSecret, view }. The key (ck_live_…) and the webhook secret are shown this once: keep them. It works for set_coin_mode and award_prize and the coin API (souvenir.finance/api/v2/openapi.json), on every coin the wallet created. At most 5 live keys a wallet; revoke one with revoke_coin_key (or DELETE /api/v2/me/coinkeys/{id}, or on the coin's page). Only a coin's creator makes keys. Takes the token from sign_in, as token or as the request's Authorization: Bearer header. Refused with "Coin keys are not open yet." while the coin API's keys are not open.
get_coin
One coin by its mint address, as search_coins lists it: mint, symbol, name, image, venue (pump, meteora or bags), origin (launched on Souvenir or brought), mode (full: its rounds draw an item; draws: they pay drawSol in SOL; prizes: its creator awards prizes), potSol (the open pot), prize (full mode: id, image, priceUsd), round (the latest unfinished one: number, state, targetSol, potSol), holders (at the latest snapshot) and links. A coin that is not on Souvenir is not found.
set_coin_mode
Your coin's mode from its next round (the round filling keeps its own): full (its rounds draw its prize), draws (each round pays drawSol in SOL to its winner) or prizes (you give prizes from its pot with award_prize). Answers the coin, as get_coin does. Takes a coin key from create_coin_key as coinKey or as the request's Authorization: Bearer ck_live_… header; it works for every coin its wallet created. Refused with "The coin API's keys and writes are not open yet." while they are not open.
launch
launch_options
What launching takes now for your wallet, as the site's launch form reads it: allowed and its reason, venues (meteora: Souvenir's own curve; pump: pump.fun), feeLevels and shareLevels in basis points, defaults, tickets (the ticket rules), holdHours, which prize kinds are open, basket, pump (pump.fun's fees; on BTC pairs its feeLevels, and shield and devBuy: whether the launch shield and a dev buy are open to you) and more. Takes the token from sign_in, as token or as the request's Authorization: Bearer header. Refused with "Launching through the API is not open yet." while it is not open to your wallet. Launching a coin, in order: (1) sign_in_challenge with your wallet's address, sign its message with that wallet, then sign_in for a token; (2) launch_options, and search_prizes for the prize; (3) prepare_launch; (4) sign the transaction it answers with your wallet, without sending it, and give it to submit_launch; (5) launch_status until it answers confirmed: a pump.fun launch first answers split with a second transaction, which you sign (or sign and send) and give to submit_split, then launch_status again. Your wallet pays and signs everything: Souvenir never needs or asks for its private key.
launch_status
Where your launch stands, as the site's page follows it: { status, mint } with status pending (ask again in a few seconds), split (a pump.fun launch landed: transaction is the second approval, the split of its creator fee, for your wallet to sign; then submit_split), confirmed (the coin is on Souvenir) or failed (with reason). Takes the token from sign_in, as token or as the request's Authorization: Bearer header. Refused with "Launching through the API is not open yet." while it is not open to your wallet. Launching a coin, in order: (1) sign_in_challenge with your wallet's address, sign its message with that wallet, then sign_in for a token; (2) launch_options, and search_prizes for the prize; (3) prepare_launch; (4) sign the transaction it answers with your wallet, without sending it, and give it to submit_launch; (5) launch_status until it answers confirmed: a pump.fun launch first answers split with a second transaction, which you sign (or sign and send) and give to submit_split, then launch_status again. Your wallet pays and signs everything: Souvenir never needs or asks for its private key.
sign
sign_in
The signed challenge: { token, wallet, expiresAt }, a token for an hour (then sign in again) that the launch tools take as token, or that the request sends as Authorization: Bearer <token>. Launching a coin, in order: (1) sign_in_challenge with your wallet's address, sign its message with that wallet, then sign_in for a token; (2) launch_options, and search_prizes for the prize; (3) prepare_launch; (4) sign the transaction it answers with your wallet, without sending it, and give it to submit_launch; (5) launch_status until it answers confirmed: a pump.fun launch first answers split with a second transaction, which you sign (or sign and send) and give to submit_split, then launch_status again. Your wallet pays and signs everything: Souvenir never needs or asks for its private key.
sign_in_challenge
The first step of launching: { id, message, expiresAt } for your Solana wallet. Sign message (its UTF-8 bytes) with the wallet's ed25519 key and give id and the signature (base64) to sign_in within 5 minutes. Signing it authorizes no transaction or transfer. Launching a coin, in order: (1) sign_in_challenge with your wallet's address, sign its message with that wallet, then sign_in for a token; (2) launch_options, and search_prizes for the prize; (3) prepare_launch; (4) sign the transaction it answers with your wallet, without sending it, and give it to submit_launch; (5) launch_status until it answers confirmed: a pump.fun launch first answers split with a second transaction, which you sign (or sign and send) and give to submit_split, then launch_status again. Your wallet pays and signs everything: Souvenir never needs or asks for its private key.
submit
submit_launch
Your wallet's signed launch: Souvenir checks it is the prepared one (your wallet may only add its compute budget or guard instructions), adds the coin's own signature and sends it. Answers { signature }. Then launch_status. Takes the token from sign_in, as token or as the request's Authorization: Bearer header. Refused with "Launching through the API is not open yet." while it is not open to your wallet. Launching a coin, in order: (1) sign_in_challenge with your wallet's address, sign its message with that wallet, then sign_in for a token; (2) launch_options, and search_prizes for the prize; (3) prepare_launch; (4) sign the transaction it answers with your wallet, without sending it, and give it to submit_launch; (5) launch_status until it answers confirmed: a pump.fun launch first answers split with a second transaction, which you sign (or sign and send) and give to submit_split, then launch_status again. Your wallet pays and signs everything: Souvenir never needs or asks for its private key.
submit_split
The split launch_status handed over, approved by your wallet: either the signature of the transaction your wallet signed and sent itself, or the signed transaction (base64) for Souvenir to send. Answers { signature }. Then launch_status until confirmed. Takes the token from sign_in, as token or as the request's Authorization: Bearer header. Refused with "Launching through the API is not open yet." while it is not open to your wallet. Launching a coin, in order: (1) sign_in_challenge with your wallet's address, sign its message with that wallet, then sign_in for a token; (2) launch_options, and search_prizes for the prize; (3) prepare_launch; (4) sign the transaction it answers with your wallet, without sending it, and give it to submit_launch; (5) launch_status until it answers confirmed: a pump.fun launch first answers split with a second transaction, which you sign (or sign and send) and give to submit_split, then launch_status again. Your wallet pays and signs everything: Souvenir never needs or asks for its private key.
award
award_prize
A coin in prizes mode: gives winner an item, bought now from the coin's open pot at its fresh price plus a round's margin, as a round of the coin's: { round }. item is an id from search_prizes. The same idempotencyKey again answers the same round, whatever changed since. Refused when the pot is short, the item can't be bought now, or the winner is one of the coin's pools, Souvenir's wallets or its creator. Takes a coin key from create_coin_key as coinKey or as the request's Authorization: Bearer ck_live_… header; it works for every coin its wallet created. Refused with "The coin API's keys and writes are not open yet." while they are not open.
build
build_trade
The trade's transaction for your wallet to sign, as the coin's page builds it: { transaction, out, minOut }, the transaction base64 (unsigned, version 0, paid by your wallet). It changes nothing until your wallet signs it and it is sent. Trading a coin, in order: (1) quote_trade to see what you would get; (2) build_trade with your wallet's address; (3) sign the transaction it answers with your wallet; (4) send_transaction, or send it yourself through any Solana RPC. No sign-in: your wallet's signature is the approval, and Souvenir never needs its private key. The same fees and limits as the coin's page on souvenir.finance.
claim
claim_sol
Takes a won prize's SOL instead of the prize now, as the prizes page does, through the site's own route for that kind of prize: its share of the prize's worth (my_wins solOffer: 75% for a skin or a case, 66% for most others, 60% for a store's piece), or an xStocks prize's full worth. Paid to your wallet within minutes. Final: the prize can't be claimed after. Only while the win waits for you and only where the site offers it; hold to claim applies (your wallet must still hold 90% of the coins that counted for the win). Answers { ok } (and bps, the share). Takes the token from sign_in (sign_in_challenge with your wallet's address, sign its message with the wallet, sign_in), as token or as the request's Authorization: Bearer header. Refused with "Wins through the API are not open yet." while they are not open to your wallet, as launching is.
coins
search_coins
Lists coins on Souvenir, searched and sorted. Answers { coins, nextCursor }. Each coin: mint, symbol, name, image, venue (pump, meteora or bags), origin (launched on Souvenir or brought), mode (full: its rounds draw an item; draws: they pay drawSol in SOL; prizes: its creator awards prizes), potSol (the open pot), prize (full mode: id, image, priceUsd), round (the latest unfinished one: number, state, targetSol, potSol), holders (at the latest snapshot) and links. For the next page, pass nextCursor back as cursor; it is null on the last page. Coins whose prize is adult (NSFW) are left out, as on the site, unless nsfw is true.
holders
get_holders
A coin's holders now, as its page shows them: { slot, total, streak, holdHours, holders }, the 50 with the most draw tickets: owner, amount (the coins held now, raw units), tickets, multiplier (1 to 2 with holding streaks, to 3 with staked coins), odds (of its next draw, 0 to 1) and locked (staked coins, raw) when there are any. Its pools, Souvenir's own wallets and the coin's creator are left out: they never win its draws. total is every ticket counted.
prepare
prepare_launch
Prepares your launch, as the site's launch form does (the same checks, fees and rules): stores the picture and the coin's metadata and answers { mint, transaction, summary }, the transaction base64 for your wallet to sign (a pump.fun launch adds venue and transactions, the same one in a list). Sign it with your wallet without sending it and give it to submit_launch within the hour. The picture is imageUrl: an https address on a public host, fetched once, held to the site's picture rules (png, jpg, gif or webp, at most 4 MB). A coin with a prize names one: skin (an id from search_prizes), case, or basket (2 to 10 ids). With a dev buy your wallet's WBTC does not cover, it answers devSwap instead: sign its transaction and send it (send_transaction, or any Solana RPC), then prepare_launch again with devBuySats as given. Takes the token from sign_in, as token or as the request's Authorization: Bearer header. Refused with "Launching through the API is not open yet." while it is not open to your wallet. Launching a coin, in order: (1) sign_in_challenge with your wallet's address, sign its message with that wallet, then sign_in for a token; (2) launch_options, and search_prizes for the prize; (3) prepare_launch; (4) sign the transaction it answers with your wallet, without sending it, and give it to submit_launch; (5) launch_status until it answers confirmed: a pump.fun launch first answers split with a second transaction, which you sign (or sign and send) and give to submit_split, then launch_status again. Your wallet pays and signs everything: Souvenir never needs or asks for its private key.
prizes
search_prizes
Prizes a coin can be launched with now, from Souvenir's catalogue: { prizes, total, next }. Each prize: id (what prepare_launch takes as skin), title, kind, priceUsd, from (true: a family priced from its smallest, which id names), image, and store, sizes or note when it has them. For the next page, pass next back as offset; it is null on the last page. No sign-in needed. CS2 skins are not listed here: a launch names one by its market name, such as "AK-47 | Redline (Field-Tested)". Launching a coin, in order: (1) sign_in_challenge with your wallet's address, sign its message with that wallet, then sign_in for a token; (2) launch_options, and search_prizes for the prize; (3) prepare_launch; (4) sign the transaction it answers with your wallet, without sending it, and give it to submit_launch; (5) launch_status until it answers confirmed: a pump.fun launch first answers split with a second transaction, which you sign (or sign and send) and give to submit_split, then launch_status again. Your wallet pays and signs everything: Souvenir never needs or asks for its private key.
quote
quote_trade
What a buy or a sell of a Souvenir coin gives now, as the coin's page quotes it: { out, minOut, feeLamports, partial, venue }. out and minOut are the coin's raw units for a buy, lamports for a sell; minOut is the least you get at slippageBps. feeLamports is the trading fee (null on a pump.fun coin, where pump.fun takes it); partial, a buy larger than the curve has left (spent and refund say how much goes in). Trading a coin, in order: (1) quote_trade to see what you would get; (2) build_trade with your wallet's address; (3) sign the transaction it answers with your wallet; (4) send_transaction, or send it yourself through any Solana RPC. No sign-in: your wallet's signature is the approval, and Souvenir never needs its private key. The same fees and limits as the coin's page on souvenir.finance.
recent
recent_wins
The latest wins on Souvenir, newest first, as the site's Recent winners lists them: { wins }, each with mint, symbol, coinImage, skin (the prize), skinImage, winner, winnerShort, round, at, state, ordered, claimRule, lastCall, solLamports (a last call's SOL), offer and worthUsd. Wins of adult (NSFW) prizes are left out, as on the site, unless nsfw is true: from the latest 200, so a page may hold fewer than limit.
revoke
revoke_coin_key
Ends one of your coin keys now, as the coin page's Developers dialog does: { ok }. It is refused from then on and its webhook stops; it can't be made live again. id is the key's id, as create_coin_key answered it (GET /api/v2/me/coinkeys lists your keys with their ids). Works whatever the coin API's switch, so a leaked key can always be ended. 404 for an id that is not one of your live keys. Takes the token from sign_in, as token or as the request's Authorization: Bearer header.
round
get_round
One round in full: { round } with its mode, target and pot, its state in words (stateText), and its proof: the holder snapshot's slot, the ticket total, the Merkle root, the drand round and randomness, and the winning ticket (SHA-256 of the randomness, as a number, modulo the total). A prize the creator awarded has proof { awardedBy: "creator" }; a round not drawn yet has none.
rounds
get_rounds
A coin's rounds, newest first, 50 a page. Answers { rounds, next }; each round: number, state, prize, winner, drawnAt, deliveredAt, paidSol (SOL paid to the winner, else null). For older rounds, pass next back as cursor; it is null on the last page.
send
send_transaction
Sends a transaction your wallet signed (base64, every signature in place) to Solana, as the site sends what a wallet signs: { signature }. Only one Souvenir built for you in the last few minutes (build_trade, or prepare_launch's devSwap), signed as it was built; any other is refused (not_built): send it through a Solana RPC. A trade can't be undone once it lands. With no answer from the network in time it may still land: its signature is answered the same. Trading a coin, in order: (1) quote_trade to see what you would get; (2) build_trade with your wallet's address; (3) sign the transaction it answers with your wallet; (4) send_transaction, or send it yourself through any Solana RPC. No sign-in: your wallet's signature is the approval, and Souvenir never needs its private key. The same fees and limits as the coin's page on souvenir.finance.
wins
my_wins
Your wallet's wins, as the site's prizes page reads them: { wins, link, evmAddress }, the newest first. Each win: mint, symbol, number (its round), skin (the prize), state (drawn: waiting for you; buying, sent, delivered; owed_sol, paid_sol; forfeited), stateText, linkDeadline (claim by then), keep (the coins you must still hold to claim, raw units), and its kind's details (goods, gift, stars, trip, stock, nft, evm, offer, pack). solOffer, when not null, is what claim_sol pays: bps of its worth, and lamports. An xStocks prize (stock) not claimed yet can be taken at its full worth in SOL. Every other claim (a shipping address, a gift card's code, a Steam trade link, a hotel) is on souvenir.finance/prizes. Takes the token from sign_in (sign_in_challenge with your wallet's address, sign its message with the wallet, sign_in), as token or as the request's Authorization: Bearer header. Refused with "Wins through the API are not open yet." while they are not open to your wallet, as launching is.

Endpoints

URLTransportStateLatencyChecked
https://souvenir.finance/mcp streamable-http answering 218 ms 12 min ago

Alternatives to Souvenir

same job, measured the same way
Carddata
by cloudcorprecords

Sports and trading card sold prices: search cards, read prices at every grade, and list plans.

local only
Kalshi
by yakub268

Search, analyze, and trade Kalshi prediction markets through Claude Desktop

109 installs/wk local only
101 Soundboards
by 101soundboards

Search millions of sound and soundboards on 101soundboards.com

4 tools answering
Launch Tape
by launchtape

Recorded pump fun (Solana memecoin) graduation data: coins, early trades, wallets, outcomes.

11 tools answering
WIPE Around
by iw-around

Local businesses in Israel: search by trade and town, read prices, services and contacts.

2 tools answering
make.fun
by make

Earn USDC on Solana by winning coding bounties: find a bounty, track entries, claim rewards.

49 tools answering
Neglect
by neglect

Full Solana DeFi coverage: launchpads, tokens, trades, and wallets, decoded at scale.

answering
Agentpump MCP
by axiosdevs

Launch & trade tokens on AgentPump, a Solana bonding-curve launchpad, from your AI agent.

166 installs/wk local only

Souvenir — questions

Answers built from our own checks of this server.

What can Souvenir do?
It exposes 23 tools, read directly from the server on our last check. Among them: award_prize, build_trade, claim_sol, create_coin_key, get_coin, get_holders and 17 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is Souvenir mostly used for?
Its tools cluster around coin, launch and sign. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is Souvenir working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 15 of 15 checks got a reply (100.0%), average response time 240 ms. The bar chart above shows every period we have measured.
How do I connect Souvenir?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Souvenir need an API key?
No. Souvenir completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 23 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is Souvenir?
It answers our handshake in 240 ms on average, which is faster than 56% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.