A Model Context Protocol (MCP) server that converts Swagger/OpenAPI specifications into MCP tools, enabling AI assistants to interact with REST APIs dynamically
The server exposes 6 tools derived from Swagger/OpenAPI specs with reasonable naming (verb_noun pattern) and basic input schemas. However, descriptions are minimal (10-50 chars), parameter descriptions lack depth, and output schemas are not documented. Tools follow a consistent pattern but fall short of production-grade clarity. Parameter validation rules, format constraints, and recovery guidance are absent. The implementation generates tool definitions from Swagger but does not enrich them with LLM-optimized language.
Create a new pet
Delete a pet
Get a specific pet by ID
List all pets with optional filtering
Search pets by criteria
Update an existing pet
Tool descriptions are bare minimum (10-50 characters). LLM cannot determine when to use a tool vs a similar one, or what the expected output structure is. No guidance on preconditions, return schema, or downstream dependencies.
Parameter descriptions are absent or generic. 'limit' has no range (should specify 1-1000 bounds). 'tags' array lacks format details. 'body' object properties ('name', 'tag', 'age') lack field-level descriptions and validation rules. LLMs cannot infer constraints.
No output schema documented. Tools return 'Pet' objects but LLMs cannot see structure (fields, types, required vs optional). This forces agents to guess at response shape and wastes tokens on exploration.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | D | 54 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 51 | - | v1 |
deletePet is destructive but lacks confirmation/dry-run pattern. No error recovery guidance (e.g., 'If pet not found, call listPets to verify existence'). Agents cannot safely retry or self-correct on failure.
listPets and searchPets lack pagination details. No mention of how many results are returned, whether there is a next_cursor or total_count, or what happens when results exceed a limit. Large datasets could blow context window.
Tool definitions are generated from Swagger spec without LLM-specific enrichment. Descriptions are copied directly from OpenAPI summaries (too terse for agents). No tool annotations (readOnlyHint, destructiveHint) visible in registration.