MCP server for Odos access - enables swap quotes and execution on multiple blockchain networks via the Odos DEX aggregator
Three tools with crypto-domain functionality. All three have schemas and descriptions present, but descriptions are minimal (16-42 chars) and lack critical context for LLM planning. Parameters lack enums for constrained values (chain name, token addresses). No output schemas documented. Naming is acceptable but descriptions fall well below the 50-200 char production baseline. The swap tool is irreversible but no confirmation/dry-run pattern is offered. No error recovery guidance.
Get the chain ID for a given chain name
Get a quote for a swap or exchange operation
Execute a swap transaction
Description length well below production baseline. ODOS_GET_QUOTE (42 chars), ODOS_SWAP (36 chars), ODOS_GET_CHAIN_ID (31 chars). Production baseline: 50-200 chars. Descriptions lack context on when to call, prerequisites, and relationship to other tools.
No output schemas documented. LLMs cannot predict return structure or plan downstream operations. get-quote.ts likely returns quote data, swap.ts likely returns tx hash/receipt, chain-id.ts likely returns numeric ID, none explicitly documented in provided source.
'chain' parameter accepts free-form strings with a default ('fraxtal'). No enum constraint. LLM can hallucinate invalid chain names (e.g. 'eth', 'ethereum', 'mainnet'). Should define enum: fraxtal|ethereum|... or document exact format requirement.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 48 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 48 | - | v1 |
fromToken and toToken accept free-form strings (token addresses). No validation hint. LLM may pass invalid addresses, abbreviations ('USDC'), or names ('Ethereum'). Description should clarify format: '0x-prefixed hex address, e.g. 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' or add checksum/format constraint.
ODOS_SWAP is IRREVERSIBLE (executes blockchain transaction) but offers no dry-run, confirmation step, or multi-round-trip request pattern. Agents can execute real swaps without user approval. Missing confirmation-request pattern.
No error handling guidance in tool descriptions or visible error recovery paths. If 'token not found', 'insufficient liquidity', 'slippage exceeded', how should LLM recover? No actionable error categories (retryable vs user-fixable vs fatal).
Parameter 'amount' expects wei string but description says 'amount of tokens to swap, in wei', ambiguous. Is it always 18 decimals? What if token has 6 decimals (USDC)? Description should clarify: 'Amount in smallest unit of fromToken (wei for 18-decimal, 1e6 for 6-decimal USDC, etc.)'
'prettyFormat' boolean parameter in both get-quote and swap tools. Purpose unclear from description 'Whether to pretty format the quote.' What does 'pretty format' mean? JSON indentation? Human-readable output? Should clarify: 'If true, return formatted string; if false, return raw JSON.'