CoinCap.io MCP server serving the coincap rest api via mcp
Scoring was not performed
Tool 'dynamic_from_swagger' is a meta-tool with no input schema visible in static analysis. The actual endpoint schemas are generated at runtime from Swagger and not documented in code or static configuration. Cannot verify parameter types, required fields, constraints, or output structure without runtime inspection.
Tool descriptions are either Swagger 'summary' fields (which are API-centric) or generic fallback 'Tool for GET /path'. Neither explains when an LLM should call this tool, what it returns, or how it differs from similar endpoints. Auto-generated descriptions like 'Tool for GET /assets' do not help LLMs reason about tool selection.
Parameter descriptions are auto-generated placeholders ('Path parameter: {name}', 'Query parameter: {name}') instead of actionable guidance. No description explains what the parameter controls, what format it expects, range constraints, dependencies on other parameters, or how to obtain valid values. Rubric baseline: 100% of A+ tool params have descriptions; this server has ~0%.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 21 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 12 | 2024-11-05+ | v1 |
Output schemas are not documented. No tool definition states what fields the response contains, what types they are, or how downstream tools should interpret the results. This forces LLMs to guess what data is available and how to chain tools together.
Tool naming relies on Swagger path transformation (src/dynamicMcpTools.ts lines 51-55: replace path separators with underscores, strip curly braces). This produces names like 'assets_search', 'rates_get', 'exchanges_id' that are API-centric rather than verb-noun patterns optimized for LLM understanding. Rubric baseline: 90% of A+ tools start with an action verb (get_, create_, search_, list_, etc.); these names often bury the verb in the middle or use technical API structure.
No error handling guidance. The code does not show how tool errors are communicated to the LLM or what recovery steps are suggested. If an API call fails (e.g., 'Asset not found', 'Rate limit exceeded'), the agent has no instruction on whether to retry, call a different tool, or ask the user.
No tool composition guidance. The server does not document which tools should be called in sequence to accomplish a task (e.g., 'search_assets() before get_asset_details()'). Agents must infer this from trial and error.
Parameter naming may not follow LLM conventions. If CoinCap API uses 'id' as a path parameter, agents expect 'asset_id' to disambiguate. The code (src/dynamicMcpTools.ts lines 62-69) preserves Swagger parameter names without normalizing them for LLM clarity (e.g., suffixing with '_id', '_name', '_email').