diff --git a/servers/maestro-mcp-server/server.yaml b/servers/maestro-mcp-server/server.yaml new file mode 100644 index 00000000..1eda3895 --- /dev/null +++ b/servers/maestro-mcp-server/server.yaml @@ -0,0 +1,23 @@ +name: maestro-mcp-server +image: mcp/maestro-mcp-server +type: server +meta: + category: monitoring + tags: + - monitoring + - blockchain + - bitcoin + - rpc +about: + title: Maestro MCP Server + description: A Model Context Protocol (MCP) server exposing Bitcoin blockchain data through the Maestro API platform. Provides tools to explore blocks, transactions, addresses, inscriptions, runes, and other metaprotocol data. + icon: https://avatars.githubusercontent.com/u/84299480?s=200&v=4 +source: + project: https://github.com/maestro-org/maestro-mcp-server + branch: main +config: + description: Configure the connection to Maestro MCP Server + secrets: + - name: maestro-mcp-server.API_KEY_API_KEY + env: API_KEY_API_KEY + example: your-maestro-api-key diff --git a/servers/maestro-mcp-server/tools.json b/servers/maestro-mcp-server/tools.json new file mode 100644 index 00000000..4ed3b218 --- /dev/null +++ b/servers/maestro-mcp-server/tools.json @@ -0,0 +1,554 @@ +[ + { + "name": "get_address_activity", + "description": "List satoshi balance change activity for an address.", + "arguments": [ + { + "name": "address", + "type": "string", + "desc": "Bech32 or scriptPubKey (hex)." + }, + { "name": "order", "type": "string", "desc": "asc or desc." }, + { "name": "count", "type": "integer", "desc": "Results per page." }, + { "name": "from", "type": "integer", "desc": "Min block height." }, + { "name": "to", "type": "integer", "desc": "Max block height." }, + { + "name": "cursor", + "type": "string", + "desc": "Pagination cursor." + }, + { + "name": "activity_kind", + "type": "string", + "desc": "increase | decrease | self_transfer." + }, + { + "name": "exclude_self_transfers", + "type": "boolean", + "desc": "Exclude self-transfers." + } + ] + }, + { + "name": "get_address_balance", + "description": "Get current satoshi balance for an address (confirmed only).", + "arguments": [ + { + "name": "address", + "type": "string", + "desc": "Bech32 or scriptPubKey (hex)." + } + ] + }, + { + "name": "get_address_balance_historical", + "description": "Get historical satoshi balances per block, with USD valuation.", + "arguments": [ + { + "name": "address", + "type": "string", + "desc": "Bech32 or scriptPubKey (hex)." + }, + { "name": "order", "type": "string", "desc": "asc or desc." }, + { "name": "count", "type": "integer", "desc": "Results per page." }, + { + "name": "from", + "type": "integer", + "desc": "Min height or timestamp." + }, + { + "name": "to", + "type": "integer", + "desc": "Max height or timestamp." + }, + { + "name": "cursor", + "type": "string", + "desc": "Pagination cursor." + }, + { + "name": "height_params", + "type": "boolean", + "desc": "If true, from/to are heights; false means timestamps." + } + ] + }, + { + "name": "get_address_brc20", + "description": "List BRC-20 balances for an address (total and available).", + "arguments": [ + { + "name": "address", + "type": "string", + "desc": "Bech32 or scriptPubKey (hex)." + } + ] + }, + { + "name": "get_address_brc20_transfer_inscriptions", + "description": "List unspent BRC-20 transfer inscriptions at an address.", + "arguments": [ + { + "name": "address", + "type": "string", + "desc": "Bech32 or scriptPubKey (hex)." + }, + { + "name": "ticker", + "type": "string", + "desc": "Optional BRC-20 ticker filter." + }, + { "name": "count", "type": "integer", "desc": "Results per page." }, + { "name": "order", "type": "string", "desc": "asc or desc." }, + { "name": "cursor", "type": "string", "desc": "Pagination cursor." } + ] + }, + { + "name": "get_address_inscriptions", + "description": "List inscriptions currently controlled by an address.", + "arguments": [ + { + "name": "address", + "type": "string", + "desc": "Bech32 or scriptPubKey (hex)." + }, + { "name": "count", "type": "integer", "desc": "Results per page." }, + { "name": "cursor", "type": "string", "desc": "Pagination cursor." } + ] + }, + { + "name": "get_address_inscription_activity", + "description": "List inscription send/receive/self-transfer activity for an address.", + "arguments": [ + { + "name": "address", + "type": "string", + "desc": "Bech32 or scriptPubKey (hex)." + }, + { "name": "order", "type": "string", "desc": "asc or desc." }, + { "name": "count", "type": "integer", "desc": "Results per page." }, + { "name": "from", "type": "integer", "desc": "Min block height." }, + { "name": "to", "type": "integer", "desc": "Max block height." }, + { + "name": "cursor", + "type": "string", + "desc": "Pagination cursor." + }, + { + "name": "inscription_id", + "type": "string", + "desc": "Filter by inscription id." + }, + { + "name": "activity_kind", + "type": "string", + "desc": "send | receive | self_transfer." + }, + { + "name": "exclude_self_transfers", + "type": "boolean", + "desc": "Exclude self-transfers." + } + ] + }, + { + "name": "get_address_runes", + "description": "List Rune balances for an address (total and available).", + "arguments": [ + { + "name": "address", + "type": "string", + "desc": "Bech32 or scriptPubKey (hex)." + } + ] + }, + { + "name": "get_address_rune_activity", + "description": "List Rune balance increases/decreases/self-transfers for an address.", + "arguments": [ + { + "name": "address", + "type": "string", + "desc": "Bech32 or scriptPubKey (hex)." + }, + { "name": "order", "type": "string", "desc": "asc or desc." }, + { "name": "count", "type": "integer", "desc": "Results per page." }, + { "name": "from", "type": "integer", "desc": "Min block height." }, + { "name": "to", "type": "integer", "desc": "Max block height." }, + { + "name": "cursor", + "type": "string", + "desc": "Pagination cursor." + }, + { + "name": "rune", + "type": "string", + "desc": "Rune ID (e.g., 840000:28) or name." + }, + { + "name": "activity_kind", + "type": "string", + "desc": "increased | decreased | self_transfer." + }, + { + "name": "exclude_self_transfers", + "type": "boolean", + "desc": "Exclude self-transfers." + } + ] + }, + { + "name": "get_address_rune_utxos", + "description": "List UTXOs at an address containing Runes.", + "arguments": [ + { + "name": "address", + "type": "string", + "desc": "Bech32 or scriptPubKey (hex)." + }, + { + "name": "rune", + "type": "string", + "desc": "Rune ID or name filter." + }, + { + "name": "order_by", + "type": "string", + "desc": "height | amount." + }, + { "name": "order", "type": "string", "desc": "asc or desc." }, + { "name": "count", "type": "integer", "desc": "Results per page." }, + { + "name": "cursor", + "type": "string", + "desc": "Pagination cursor." + }, + { "name": "from", "type": "integer", "desc": "Min block height." }, + { "name": "to", "type": "integer", "desc": "Max block height." } + ] + }, + { + "name": "get_address_statistics", + "description": "Get address stats: tx counts, UTXOs, sat balance, runes/inscriptions flags.", + "arguments": [ + { + "name": "address", + "type": "string", + "desc": "Bech32 or scriptPubKey (hex)." + } + ] + }, + { + "name": "get_address_txs", + "description": "List transactions that spent/produced UTXOs for an address.", + "arguments": [ + { + "name": "address", + "type": "string", + "desc": "Bech32 or scriptPubKey (hex)." + }, + { "name": "count", "type": "integer", "desc": "Results per page." }, + { + "name": "confirmations", + "type": "integer", + "desc": "Minimum confirmations." + }, + { "name": "order", "type": "string", "desc": "asc or desc." }, + { "name": "from", "type": "integer", "desc": "Min block height." }, + { "name": "to", "type": "integer", "desc": "Max block height." }, + { "name": "cursor", "type": "string", "desc": "Pagination cursor." } + ] + }, + { + "name": "get_address_utxos", + "description": "List UTXOs for an address; supports dust and metaprotocol filtering.", + "arguments": [ + { + "name": "address", + "type": "string", + "desc": "Bech32 or scriptPubKey (hex)." + }, + { + "name": "filter_dust", + "type": "boolean", + "desc": "Exclude UTXOs < 100k sats." + }, + { + "name": "filter_dust_threshold", + "type": "integer", + "desc": "Custom dust threshold (sats)." + }, + { + "name": "exclude_metaprotocols", + "type": "boolean", + "desc": "Exclude Rune/inscription UTXOs." + }, + { + "name": "ignore_used_brc20", + "type": "boolean", + "desc": "Keep UTXOs with used BRC-20 if excluding metaprotocols." + }, + { "name": "count", "type": "integer", "desc": "Results per page." }, + { "name": "order", "type": "string", "desc": "asc or desc." }, + { "name": "from", "type": "integer", "desc": "Min block height." }, + { "name": "to", "type": "integer", "desc": "Max block height." }, + { "name": "cursor", "type": "string", "desc": "Pagination cursor." } + ] + }, + { + "name": "get_mempool_address_balance", + "description": "Get address satoshi balance including mempool-aware estimates.", + "arguments": [ + { + "name": "address", + "type": "string", + "desc": "Bech32 or scriptPubKey (hex)." + } + ] + }, + { + "name": "get_mempool_address_runes", + "description": "Get mempool-aware Rune balances for an address.", + "arguments": [ + { + "name": "address", + "type": "string", + "desc": "Bech32 or scriptPubKey (hex)." + } + ] + }, + { + "name": "list_brc20_assets", + "description": "List BRC-20 tickers deployed on-chain.", + "arguments": [ + { "name": "count", "type": "integer", "desc": "Results per page." }, + { "name": "cursor", "type": "string", "desc": "Pagination cursor." } + ] + }, + { + "name": "get_brc20_info", + "description": "Get BRC-20 metadata and current state.", + "arguments": [ + { + "name": "ticker", + "type": "string", + "desc": "BRC-20 ticker (e.g., ORDI)." + } + ] + }, + { + "name": "list_supported_dexs", + "description": "List supported DEX identifiers for market endpoints.", + "arguments": [] + }, + { + "name": "get_dex_ohlc", + "description": "Get OHLCV candles for a DEX and symbol.", + "arguments": [ + { + "name": "dex", + "type": "string", + "desc": "all | magiceden | dotswap." + }, + { + "name": "symbol", + "type": "string", + "desc": "Trading pair, e.g., BTC-840000:28." + }, + { + "name": "mempool", + "type": "string", + "desc": "included | excluded | only." + }, + { + "name": "resolution", + "type": "string", + "desc": "1m,5m,15m,30m,1h,4h,1d,1w,1M." + }, + { + "name": "from", + "type": "integer", + "desc": "Unix seconds start." + }, + { "name": "to", "type": "integer", "desc": "Unix seconds end." } + ] + }, + { + "name": "get_btc_price_by_timestamp", + "description": "Get BTC-USD price at a given UTC timestamp.", + "arguments": [ + { "name": "timestamp", "type": "integer", "desc": "Unix seconds." } + ] + }, + { + "name": "get_rune_price_by_timestamp", + "description": "Get Rune price (USD and sats) at a given UTC timestamp.", + "arguments": [ + { + "name": "rune_id", + "type": "string", + "desc": "Rune ID in :." + }, + { "name": "timestamp", "type": "integer", "desc": "Unix seconds." } + ] + }, + { + "name": "rpc_chain_info", + "description": "Bitcoin node and chain status from Node RPC.", + "arguments": [] + }, + { + "name": "rpc_mempool_info", + "description": "Current mempool size, usage, fee thresholds, RBF state.", + "arguments": [] + }, + { + "name": "rpc_mempool_transactions", + "description": "List transaction IDs currently in the mempool.", + "arguments": [] + }, + { + "name": "rpc_block_miner_info", + "description": "Get miner metadata for a given block.", + "arguments": [ + { + "name": "height_or_hash", + "type": "string", + "desc": "Block height or block hash." + } + ] + }, + { + "name": "rpc_block_volume", + "description": "Get total transaction output volume (sats) for a block.", + "arguments": [ + { + "name": "height_or_hash", + "type": "string", + "desc": "Block height or block hash." + } + ] + }, + { + "name": "event_healthcheck", + "description": "Event Manager healthcheck.", + "arguments": [] + }, + { + "name": "event_list_logs", + "description": "List event logs produced by triggers.", + "arguments": [ + { "name": "page", "type": "integer", "desc": "Page number (1+)." }, + { + "name": "limit", + "type": "integer", + "desc": "Items per page (1–100)." + }, + { + "name": "trigger_id", + "type": "string", + "desc": "Filter by trigger id." + }, + { + "name": "chain", + "type": "string", + "desc": "Filter by chain (bitcoin)." + }, + { + "name": "network", + "type": "string", + "desc": "Filter by network (mainnet/testnet)." + } + ] + }, + { + "name": "event_get_log", + "description": "Get a single event log by id.", + "arguments": [ + { "name": "id", "type": "string", "desc": "Event log id." } + ] + }, + { + "name": "event_list_triggers", + "description": "List all triggers.", + "arguments": [] + }, + { + "name": "event_create_trigger", + "description": "Create a new trigger for on-chain events.", + "arguments": [ + { "name": "name", "type": "string", "desc": "Trigger name." }, + { "name": "chain", "type": "string", "desc": "bitcoin." }, + { + "name": "network", + "type": "string", + "desc": "mainnet or testnet." + }, + { "name": "type", "type": "string", "desc": "transaction." }, + { + "name": "webhook_url", + "type": "string", + "desc": "Webhook endpoint (URL)." + }, + { + "name": "filters", + "type": "array", + "desc": "Filter objects per schema." + }, + { + "name": "confirmations", + "type": "integer", + "desc": "Required confirmations." + }, + { "name": "status", "type": "string", "desc": "active or paused." } + ] + }, + { + "name": "event_get_trigger", + "description": "Get a trigger by id.", + "arguments": [{ "name": "id", "type": "string", "desc": "Trigger id." }] + }, + { + "name": "event_update_trigger", + "description": "Update an existing trigger by id.", + "arguments": [ + { "name": "id", "type": "string", "desc": "Trigger id." }, + { "name": "name", "type": "string", "desc": "Updated name." }, + { "name": "chain", "type": "string", "desc": "bitcoin." }, + { + "name": "network", + "type": "string", + "desc": "mainnet or testnet." + }, + { "name": "type", "type": "string", "desc": "transaction." }, + { + "name": "webhook_url", + "type": "string", + "desc": "Webhook endpoint (URL)." + }, + { + "name": "filters", + "type": "array", + "desc": "Filter objects per schema." + }, + { + "name": "confirmations", + "type": "integer", + "desc": "Required confirmations." + }, + { "name": "status", "type": "string", "desc": "active or paused." } + ] + }, + { + "name": "event_delete_trigger", + "description": "Delete a trigger by id.", + "arguments": [{ "name": "id", "type": "string", "desc": "Trigger id." }] + }, + { + "name": "event_list_trigger_condition_options", + "description": "List condition picklist options for triggers.", + "arguments": [ + { "name": "trigger_type", "type": "string", "desc": "transaction." } + ] + } +]