18 tools with consistent structure but significant quality gaps. All tools have descriptions (10-200 chars, mostly adequate), but schemas are incomplete: tools with no parameters use empty `{}` objects (not proper JSON Schema), and tools with parameters use Zod types in TypeScript rather than JSON Schema format visible to clients. Parameter descriptions are present but generic. No output schemas documented. Error handling returns `{success, error}` tuples without recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Naming is verb-prefixed (CoinGecko_*) but inconsistent with MCP conventions (should be snake_case verbs like get_asset_platforms, not CoinGecko_asset_platforms). All tools are READ_ONLY, which is good for safety but not annotated in the schema.
Get a list of all blockchain networks (asset platforms) on CoinGecko.
Get a list of all cryptocurrency categories on CoinGecko (e.g., DeFi, NFT, Metaverse).
Get historical data (price, market cap, volume) for a specific cryptocurrency on a given date.
Get a list of all coins available on CoinGecko with their ids, names, and symbols.
Get historical market data (price, market cap, volume) for a specific cryptocurrency over a specified time period.
Get historical market data (price, market cap, volume) for a specific cryptocurrency within a date range using UNIX timestamps.
Tool naming violates MCP conventions. Names like 'CoinGecko_asset_platforms' use PascalCase prefix + underscore instead of snake_case verb_noun pattern (should be 'get_asset_platforms'). LLMs rely on verb prefixes to infer action; non-standard names reduce discoverability.
No output schemas documented. Tools return `{success: boolean, data: any}` or `{success: boolean, error: string}` but LLMs cannot infer what fields are in 'data'. Agents need to know structure to plan downstream calls and extract values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | 2026-07-28+ | v2 |
Get OHLC (Open, High, Low, Close) data for a specific cryptocurrency over a specified time period.
Get current prices for the specified cryptocurrencies in the specified currencies, including market cap and 24h volume/change data.
Get trading pairs (tickers) for a specific cryptocurrency across exchanges.
Get public companies' Bitcoin or Ethereum holdings data.
Get detailed data for a specific cryptocurrency exchange by its ID.
Get Bitcoin exchange rates against various fiat and cryptocurrency denominations.
Get a list of all cryptocurrency exchanges with their basic data on CoinGecko.
Get global decentralized finance (DeFi) market data including total market cap, trading volume, and more.
Get global cryptocurrency market data including market cap, volume, market cap percentage by coin, etc.
Search for coins, categories, and markets by name or symbol.
Get a list of all supported currency codes (fiat and crypto) that can be used when querying prices.
Get a list of trending cryptocurrencies on CoinGecko in the last 24 hours.
Empty schemas for no-parameter tools. Tools like CoinGecko_asset_platforms use `schema = {}` instead of proper JSON Schema. While technically valid, this is not machine-parseable and does not follow MCP conventions.
Error handling lacks recovery guidance. Errors return `{success: false, error: string}` with no actionable next steps. Per pattern:recovery-guide, errors should tell LLMs what to do: 'Coin not found. Try CoinGecko_search() with a partial name.'
No tool annotations. All tools are READ_ONLY but lack readOnlyHint annotation in schema. This prevents clients from optimizing caching, retry logic, and safety checks.