MCP server for querying gas stations and fuel prices in Quebec, Canada
Two tools with schemas present but significant quality gaps. request_user_input has a vague, instruction-heavy description (165 chars) that reads like a prompt rather than a tool spec, and its single boolean parameter lacks actionable guidance. query_gas_stations has better structure with 9 parameters and output schema, but the description is procedural ('Only call this AFTER...') rather than declarative. Parameter descriptions are present but generic (e.g., 'User's confirmed longitude' doesn't explain validation, range, or format). No error handling guidance, no recovery paths, and no indication of what happens on failure. Output schema is documented but verbose (includes raw API fields like 'IsAvailable' that could be stripped). Tool names are verb-noun but descriptions don't explain WHEN or WHY to use each tool relative to the other.
Query for gas stations within a specified radius. Only call this AFTER calling request_user_input and receiving a confirmed location + search parameters from the user.
MANDATORY INITIALIZATION: Call this tool FIRST if the user is in Quebec or inquiring about Quebec fuel prices. This tool ensures you do not guess sensitive location data. Do NOT proceed with data fetching tools until the user has provided these parameters. Exceptions: Only skip if the user has ALREADY provided these 4 parameters in their very first message.
request_user_input description is instruction-heavy and procedural ('MANDATORY INITIALIZATION: Call this tool FIRST...') rather than declarative. It reads like a system prompt, not a tool spec. LLMs need to know WHAT the tool does, not HOW to use it in a workflow.
request_user_input has only one parameter (userInQuebec: boolean) with a vague description. The description mentions '4 parameters' the user must provide, but the tool itself only accepts one boolean. This mismatch confuses the LLM about what the tool actually does.
query_gas_stations has 9 parameters with descriptions, but they lack validation constraints. E.g., radiusKm has no min/max (could be 0 or 10000), fuelConsumption and fillUpVolume have no range guidance. Numeric parameters must specify bounds to prevent LLM from passing absurd values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2025-06-18+ | v2 |
No error handling guidance. If query_gas_stations returns 0 results, the response is a plain text message with no recovery hint. LLM doesn't know whether to retry with larger radius, different gas type, or ask the user for clarification.
Output schema includes raw API fields (IsAvailable boolean, Brand optional string) that add noise. Response should strip irrelevant metadata and return only what the agent needs to answer the user (station name, address, price, distance, cost).