Bitcoin Stamps MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| STAMPCHAIN_API_KEY | No | Optional free API key sent as X-API-Key. Anonymous callers get ~100 requests/min; a key raises that 3-5x with a 50,000/day quota. Register with POST https://stampchain.io/api/v2/keys | |
| STAMPCHAIN_API_URL | No | Base URL of the stampchain.io explorer API. Can point to https://dev.stampchain.io or a self-hosted explorer. | https://stampchain.io |
| STAMPCHAIN_MCP_HOST | No | Bind address for HTTP mode. | 127.0.0.1 |
| STAMPCHAIN_MCP_PORT | No | Bind port for HTTP mode. | 8791 |
| STAMPCHAIN_MCP_TRANSPORT | No | Transport for MCP server. Set to 'http' to serve streamable HTTP at /mcp with a landing page at /. | stdio |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| stampchain_healthA | Health of stampchain.io and its indexer: API/DB/mempool/XCP status, indexed vs network block height (isSynced), total stamps and SRC-20 deployments, circuit-breaker state. Call first if other tools error. |
| get_blockA | A Bitcoin block as the Stamps indexer sees it. |
| search_stampsA | Search stamps by free text (creator name, CPID / asset name such as NAMEDPEPE, stamp number, tx hash fragment). Returns stamp number, CPID, preview URL, mimetype, creator, tx hash. Negative stamp numbers are 'cursed' stamps (pre-protocol-rule artifacts, still indexed). |
| list_stampsA | Paginated stamps, newest first by default (sort DESC/ASC by stamp
number). Optional market filters apply to stamps that have market data
(floor price in BTC from open dispensers, holder count, 24h volume,
data_quality_score 0-10). Each row carries |
| get_stampA | One stamp by number, tx hash, or CPID: creator (+ creator_name if registered), supply, locked/divisible flags, mimetype, file hash and size, block and time, stamp_url (the rendered artwork), plus market_data and lowestPriceDispenser when the indexer has them. The base64 image payload is dropped unless include_image_base64=True. |
| stamp_holdersC | Who holds a stamp: address, amount held, percentage of supply. Supply for most art stamps is 1; SRC-721 and editioned stamps spread across many holders. |
| stamp_dispensersB | Counterparty dispensers for a stamp — the on-chain 'listings'. Each row: source/origin address, give_quantity, give_remaining, escrow_quantity, satoshirate and btcrate (price per unit), status (open/closed), tx hash. An open dispenser with give_remaining > 0 is a live offer; the lowest btcrate among them is the floor. Buying is a wallet action by the user — this tool only reads. |
| dispensers_by_addressA | All dispensers a Bitcoin address has opened, optionally filtered by status (open / closed). Useful to see what a seller currently lists. |
| stamp_activityA | Transfer history for a stamp. kind='sends' = Counterparty sends (owner to owner); kind='dispenses' = purchases from dispensers (with the BTC paid). Newest first. |
| stamps_in_blockA | Stamps minted in a block — the latest indexed block when block_index is omitted. Good for 'what just got stamped'. |
| wallet_stampsB | Stamps held by a Bitcoin address, with per-stamp balance and, when available, value (sort_by: DESC/ASC by stamp, value_desc, value_asc, quantity_desc, recent_desc ...). Enhanced with market data by default. |
| wallet_balanceB | Combined view of a Bitcoin address: its BTC balance, stamps held (with UTXO binding info) and SRC-20 token balances, in one call. |
| search_src20A | Search SRC-20 tokens by tick fragment. Returns tick, deploy tx, max_supply, total_minted, progress (%), holders, total_mints, and the per-mint limit. mintable_only=True keeps tokens still under 100%. |
| list_src20_deploysA | Recent SRC-20 DEPLOY transactions (newest first): tick, max, lim, decimals, creator, block and time, deploy stamp URL. For a ranked market view use src20_market; for mint progress use get_src20. |
| get_src20A | Everything about one SRC-20 token in one call: the DEPLOY record (max supply, per-mint limit, decimals, creator, block), mint status (total_minted, progress %, total_mints, holders), and market data (price in BTC/USD, market cap, 24h volume, 24h/7d/30d change, primary exchange, data_quality_score). 7d/30d/total volume are often 0 or null — the upstream exchanges do not publish them; do not read a zero there as 'no trading'. |
| src20_marketA | SRC-20 market data. With |
| src20_balanceA | SRC-20 token balances of a Bitcoin address — all ticks, or one tick when given. Amounts are token units (see the deploy's decimals). |
| src20_holdersA | Holder snapshot for an SRC-20 tick at the current block: address and amount, largest first. Use for concentration checks (top-10 share). |
| src20_transactionsA | Valid SRC-20 transactions (DEPLOY / MINT / TRANSFER), newest first. Filter by tick, by op, and/or by block_index. Rows carry creator, destination, amt, tick, stamp number, block_time. |
| src20_txA | Decode one SRC-20 transaction by its Bitcoin tx hash: op, tick, amounts, creator, destination, validity, block. |
| src101_deploysC | SRC-101 deployments — the name-service roots (e.g. BitNameService 'btc' names). Each row: deploy tx hash, root/tick, name, pricing tiers (pri), mint limits, image base URL, creator. |
| src101_walletA | SRC-101 names (Bitcoin Name Service tokens) held by an address. With deploy_hash: names under that specific root (primary name first). Without: every SRC-101 balance the indexer has for the address. |
| list_collectionsD | Stamp collections: id, name, description, creators, stamp numbers, stamp_count, total_editions. |
| get_collectionA | One collection by id (hex) or by name, with its stamps and — when include_market_data — floor price, volume and holder metrics. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 24 tools
Some pairs overlap: get_src20 already includes market data, making src20_market with a tick largely redundant, and get_block/stamps_in_block both cover a block from different angles. However, most resource-specific tools are clearly separated by protocol and purpose.
Names mix verb-first forms like get_block and list_stamps with noun-first resource forms like stamp_holders, src20_market, and wallet_balance, so there is no uniform verb_noun convention. The snake_case prefixes make the set readable and somewhat predictable, but the get/list/search verbs are applied inconsistently.
24 tools falls in the heavy 16-25 band, though the server covers three protocols plus wallet, market, and collection data. Most tools have a distinct job, but a few could be consolidated without losing capability.
As a read-only indexer, the surface is comprehensive: stamp lookup/search/list, holders, dispensers, transfers, block data, wallet balances, SRC-20 lifecycle/market/holders/transactions, SRC-101 names, and collections are all represented. There are no obvious dead ends for querying the indexed data.