An MCP server that delivers crypto ETF flow data to power AI agents' decision-making.
ETF-Flow-MCP has a single tool with a verb-based name and basic schema, but lacks critical production-grade quality markers. The tool name 'get_etf_flow' correctly starts with a verb (matching 90% baseline for A+ tools), and a schema is present with type and description. However, the parameter description is minimal (33 characters: 'Cryptocurrency to query ('BTC' or 'ETH').'), falling well below the 194-char average for tool descriptions and the 72-char average for parameter annotations. The output is unstructured (returns a string Markdown table) with no documented schema, LLMs cannot predict or parse it. Error handling returns plain text strings with no recovery guidance (pattern:recovery-guide missing). No enum constraint is enforced for the 'coin' parameter despite only two valid values, the code validates at runtime, not schema-time. The tool lacks idempotence documentation, permission declarations, and audit trail instrumentation. The implementation accepts user input without explicit validation constraints in the parameter schema itself. At 1 tool, definition quality is driven entirely by that single tool's quality.
Fetch historical ETF flow data for BTC or ETH from CoinGlass API and return as a Markdown table.
Parameter 'coin' lacks enum constraint in schema. Two valid values ('BTC', 'ETH') are documented in description text only. LLMs may hallucinate invalid values; validation happens at runtime, not schema-time, reducing clarity and forcing error recovery.
Description lacks format hints, constraints, or discovery guidance.
Output schema is completely undocumented. Tool returns a Markdown table string, but LLMs have no schema to predict structure. They cannot extract tickers, dates, or totals from the unstructured response, forcing manual parsing.
Error handling returns bare error messages ('Invalid coin specified', 'No ETF flow data available', 'Error fetching...') with no recovery guidance. LLMs receive no actionable next steps, no pattern:recovery-guide implementation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 44 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 55 | - | v1 |
Tool description is 150 characters, close to baseline average (194 chars) but lacks dependency hints, discovery context, or limitations. No mention of rate limits, data freshness, or prerequisites (e.g., 'Requires COINGLASS_API_KEY env var').
No tool annotations present (readOnlyHint, destructiveHint, idempotentHint). Tool is read-only (READ_ONLY risk declared but not via annotation), idempotent (same input always returns same data), and non-destructive, these properties should be explicitly declared in schema.
No pagination support. Tool returns all historical ETF flow data from CoinGlass API in a single markdown table, risking unbounded result size. No limit, page, or offset parameters documented, response token consumption is uncontrolled.