Souvenir coins and prize rounds on Solana: search coins, read pots, rounds and draw proofs.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
The coin's mint address (base58).
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http coins https://souvenir.finance/mcp
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.
| Argument | Type | Description |
|---|---|---|
| mint* | string | The coin's mint address (base58). |
{
"type": "object",
"required": [
"mint"
],
"properties": {
"mint": {
"type": "string",
"pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
"description": "The coin's mint address (base58)."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| mint* | string | The coin's mint address (base58). |
| number* | integer | The round's number. |
{
"type": "object",
"required": [
"mint",
"number"
],
"properties": {
"mint": {
"type": "string",
"pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
"description": "The coin's mint address (base58)."
},
"number": {
"type": "integer",
"minimum": 1,
"description": "The round's number."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| mint* | string | The coin's mint address (base58). |
| cursor | string | The last page's next. |
{
"type": "object",
"required": [
"mint"
],
"properties": {
"mint": {
"type": "string",
"pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
"description": "The coin's mint address (base58)."
},
"cursor": {
"type": "string",
"description": "The last page's next."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| q | string | Search: a coin's name or ticker ($ optional), its prize's name, or the start of its mint. |
| nsfw | boolean | true to list coins whose prize is adult (NSFW) too; left out by default. |
| sort | string | pot: the largest open pot first. new: the newest launch first. drawing: the closest to its next draw first (the pot nearest its target). holders: the most holders first. |
| limit | integer | Coins a page. |
| venue | string | Only coins trading there: pump.fun, Meteora or Bags. |
| cursor | string | The last page's nextCursor. |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 10, 2026.
{
"type": "object",
"properties": {
"q": {
"type": "string",
"maxLength": 60,
"description": "Search: a coin's name or ticker ($ optional), its prize's name, or the start of its mint."
},
"nsfw": {
"type": "boolean",
"default": false,
"description": "true to list coins whose prize is adult (NSFW) too; left out by default."
},
"sort": {
"enum": [
"pot",
"new",
"drawing",
"holders"
],
"type": "string",
"default": "pot",
"description": "pot: the largest open pot first. new: the newest launch first. drawing: the closest to its next draw first (the pot nearest its target). holders: the most holders first."
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Coins a page."
},
"venue": {
"enum": [
"pump",
"meteora",
"bags"
],
"type": "string",
"description": "Only coins trading there: pump.fun, Meteora or Bags."
},
"cursor": {
"type": "string",
"description": "The last page's nextCursor."
}
},
"additionalProperties": false
}