Chain Daddy
NPM · @CHAINDADDY/MCP · 2 COMPONENTS
Search tokens, check registrations, and run a Chain Daddy creator store from your agent.
Available components
Last scanned (16 hours ago)
Scores higher than 65% of npm servers
Category Crypto and Web3
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 37 of 115 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency71
- Repository check failed: no source repository is declared. See how to fix → View diagnostics → Fail
- Cryptographically verified build provenance (signed, bound to opencrown/chaindaddy-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 1 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability67
- 75% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Partial
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 9861 tokens (~186/item across 53 items; 50 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management61
- Stability check failed: the tool surface changed between 0.6.0 and 0.6.16: 3 tool removals, 0 breaking changes, 0 additions. See how to fix → Fail
Tool Coverage94
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 78% of tool parameters carry a description.Partial
- Structured output schemas are declared (2% of tools); any adoption earns full credit.Pass
Tool Safety96
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 6 of 7 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "deploy_token" implies "deploy" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
- An AI judge read all 52 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 22 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 21 Oct 26 −14
- Malware scan: pass → unverified ▼ security
- Package version: 0.6.2 → 0.6.16 functional
- 19 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 44 to 48.
- 17 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 38 to 41.
- 15 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 31 to 34.
- 13 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 24 to 28.
- 11 Oct 26 +2
No change was recorded against any check on this day. Stability & Change Management went from 8 to 21.
- 7 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 0 to 8.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 23 Oct 2026 · Analysed npm/@chaindaddy/mcp@0.6.16
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | opencrown/chaindaddy-mcp |
| Certificate issuer | https://gitlab.com |
| Certificate SAN | https://gitlab.com/opencrown/chaindaddy-mcp//.gitlab-ci.yml@refs/tags/v0.6.16 |
| Rekor log index | 3355237308 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v0.2 |
| Subject digest | sha512:1db21ff9db8c3ebdc8c6d21910fbde9bf7d5a74f1fdfae72bd463b9cf31e7f3106c6f67ba7f68b8ca4ea1ab53dcafaab9aa79e06c49ef82e31ef7387e |
Background: How many MCP packages publish verified provenance →
Dependencies 115 packages
| Packages resolved | 115 |
|---|---|
| Stale | 37 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
authenticate Sign in with a wallet signature ~195
Step 2 of authentication. Exchanges a signed SIWE/SIWS message for a session bound to a backend JWT. Call get_auth_nonce first and embed the nonce in the message. Params: wallet_address (string), chain_type ('evm'|'solana'), signed_message (string), signature (string) Returns: {session_token: string, expires_at: string} Errors: INVALID_SIGNATURE, INVALID_ADDRESS, UNSUPPORTED_CHAIN, JWT_EXCHANGE_FAILED
| Name | Type | Req | Description |
|---|---|---|---|
| chain_type | string | yes | Chain type: 'evm' or 'solana' |
| signature | string | yes | The signature of the message (hex for EVM, base58 for Solana) |
| signed_message | string | yes | The SIWE or SIWS message that was signed. Must include the server-issued nonce from get_auth_nonce. |
| wallet_address | string | yes | Wallet address (0x... for EVM, base58 for Solana) |
No output schema declared.
No examples provided.
cancel_order Cancel an order ~91
Cancel a pending order. Only works on orders that have not been confirmed. Params: order_id (string), session_token (string) Returns: {cancelled: true} Errors: NO_SESSION, SESSION_EXPIRED, ORDER_NOT_FOUND, ORDER_EXPIRED, ORDER_ALREADY_CONFIRMED
| Name | Type | Req | Description |
|---|---|---|---|
| order_id | string | yes | Order ID from create_order |
| session_token | string | yes | Session token from authenticate |
No output schema declared.
No examples provided.
check_eligibility Check registration eligibility ~74
Check if a wallet is eligible to claim a crown for a specific token. Verifies deployer, owner, admin, or majority holder status.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | yes | Chain where token exists |
| token_address | string | yes | Token contract address |
| wallet_address | string | yes | Wallet to check eligibility for |
No output schema declared.
No examples provided.
check_heartbeat Check token health ~41
Get heartbeat status and activity score for a crown. Score below 60% means at-risk of reclaim.
| Name | Type | Req | Description |
|---|---|---|---|
| crown_id | number | yes | Crown token ID |
No output schema declared.
No examples provided.
claim_crown Build a registration claim action ~237
Claim a crown for a specific token on a specific chain. Requires verified ownership. Returns an order action spec for inclusion in create_order. Params: symbol (string), chain (string), token_address (string), verification_method ('deployer'|'mint_authority'|'owner'|'majority_holder'), session_token (string) Returns: {order_action_spec: {type: 'claim_crown', params: {symbol, chain, token_address, verification_method, wallet}}} Errors: NO_SESSION, SESSION_EXPIRED, INVALID_CHAIN, INVALID_VERIFICATION_METHOD
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | yes | Chain where the token exists (e.g., 'arb', 'sol', 'base', 'polygon', 'bsc', 'eth') |
| session_token | string | yes | Session token from authenticate |
| symbol | string | yes | Token symbol to claim crown for (e.g., 'PEPE') |
| token_address | string | yes | Token contract/mint address on the specified chain |
| verification_method | string | yes | Method used to verify ownership: 'deployer', 'mint_authority', 'owner', or 'majority_holder' |
No output schema declared.
No examples provided.
confirm_order Confirm and execute an order ~149
Confirm and execute a pending order. Triggers all actions in the order. Cannot be undone. Params: order_id (string), session_token (string), idempotency_key (string?) Returns: {results: [{action, status, tx_hash?, error?}], idempotency_key} Errors: NO_SESSION, SESSION_EXPIRED, ORDER_NOT_FOUND, ORDER_EXPIRED, ORDER_ALREADY_CONFIRMED
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | string | – | Idempotency-Key for this write. Omit to generate one; reuse the returned idempotency_key to retry safely |
| order_id | string | yes | Order ID from create_order |
| session_token | string | yes | Session token from authenticate |
No output schema declared.
No examples provided.
create_order Create an order ~156
Create a pending order with one or more actions. Returns order details with pricing and gas estimates. Order expires after 5 minutes. Params: actions (array of {type, params}), session_token (string), idempotency_key (string?) Returns: {order_id, summary, total_cost, gas_estimates, expires_at, idempotency_key} Errors: NO_SESSION, SESSION_EXPIRED, INVALID_ACTIONS, VALIDATION_ERROR
| Name | Type | Req | Description |
|---|---|---|---|
| actions | array | yes | Array of order actions to execute |
| idempotency_key | string | – | Idempotency-Key for this write. Omit to generate one; reuse the returned idempotency_key to retry safely |
| session_token | string | yes | Session token from authenticate |
No output schema declared.
No examples provided.
deploy_token Build a token creation action ~217
Deploy a single token on a single chain. Validates parameters and returns an order action spec for inclusion in create_order. Params: name (string), symbol (string), chain (string), supply (number), decimals (number), mintable (boolean), burnable (boolean), session_token (string) Returns: {order_action_spec: {type, params}} Errors: NO_SESSION, SESSION_EXPIRED, VALIDATION_ERROR, RATE_LIMITED
| Name | Type | Req | Description |
|---|---|---|---|
| burnable | boolean | yes | Whether tokens can be burned |
| chain | string | yes | Target chain (e.g., 'arb', 'sol', 'base', 'polygon', 'bsc', 'eth') |
| decimals | number | yes | Token decimals (0-18) |
| mintable | boolean | yes | Whether additional tokens can be minted |
| name | string | yes | Token display name |
| session_token | string | yes | Session token from authenticate |
| supply | number | yes | Total token supply |
| symbol | string | yes | Token symbol (1-10 uppercase alphanumeric) |
No output schema declared.
No examples provided.
export_listing Export listing data ~54
Generate listing data formatted for aggregator platforms (CMC, CoinGecko, DEX Screener, TokenList).
| Name | Type | Req | Description |
|---|---|---|---|
| crown_id | number | yes | Crown token ID |
| format | string | yes | Export format for the listing data |
No output schema declared.
No examples provided.
find_inactive Find inactive registrations ~123
Find inactive crowns that are eligible for reclaim. All params optional. Params: symbol (string?), chain (string?), min_market_cap (number?) Returns: {inactive_crowns: [{symbol, chain, owner_address, last_activity, heartbeat_score, reclaim_cost}]} Errors: API_ERROR
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | – | Filter by chain (e.g., 'arb', 'sol', 'base') |
| min_market_cap | number | – | Minimum market cap filter in USD |
| symbol | string | – | Filter by symbol (e.g., 'DOGE') |
No output schema declared.
No examples provided.
generate_listing Generate an aggregator listing ~118
Generate a listing for one aggregator format using crown data. Params: crown_id (string), format ('coingecko'|'coinmarketcap'|'dexscreener'|'tokenlist') Returns: {listing_data: object, missing_fields?: string[]} Errors: CROWN_NOT_FOUND, INVALID_FORMAT, API_ERROR
| Name | Type | Req | Description |
|---|---|---|---|
| crown_id | string | yes | Crown ID to generate listing for |
| format | string | yes | Listing format: 'coingecko', 'coinmarketcap', 'dexscreener', or 'tokenlist' |
No output schema declared.
No examples provided.
get_auth_nonce Get sign-in nonce ~52
Step 1 of authentication. Fetches a server-issued nonce the caller must embed in the SIWE/SIWS message before signing. Params: none Returns: {nonce: string} Errors: API_ERROR
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_crown Get a token registration ~78
Get detailed information about a specific crown by ID. Params: crown_id (string) Returns: {symbol, chain, owner, manager, heartbeat_score, status, metadata, days_in_grace, penalty_deadline} Errors: CROWN_NOT_FOUND, API_ERROR
| Name | Type | Req | Description |
|---|---|---|---|
| crown_id | string | yes | Crown ID (token ID or identifier) |
No output schema declared.
No examples provided.
get_deployments Find tokens a wallet can register ~71
Find the tokens a wallet made on a chain (deployed, owns, or launched) that are not registered yet, and how it qualifies for each. Useful for finding tokens you can claim.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Wallet address (0x...) |
| chain | string | yes | Chain to search |
No output schema declared.
No examples provided.
get_holders Get holder stats ~116
Get holder concentration and adversarial-label stats for a crown. Sourced from /api/v2/registration/{id}/holders; data refreshes daily. Params: crown_id (number) Returns: text report with totalHolders, top10/50/100/200 concentration, walletsForHalf, and Mobula label counts (snipers/bundlers/insiders/sandwich) plus suspiciousRatio. Errors: CROWN_NOT_FOUND, NO_DATA, API_ERROR
| Name | Type | Req | Description |
|---|---|---|---|
| crown_id | number | yes | Crown token ID |
No output schema declared.
No examples provided.
get_pricing Get pricing ~296
Get what an order costs, as the order will charge it. mode 'create' (default): a new token on each chain, its registration included. mode 'claim': registering a token that already exists on each chain (free for an OG token when symbol and address are given). All params optional. Two or more chains take the 10% multi-chain bundle discount, already subtracted from total_usd. Params: chains (string[]?), mode ('create'|'claim'?), symbol (string?), address (string?), bundle_type (string?), wallet_address (string?) Returns: {items: [{chain, type, fee_usd, gas_estimate}], discounts: [{type, description, amount_usd}], total_usd: number} Errors: API_ERROR
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | – | With mode 'claim': the token's contract or mint address, so an OG token shows as free |
| bundle_type | string | – | Label for the bundle discount line only; the discount itself follows the number of chains |
| chains | array | – | Chains to get pricing for (e.g., ['arb', 'sol']) |
| mode | string | – | 'create' (default) prices a new token; 'claim' prices registering a token that already exists |
| symbol | string | – | Token symbol for pricing context |
| wallet_address | string | – | Accepted for compatibility; pricing does not depend on the wallet |
No output schema declared.
No examples provided.
get_recommendations Get page recommendations ~49
Get AI-powered recommendations for optimizing crown profile, heartbeat, and listing readiness.
| Name | Type | Req | Description |
|---|---|---|---|
| crown_id | number | yes | Crown token ID |
| focus | string | – | Optional: Focus area for recommendations |
No output schema declared.
No examples provided.
get_session Get session status ~91
Get the current session status for a session token. Returns authentication state, wallet, chain type, and expiry. Params: session_token (string) Returns: {authenticated: true, wallet: string, chain_type: 'evm'|'solana', expires_at: string} or {authenticated: false} Errors: none (always returns a result)
| Name | Type | Req | Description |
|---|---|---|---|
| session_token | string | yes | Session token from authenticate |
No output schema declared.
No examples provided.
get_token Get token details ~56
Get detailed information about a token on a specific chain including crown status, market data, and metadata.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | yes | The chain to query |
| symbol | string | yes | The ticker symbol (e.g., 'PEPE') |
No output schema declared.
No examples provided.
iap_add_drop_recipients Add drop recipients ~217
Add wallets to a drop's recipient list (push drops, or an allowlist). Pass wallets, or csv text with one wallet per line. Params: store_id, drop_id, wallets?, csv?, session_token?, idempotency_key? Returns: {ok, idempotency_key, added: number, invalid: string[]} Errors: INVALID_PARAMS, NO_CREDENTIALS, IAP_PLAN_REQUIRED, HTTP_404
| Name | Type | Req | Description |
|---|---|---|---|
| csv | string | – | – |
| drop_id | string | yes | – |
| idempotency_key | string | – | Idempotency-Key for this write. Omit to generate one; reuse the returned idempotency_key to retry safely |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
| wallets | array | – | – |
No output schema declared.
No examples provided.
iap_award Award a drop ~223
Award an award-mode drop to a wallet (the user reached a milestone). The drop's caps and window are enforced. Store key scope: rewards:award. Params: store_id, drop_id, wallet, session_token?, idempotency_key? (use one per milestone so a retry never awards twice) Returns: {ok, idempotency_key, …award result} Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED, HTTP_404, HTTP_409 (cap reached / drop not active)
| Name | Type | Req | Description |
|---|---|---|---|
| drop_id | string | yes | – |
| idempotency_key | string | – | Idempotency-Key for this write. Omit to generate one; reuse the returned idempotency_key to retry safely |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
| wallet | string | yes | – |
No output schema declared.
No examples provided.
iap_consume Consume items ~221
Consume units of a consumable a wallet holds (the user spent a credit). Atomic: fails without change when the wallet holds fewer. Store key scope: entitlements:write. Params: store_id, wallet, sku, quantity, session_token?, idempotency_key? Returns: {ok, idempotency_key, entitlement: Entitlement} Errors: INSUFFICIENT_QUANTITY (409), NO_CREDENTIALS, IAP_PLAN_REQUIRED, HTTP_404
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | string | – | Idempotency-Key for this write. Omit to generate one; reuse the returned idempotency_key to retry safely |
| quantity | integer | yes | – |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| sku | string | yes | – |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
| wallet | string | yes | – |
No output schema declared.
No examples provided.
iap_create_drop Create a drop ~283
Create a drop (a reward of items). Modes: claim (a link holders claim from), push (delivered to a recipient list when activated), award (your server awards it with iap_award, caps enforced). Audience is a rule (e.g. holders of at least X tokens). Drops start as drafts; activate with iap_set_drop_status. Store key scope: drops:write. Params: store_id, drop ({name, mode, items: [{sku, quantity}], audience?, allowlistOnly?, maxClaims?, perWalletLimit?, startsAt?, endsAt?, description?, imageUrl?}), session_token?, idempotency_key? Returns: {ok, idempotency_key, drop: Drop} (drop.slug is the claim link id) Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED, HTTP_400
| Name | Type | Req | Description |
|---|---|---|---|
| drop | object | yes | – |
| idempotency_key | string | – | Idempotency-Key for this write. Omit to generate one; reuse the returned idempotency_key to retry safely |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
No output schema declared.
No examples provided.
iap_create_order Create a store order ~572
Create an order for a user — the white-label path: your server sells from your app's own store with a store key (scope orders:write). The order locks the price, payees and a deadline (about 20 minutes) and carries `payment`: EVM {kind:'evm', chainId, checkout, order:{orderId, token, payees, amounts, deadline}, total, permit, calls?: [{to, data, value}] to send in order, permitTypedData?} or Solana {kind:'solana', cluster, transaction (base64 unsigned), reference, staticKey, memo}. The user's wallet pays; your client then posts the tx hash to /api/v2/iap/orders/{id}/submit, and the order turns confirmed at confirmation depth (poll iap_get_order or take the iap.order.confirmed webhook). Params: store_id, sku, quantity?, wallet (the user's wallet; required with a store key), app_account_token? (your own account id, echoed in the receipt), session_token?, idempotency_key? Returns: {ok, idempotency_key, order: Order} Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED (store not live), HTTP_400, HTTP_404 (sku), HTTP_409 (sold out / per-wallet cap / rule not met), PRICE_UNAVAILABLE (a dollar-priced SKU paid in the token or the coin whose live price cannot be read reliably right now — stale, still warming up, or moving more than 15%; retry in a minute). The order carries currency (address), currencyKind ('token'|'native'|'usdc'), currencySymbol and currencyDecimals; `amount` is the exact locked amount in that currency. Paid in the chain's coin, `calls` holds only the pay call with value = total, and permit is null. A dollar-priced order also carries priceUsdMicros and usdPerToken (the dollar price of one whole unit of the currency; 1 for usdc).
| Name | Type | Req | Description |
|---|---|---|---|
| app_account_token | string | – | Your app's account id for the user; echoed in the receipt |
| idempotency_key | string | – | Idempotency-Key for this write. Omit to generate one; reuse the returned idempotency_key to retry safely |
| quantity | integer | – | – |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| sku | string | yes | – |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
| wallet | string | – | User wallet that receives the items; required with a store key |
No output schema declared.
No examples provided.
iap_create_sku Create a store item ~435
Create a SKU. Types: consumable (a balance: coins, boosts), non_consumable (owned once: skins, cars), timed (expiry extended by durationSeconds × quantity: season pass), unlock (never sold; held while `rule` holds). No price = reward-only. Price in base units (`price`) or in dollars (`priceUsdMicros`, with optional per-unit `minPrice`/`maxPrice` bounds in base units), never both. `currency` is what the buyer pays in: 'token' (default; recommended with priceUsdMicros — a steady dollar price, paid in the creator's token), 'native' or 'usdc'. GET /api/v2/iap/config lists each chain's currencies. `grants` makes a bundle. `splits` pays up to 2 more wallets (3 on a launchpad token) a share of each sale. New SKUs are drafts unless status is 'active'. Store key scope: catalog:write. Params: store_id, sku ({sku, type, name, currency?, price?, priceUsdMicros?, minPrice?, maxPrice?, grants?, splits?, durationSeconds?, rule?, maxSupply?, maxPerWallet?, maxAppSpend?, saleStartsAt?, saleEndsAt?, status?, metadata?, description?, imageUrl?, sortOrder?}), session_token?, idempotency_key? Returns: {ok, idempotency_key, sku: Sku} Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED, HTTP_400 (validation), HTTP_409 (sku key taken)
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | string | – | Idempotency-Key for this write. Omit to generate one; reuse the returned idempotency_key to retry safely |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| sku | object | yes | – |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
No output schema declared.
No examples provided.
iap_create_store_key Create a store key ~289
Create a store key (cd_iap_…) for your server: one store, only the scopes you list. The secret is returned ONCE — store it in the server's secrets, never in a client. Needs account credentials (a session or CHAINDADDY_API_KEY), never a store key. Params: store_id, name, scopes (catalog:write|orders:read|orders:write|entitlements:read|entitlements:write|drops:write|rewards:award|events:read|messages:send), session_token?, idempotency_key? Returns: {ok, idempotency_key, key: {id, name, prefix, scopes, createdAt, secret}} Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED, HTTP_400
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | string | – | Idempotency-Key for this write. Omit to generate one; reuse the returned idempotency_key to retry safely |
| name | string | yes | A label, e.g. 'server-prod' |
| scopes | array | yes | – |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
No output schema declared.
No examples provided.
iap_get_entitlements Get item holdings ~220
What a wallet holds in a store (owned items plus live unlocks), or — with sku — who owns a SKU. Pass exactly one of wallet or sku. Store key scope: entitlements:read. Params: store_id, wallet?, sku?, cursor? (owners list only), session_token? Returns: {storeId, wallet, entitlements: [{sku, type, name, quantity, expiresAt, source: 'ledger'|'unlock', firstGrantedAt}]} or {entries: [{wallet, quantity, expiresAt}], nextCursor} Errors: INVALID_PARAMS, NO_CREDENTIALS, IAP_PLAN_REQUIRED
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | – |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| sku | string | – | – |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
| wallet | string | – | – |
No output schema declared.
No examples provided.
iap_get_order Get a store order ~205
Get one order: its locked quote, status, on-chain payment (txHash, payer, confirmations) and the signed receipt once confirmed. With store_id it reads the store's admin view (store key scope orders:read); without it, GET /api/v2/iap/orders/{id} (the buyer's own order, or any order of the store key's store) — what an app polls until status is 'confirmed'. Params: order_id (0x + 64 hex), store_id?, session_token? Returns: Order Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED, HTTP_404
| Name | Type | Req | Description |
|---|---|---|---|
| order_id | string | yes | – |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| store_id | string | – | Store id (from iap_open_store or iap_list_stores) |
No output schema declared.
No examples provided.
iap_get_webhook Get store webhook ~200
Get the store's webhook and its last 20 deliveries, newest first. A delivery's status is pending, delivered, failed or exhausted (no more retries); anything missed can be caught up from iap_list_events. Store key scope: events:read. Params: store_id, session_token? Returns: {webhook: {id, url, events, active, createdAt, lastTriggeredAt} | null, deliveries: [{id, eventId, eventType, status, attempt, statusCode, error, createdAt, deliveredAt}]} Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED, HTTP_404
| Name | Type | Req | Description |
|---|---|---|---|
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
No output schema declared.
No examples provided.
iap_grant Grant items ~228
Grant items to a wallet (a reward, a make-good, a server-side award). Items are off-chain and non-transferable. Store key scope: entitlements:write. Params: store_id, wallet, sku, quantity, reason?, session_token?, idempotency_key? Returns: {ok, idempotency_key, entitlement: Entitlement} Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED, HTTP_400, HTTP_404 (unknown sku)
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | string | – | Idempotency-Key for this write. Omit to generate one; reuse the returned idempotency_key to retry safely |
| quantity | integer | yes | – |
| reason | string | – | – |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| sku | string | yes | – |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
| wallet | string | yes | – |
No output schema declared.
No examples provided.
iap_list_events List store events ~367
Read a store's event feed after a cursor: order.created/paid/confirmed/expired/refunded, order.mismatch (a payment named the order id but not its quote; the order is unchanged), order.duplicate_payment (the order was paid twice; the creator refunds the second), order.checkout_paid_again (a second order confirmed for a checkout session that was already paid; both delivered, and only the seller can send a payment back), order.reverted (a paid order undone by a chain reorg), entitlement.granted/consumed/revoked, entitlement.expiring (a timed item is about to run out) / entitlement.expired, drop.claimed/awarded, drop.exhausted (a drop gave out its last item), sku.sold_out (an item reached its max supply), store.not_live (the store stopped selling because its plan lapsed) / store.live (selling again). Keep `last` and pass it as `after` next time; the same events arrive as iap.<type> webhooks, and this feed is how you catch up on any you missed. Store key scope: events:read. Params: store_id, after? (event id), limit?, session_token? Returns: {entries: [{id, type, wallet, orderId, payload, createdAt}], last} Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED
| Name | Type | Req | Description |
|---|---|---|---|
| after | integer | – | – |
| limit | integer | – | – |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
No output schema declared.
No examples provided.
iap_list_orders List store orders ~212
List a store's orders, newest first. Statuses: pending (awaiting payment), paid (seen on chain, confirming), confirmed (items granted, receipt issued), expired, refunded. A stray or duplicate payment never changes an order; it shows up as an order.mismatch / order.duplicate_payment event (iap_list_events). Store key scope: orders:read. Params: store_id, status?, wallet?, cursor?, limit?, session_token? Returns: {entries: Order[], nextCursor} Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | – |
| limit | integer | – | – |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| status | string | – | – |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
| wallet | string | – | – |
No output schema declared.
No examples provided.
iap_list_skus List store items ~145
List a store's SKUs, including drafts and archived ones. Params: store_id, session_token? Returns: {entries: Sku[]} (price is base units of the SKU's currency — currency, currencyAddress, currencySymbol, currencyDecimals; null = not for sale) Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED, HTTP_404
| Name | Type | Req | Description |
|---|---|---|---|
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
No output schema declared.
No examples provided.
iap_list_stores List creator stores ~187
List the creator stores you manage, optionally filtered to one token page. Each entry's id is the store_id the other iap_ tools take. Params: page? (the token page's symbol or address), chain_key?, crown_id?, session_token? Returns: {entries: Store[]} Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED, PAGE_NOT_FOUND, PAGE_AMBIGUOUS
| Name | Type | Req | Description |
|---|---|---|---|
| chain_key | string | – | – |
| crown_id | integer | – | – |
| page | string | – | The token page, instead of chain_key and crown_id: its symbol ('FLUXGP') or its address ('chaindaddy.io/FLUXGP/base') |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
No output schema declared.
No examples provided.
iap_open_store Open a creator store ~385
Open (or re-open) the creator store for a token page. Idempotent per token page. Needs a Developer plan or Developer Beta membership, and the manager role on the token page. Params: page (the token page's symbol or address, e.g. 'FLUXGP' or 'chaindaddy.io/FLUXGP/base') OR chain_key (string, e.g. 'base') with crown_id (number, the token page's registration id); session_token?, idempotency_key? Returns: {ok, idempotency_key, store: {id, chainId, chainKey, crownId, symbol, tokenAddress, tokenDecimals, tokenOrigin, feeBps, payoutAddress, status, live, …}} Errors: NO_CREDENTIALS, NO_SESSION, NO_JWT, IAP_PLAN_REQUIRED, INVALID_PARAMS, PAGE_NOT_FOUND, PAGE_AMBIGUOUS (the symbol has several pages; the message lists them), HTTP_403, HTTP_404
| Name | Type | Req | Description |
|---|---|---|---|
| chain_key | string | – | Chain key of the token page, e.g. 'base', 'solana' (with crown_id; or with page, to pick one of a symbol's pages) |
| crown_id | integer | – | Registration id of the token page (with chain_key) |
| idempotency_key | string | – | Idempotency-Key for this write. Omit to generate one; reuse the returned idempotency_key to retry safely |
| page | string | – | The token page, instead of chain_key and crown_id: its symbol ('FLUXGP') or its address ('chaindaddy.io/FLUXGP/base') |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
No output schema declared.
No examples provided.
iap_open_test_store Open a test store ~232
Get or create the TEST store behind one of your live stores: same token page, a copy of its catalog at creation, and orders that are paid with iap_test_pay instead of on chain (no money, no fee). Mint its keys with iap_create_store_key on the returned store id; they start cd_iap_test_. Needs account credentials (a session or CHAINDADDY_API_KEY) with manager role on the token page. Available where test mode is on (GET /api/v2/iap/config → testMode). Params: store_id (the live store), session_token? Returns: {ok, store: Store} with mode 'test' Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED, HTTP_404 (TEST_MODE_DISABLED where test mode is off)
| Name | Type | Req | Description |
|---|---|---|---|
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
No output schema declared.
No examples provided.
iap_refund_order Record a refund ~245
Record a refund for a confirmed order: marks it refunded, revokes its items and its receipt. Chain Daddy never holds the buyer's tokens — send the refund yourself from the payout wallet, then pass its transaction hash here. Params: store_id, order_id, refund_tx_hash?, note?, session_token?, idempotency_key? Returns: {ok, idempotency_key, order: Order} Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED, HTTP_404, HTTP_409 (not refundable in its status)
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | string | – | Idempotency-Key for this write. Omit to generate one; reuse the returned idempotency_key to retry safely |
| note | string | – | – |
| order_id | string | yes | – |
| refund_tx_hash | string | – | Your refund transfer's transaction hash / signature |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
No output schema declared.
No examples provided.
iap_revoke Revoke items ~211
Take items back from a wallet. Omit quantity to revoke all of that SKU. Store key scope: entitlements:write. Params: store_id, wallet, sku, quantity?, reason?, session_token?, idempotency_key? Returns: {ok, idempotency_key, entitlement: Entitlement} Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED, HTTP_404
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | string | – | Idempotency-Key for this write. Omit to generate one; reuse the returned idempotency_key to retry safely |
| quantity | integer | – | – |
| reason | string | – | – |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| sku | string | yes | – |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
| wallet | string | yes | – |
No output schema declared.
No examples provided.
iap_set_drop_status Set drop status ~201
Set a drop's status. Activating a push drop starts delivery to its recipients. Params: store_id, drop_id, status ('draft'|'active'|'paused'|'ended'), session_token?, idempotency_key? Returns: {ok, idempotency_key, drop: Drop} Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED, HTTP_404, HTTP_409
| Name | Type | Req | Description |
|---|---|---|---|
| drop_id | string | yes | – |
| idempotency_key | string | – | Idempotency-Key for this write. Omit to generate one; reuse the returned idempotency_key to retry safely |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| status | string | yes | – |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
No output schema declared.
No examples provided.
iap_set_webhook Set store webhook ~377
Create or replace the store's webhook: one HTTPS endpoint that receives the store's events as they happen. Each delivery is POST {id, type, created_at, data} with header X-Webhook-Signature = hex HMAC-SHA256 of the raw body keyed with the webhook's whsec_ secret. Creating returns the secret ONCE — store it where the endpoint verifies signatures. Replacing keeps the secret (no secret in the result) and turns back on a webhook that was disabled after repeated failures. Needs account credentials (a session or CHAINDADDY_API_KEY), never a store key. Params: store_id, url (https://…), events? (subset of iap.order.created|paid|confirmed|expired|reverted|refunded|mismatch|duplicate_payment, iap.entitlement.granted|consumed|revoked|expiring|expired, iap.drop.claimed|awarded|exhausted, iap.sku.sold_out, iap.store.not_live|live; omit for all), session_token? Returns: {ok, webhook: {id, url, events, active, createdAt, lastTriggeredAt, secret?}} (secret only when created) Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED, SESSION_REQUIRED (a store key), HTTP_400 (bad url or event), HTTP_404
| Name | Type | Req | Description |
|---|---|---|---|
| events | array | – | Only these events; omit for all |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
| url | string | yes | Your endpoint, https://… |
No output schema declared.
No examples provided.
iap_test_pay Pay a test order ~244
Pay a TEST store's pending order with no chain and no money: it confirms at once through the same path a real payment takes, so the items are granted, the receipt is issued (claim livemode: false, the test store's storeId) and the iap.order.confirmed webhook goes to the test store's own webhook with livemode false. Repeating it returns the confirmed order. Use a test store key (cd_iap_test_…, scope orders:write, via CHAINDADDY_IAP_KEY) or a session that manages the store. Params: order_id (0x + 64 hex), session_token? Returns: {ok, order: Order} with status 'confirmed' Errors: NO_CREDENTIALS, HTTP_403 (scope), HTTP_404 (unknown order, or TEST_MODE_DISABLED), HTTP_409 (LIVE_ORDER: a live order is paid on chain; ORDER_EXPIRED)
| Name | Type | Req | Description |
|---|---|---|---|
| order_id | string | yes | – |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
No output schema declared.
No examples provided.
iap_test_webhook Send a test webhook ~207
Queue an iap.test event to the store's webhook, to check the endpoint receives and verifies deliveries. See the result with iap_get_webhook. Store key scope: events:read. Params: store_id, session_token?, idempotency_key? Returns: {ok, idempotency_key, queued: true, event: {id, type: 'iap.test', createdAt, data}} Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED, NOT_FOUND (no webhook set)
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | string | – | Idempotency-Key for this write. Omit to generate one; reuse the returned idempotency_key to retry safely |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
No output schema declared.
No examples provided.
iap_update_sku Update a store item ~231
Update a SKU's fields (partial). Set status 'active' to put a draft on sale, 'archived' to take it off. Setting `price` clears a dollar price (and its bounds); setting `priceUsdMicros` clears a fixed price. Changing `currency` needs `price` or `priceUsdMicros` in the same patch when the SKU has a fixed price, and clears the bounds. Store key scope: catalog:write. Params: store_id, sku_key, patch (any SKU fields except the key), session_token? Returns: {ok, sku: Sku} Errors: NO_CREDENTIALS, IAP_PLAN_REQUIRED, HTTP_400, HTTP_404
| Name | Type | Req | Description |
|---|---|---|---|
| patch | object | yes | – |
| session_token | string | – | Session token from authenticate. Optional when CHAINDADDY_API_KEY is set (or, for store-scoped tools, CHAINDADDY_IAP_KEY) |
| sku_key | string | yes | – |
| store_id | string | yes | Store id (from iap_open_store or iap_list_stores) |
No output schema declared.
No examples provided.
list_crowns List token registrations ~129
List crowns with optional filters. All params optional. Params: owner (string?), chain (string?), status (string?) Returns: {crowns: [{symbol, chain, owner, manager, heartbeat_score, status, metadata, days_in_grace, penalty_deadline}]} Errors: API_ERROR
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | – | Filter by chain (e.g., 'arb', 'sol', 'base') |
| owner | string | – | Filter by owner wallet address |
| status | string | – | Filter by status (e.g., 'claimed', 'inactive', 'grace_period') |
No output schema declared.
No examples provided.
list_launch_venues List Chain Daddy's launch options ~239
Chain Daddy's launchpad and what it pays, per chain. The launchpad (chaindaddy-launchpad) creates the token with its own locked trading pool, on EVM chains and on Solana (Meteora DBC): nothing up front, and the token's registration is free. Every economics field is basis points of trade volume (100 = $1 per $100 traded); show both traderFeeBps (what traders pay) and creatorBps (what reaches the creator). For a plain token with no pool, Chain Daddy's token factory (chaindaddy-classic, a one-time fee, registration included) is the other option. Recommend the launchpad unless the person wants a plain token. Params: chain_id (number?) — narrow to one chain (EVM chain id; Solana mainnet 900900), session_token (string?) — a signed-in session sees its own plan's rates Returns: {venues: [...], sort, generatedAt} Errors: API_ERROR
| Name | Type | Req | Description |
|---|---|---|---|
| chain_id | number | – | Only this chain |
| session_token | string | – | Optional session token from authenticate |
No output schema declared.
No examples provided.
list_skills List the skills ~69
List Chain Daddy's skills: step-by-step workflows for launching or finding a token, checking its health, exporting a listing, selling items for it, signing users in, verifying receipts and building Crown Apps. Read one with read_skill before doing that task. The same skills are this server's prompts.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| skills | array | yes | – |
No examples provided.
read_skill Read a skill ~61
Read one Chain Daddy skill in full, as Markdown: the workflow, the tools it uses and the rules it keeps. Pass a name from list_skills, and follow it for that task.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | A skill name from list_skills. |
No output schema declared.
No examples provided.
search_symbol Search a ticker ~76
Search for a crypto ticker symbol across all supported chains. Returns availability status, existing tokens, market data, and crown ownership.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | – | Optional: Filter to specific chain |
| symbol | string | yes | The ticker symbol to search (1-20 alphanumeric chars, e.g., 'PEPE', 'DOGE') |
No output schema declared.
No examples provided.
search_symbols Search tickers with filters ~150
Search for symbols across all supported chains. Returns availability, market data, and crown status. Params: query (string), chain (string?), status (string?) Returns: {results: [{symbol, chain, chain_name, status, token_address, market_cap, volume_24h, liquidity, crown_owner}]} Errors: API_ERROR
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | – | Filter by chain (e.g., 'arb', 'sol', 'base') |
| query | string | yes | Search query (symbol or partial match, e.g., 'DOGE', 'PEP') |
| status | string | – | Filter by status (e.g., 'available', 'unclaimed', 'claimed', 'inactive') |
No output schema declared.
No examples provided.
update_profile Update token page profile ~398
Update crown profile metadata via PUT /api/v2/registration/{id}/profile?chain={chain}. Requires a session bound to a backend JWT (run authenticate first) and the session wallet must own or manage the crown on that chain. Params: crown_id (string), chain (string; required, a token id names a different crown on every chain), description (string?), tags (string[]?), category ('meme'|'gaming'|'defi'|'nft'|'social'|'utility'?) [NOT FORWARDED — no backend route exposes category on the profile endpoint], website (string?), socials ({twitter?, telegram?, discord?}?), logo_url (string?), session_token (string) Returns: {updated_fields: string[]} Errors: NO_SESSION, SESSION_EXPIRED, NO_JWT, NOT_OWNER, NO_FIELDS, API_ERROR
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Project category. ACCEPTED but NOT forwarded — the profile endpoint does not expose this field today; the input is preserved here for API stability. |
| chain | string | yes | Chain of the crown (e.g. 'base', 'arbitrum', 'solana'). Required: a token id names a different crown on every chain, and the role check and write happen on this one. |
| crown_id | string | yes | Crown ID (token ID) |
| description | string | – | Token/project description |
| logo_url | string | – | Logo image URL |
| session_token | string | yes | Session token from authenticate (must have been issued post-JWT-bridge, i.e. after fix/mcp-siwe-jwt-bridge) |
| socials | object | – | Social links: {twitter, telegram, discord}. twitter maps to the backend `xdotcom` field. |
| tags | array | – | Descriptive tags (e.g., ['meme', 'dog', 'community']) |
| website | string | – | Project website URL |
No output schema declared.
No examples provided.
How do I install the Chain Daddy MCP server?
Chain Daddy runs locally as an npm package, launched with npx -y @chaindaddy/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · @chaindaddy/mcp
claude mcp add io-chaindaddy-mcp -- npx -y @chaindaddy/mcp
What is the Chain Daddy MCP server?
Chain Daddy is an MCP server listed in the public MCP registry as io.chaindaddy/mcp. Search tokens, check registrations, and run a Chain Daddy creator store from your agent. This page covers its npm package (@chaindaddy/mcp).
Is the Chain Daddy MCP server safe to use?
Chain Daddy scores 81 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 23 October 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Chain Daddy MCP server expose?
Chain Daddy exposes 50 tools: get_auth_nonce, authenticate, get_session, search_symbol, get_token, and 45 more. Their descriptions and schemas cost roughly 9,723 tokens of context every time the server is loaded.
Is the Chain Daddy MCP server still maintained?
Chain Daddy is still listed as active in the MCP registry. We last reached this channel on 23 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Chain Daddy MCP server under?
Chain Daddy declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.