An MCP server that provides real-time gas price predictions across multiple blockchains.
The server has 3 clearly defined tools with explicit registration via @mcp.tool() decorator. All tools have descriptions and input schemas visible in the source code. However, there are significant gaps in parameter documentation, output schema definition, and error handling guidance. Naming is verb-noun compliant (predict_, estimate_, get_), but descriptions vary in quality and some parameters lack descriptions entirely. The tools accept blockchain-specific parameters that are reasonably well-constrained (chain_id, confidence 0-100, gas_limit), but output schemas are not formally documented, responses are string-based Markdown tables rather than structured objects. Error handling exists but is minimal and does not guide LLM recovery. The server is neither exceptional nor failing, landing solidly in the 'fair' range with room for improvement.
Estimate gas cost for a transaction based on gas limit, confidence level, and chain. Parameters: - gas_limit (int): The gas limit for the transaction (e.g., 21000 for a simple transfer). - confidence (int): The confidence level for gas price prediction (0-100). - chain_id (int): The ID of the blockchain network (e.g., 1 for Ethereum Mainnet). Default: 1. - ctx (Optional[Context]): The MCP context object. Default: None.
List the blockchain networks supported by the Blocknative Gas Platform, formatted as a Markdown table. Parameters: - ctx (Optional[Context]): The MCP context object. Default: None. Returns: - A Markdown table listing supported chains with their chain ID, system, and network.
Predict gas prices for a specified chain, including base fee and detailed prediction data in a Markdown table. Parameters: - chain_id (int): The ID of the blockchain network (e.g., 1 for Ethereum Mainnet). Default: 1. - ctx (Optional[Context]): The MCP context object. Default: None.
Output schemas not documented. All three tools return plain string (Markdown table formatted) rather than structured JSON objects. LLMs cannot extract or chain values from unstructured text responses, they must parse Markdown by hand, introducing fragility.
Parameter 'confidence' in estimate_gas_cost lacks explicit constraint documentation in the description. While the code validates 0-100, the description states only '(0-100)' as a parenthetical constraint, not as a clear format specification.
Error handling returns plain strings (e.g., 'Error: Confidence must be between 0 and 100') but does not guide LLM on recovery. For example, invalid gas_limit or confidence returns 'Error: ...' with no suggestion for what the agent should do next.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 55 | - | v1 |
Prompt 'gas_price_query' has an incomplete or malformed return statement. Line ends with 'base.AssistantMe' which appears to be a typo or incomplete code (should likely be 'base.AssistantMessage(...)' or similar). This breaks the prompt functionality.
No pagination support. If the Blocknative API returns many chains in get_supported_chains or many price predictions in predict_gas_price, the entire list is dumped into the response. For large datasets, this risks context window exhaustion.
Parameter descriptions for chain_id are identical across all tools ('The ID of the blockchain network (e.g., 1 for Ethereum Mainnet)') and include an example value (1 for Ethereum). Provide the description and let enums or constraint text guide the choice.