MCP server for Odin.fun - a Bitcoin-based token trading platform with canister integration
27 tools with significant quality gaps. Most tools have basic descriptions (10-50 chars) but lack depth on WHEN to use them or prerequisites. Parameter descriptions are minimal ('Token ID', 'Amount') without format/range guidance. No output schemas documented. Many parameters use z.any() instead of proper type constraints, violating schema rigor. Error handling is absent, no recovery guidance, no categorization. Naming is verb-noun compliant but generic (get_*, create_*, etc.). No tool annotations (readOnlyHint, destructiveHint). Composition is reasonable, tools are single-purpose, but chaining IDs are not consistently returned.
Add liquidity to a token pool
Buy a specified amount of token with BTC with optional slippage settings
Buy a token using BTC with optional slippage settings
Create a new token with metadata and optional pre-purchase amount
Get balance for a token account on a specific network
Remove liquidity from a token pool
Sell a specified amount of token with optional slippage settings
Pervasive use of z.any() for complex parameters (protocol, metadata, slippage, code), no type validation or LLM guidance on structure. Violates constrained-input pattern.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., tokenId for chaining). Violates tool-chain and response-shaper patterns.
Canister tools (withdraw, createToken, trade, liquidity) lack error handling and recovery guidance. No indication of retryability, user-fixable errors, or next steps on failure.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | <=2025-11-25 | v2 |
Sell a token for BTC with optional slippage settings
Withdraw tokens to a specified address using a withdrawal protocol
Authorize identity with ICP identity (Ed25519KeyIdentity)
Get the current BTC price, the value is in USD.
Get recently active Odin.fun tokens. Returns an array. Supports pagination with page and limit.
Get Odin.fun tokens with the highest market cap. Returns an array. Supports pagination with page and limit.
Get official FAQ information about Odin.fun. Includes details about token pricing, AMM, bonding curve, and platform functionality.
Get information about price units in Odin.fun API. All prices returned by API need to be multiplied by 0.001 to convert to actual satoshi values
Post a comment on a token
Get holders for the specified token. Returns an array. Supports pagination with page and limit.
Get liquidity information for a specific token. Note: All price and BTC values returned are in 0.001 satoshi units. Multiply by 0.001 to get actual satoshi values.
Get information for the specified token. Returns a token info object.
Get token information by name or ticker. Returns all tokens whose name or ticker matches the input. There may be multiple tokens with the same name.
Enhance token data with additional information (price in USD, etc.)
Enhance user data with additional information (balances, activities, etc.)
Convert price between different units (sats/USD)
Get current BTC price in USD
Search across all entities (tokens, users, etc.)
Search for tokens by name or ticker
Search for users by username
Parameter descriptions are minimal (5-15 chars: 'Token ID', 'Amount', 'Account'). No format guidance, range constraints, or prerequisites. LLMs cannot infer valid input.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot distinguish safe reads from destructive writes (withdraw, createToken, trade). Violates current spec alignment.