MCP server for accessing THORChain blockchain data
Server has 5 tools with consistent naming (verb_noun pattern: get-*) and descriptions present for all. Input schemas are visible and properly typed with Zod. However, descriptions are generic (avg ~100 chars, below 194-char baseline), parameter descriptions lack actionable detail (e.g., 'Blockchain address to query' doesn't explain format or validation), and output schemas are not documented. Error handling exists but is minimal. No tool annotations (readOnlyHint, etc.) despite all tools being read-only. Composition is sound, each tool has one responsibility.
Get transaction history for a specific address across all THORChain-supported chains
Get overall THORChain network statistics including total volume, swap counts, and active users
Get detailed statistics and information for a specific THORChain liquidity pool
Get statistics for all THORChain liquidity pools including prices, APY, and volume
Get detailed information about a THORChain transaction by its transaction ID (hash)
Output schemas not documented. LLMs cannot plan downstream calls or extract fields without knowing response structure. All 5 tools return formatted text strings instead of structured objects.
Parameter descriptions lack actionable constraints. 'Blockchain address to query' doesn't specify format, length, or valid chains. 'Pool asset identifier' doesn't explain the BTC.BTC vs ETH.USDC format. LLMs cannot validate inputs without explicit constraints.
Tool descriptions are generic and lack context for selection. 'Get detailed information about a THORChain transaction' doesn't explain when to use this vs get-address-history, or what 'detailed' means. Descriptions should be 50-200 chars and answer WHAT, WHEN, and WHAT IT RETURNS.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
No tool annotations despite all tools being read-only. readOnlyHint should be set to true on all 5 tools to signal to agents that these calls are safe to retry and have no side effects.
Error handling is minimal. THORChainAPIError is caught and re-thrown as generic Error. No recovery guidance (e.g., 'Try with a different address format' or 'Check if the pool exists'). Errors should classify as retryable/user-fixable/fatal and suggest next steps.