Proof of Concept applying a MCP Server to consume data from coingecko API using GenAI
This server has a single tool 'analyze-crypto' with critical definition gaps. The tool has a description but it is vague and lacks actionable guidance for the LLM. The input schema is present but minimal, only 'crypto_id' with a basic string type. There is NO documented output schema, which violates a critical MCP pattern. The tool name does not follow verb_noun conventions (should be 'analyze_crypto' with underscore, and ideally should indicate it returns analysis insights, not just 'analyze'). Most critically, there is no visible output schema documentation, no parameter constraints (enums, patterns, or limits), and no error handling guidance. The implementation fetches from CoinGecko API and uses Google Gemini for analysis, but none of this implementation detail translates into actionable tool metadata for the LLM. This server appears to be a proof-of-concept that skipped foundational tool definition work.
Analyze cryptocurrency data and provide comprehensive insights including current price analysis, market position, key factors influencing price movement, risk assessment, market sentiment, short-term outlook, and technical levels to watch
No output schema documented. The tool returns an LLM-generated analysis string, but the LLM has no way to know what format, structure, or fields to expect. This violates the critical 'Document the output schema' rule.
Tool name does not follow verb_noun_object convention. 'analyze-crypto' uses hyphens instead of underscores and lacks clarity on what 'analyze' returns (insights? risk? price prediction?). Should be 'analyze_cryptocurrency_price' or 'get_crypto_analysis'.
Input parameter 'crypto_id' has no constraints, enums, or examples of valid values. The description says 'e.g., bitcoin, ethereum' but per the rubric, examples belong in formal constraints (enums or pattern), not descriptions. No validation is visible, the LLM could pass 'xyz123' and cause an API error.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 29 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 8 | - | v1 |
Tool description is generic and lacks LLM-optimized guidance. It says what the tool does but not WHEN to use it (e.g., 'Use this when the user asks for price predictions or market analysis'). No dependency hints (e.g., 'Requires a valid cryptocurrency ID from CoinGecko'). Current length ~180 chars is acceptable but content is shallow.
No error handling documented. If CoinGecko returns 404 (crypto not found) or API rate limit, or Google Gemini fails, the LLM has no guidance on recovery. Should return structured errors like 'Cryptocurrency "invalid-id" not found. Try one of: bitcoin, ethereum, cardano'.
No tool annotations present. The tool is read-only (does not modify state), but there are no idempotentHint, readOnlyHint, or destructiveHint annotations to signal this to the protocol handler.