Car search system with MCP protocol and virtual agent for searching and filtering car inventory using natural language queries
Single tool 'fetch_data' has a reasonable description (194 chars) but critical schema deficiencies. Input parameter 'filters' is typed as 'object' with no formal schema constraints, no enum values, no min/max bounds, and no per-field type definitions. The description lists possible keys (brand, model, fuel, etc.) as free-form text rather than a structured schema. Output schema is undocumented, no field types, no pagination support despite potentially returning many cars. No error handling guidance. Tool name 'fetch_data' is generic and does not follow verb_noun convention (should be 'search_cars' or 'list_cars'). No parameter descriptions for individual filter fields. Lacks idempotency hints, rate-limit guidance, and result-limiting documentation.
Fetch car data from the database based on provided filters. This function is registered as an MCP tool and handles database queries for car information. It converts the retrieved Car objects to dictionaries for JSON serialization.
Input schema 'filters' is unstructured object with no field-level type definitions, enums, or constraints. Possible keys listed only in description text, not as formal schema. LLM cannot validate input or discover valid filter options.
Output schema completely undocumented. No field types, no pagination support (limit/offset/total_count), no result-limiting guidance. Returning unbounded car lists risks context window exhaustion.
Tool name 'fetch_data' is generic and does not convey action. Should be 'search_cars' or 'list_cars' to match verb_noun convention and help LLM infer intent from name alone.
No error handling guidance. Tool description does not explain what happens on invalid filters, empty results, or database errors. LLM has no recovery path.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 37 | <=2025-11-25 | v2 |
No idempotency or rate-limit documentation. Tool description does not state whether repeated calls with same filters are safe or if rate limits apply.