Generate a minimal, Vercel-ready MCP server from an OpenAPI spec.
This server dynamically generates tools from OpenAPI specs, which creates a fundamental architectural problem: tool definitions are not statically verifiable. The single 'dynamic_from_openapi_spec' tool in the source code is a placeholder/container. The actual tools are generated at runtime from user-provided OpenAPI specs, meaning we cannot audit the quality of tool names, descriptions, schemas, or error handling that will be produced. This violates the core principle that tool definitions must be inspectable and verifiable before deployment. Additionally, the codebase shows no evidence of rigorous schema validation, parameter description enrichment, or error recovery guidance, all critical for agent-friendly tools. The tool descriptions generated from OpenAPI summaries/descriptions are likely to be API-centric rather than agent-optimized.
Tools are dynamically generated from the provided OpenAPI specification. Each endpoint in the OpenAPI spec becomes an MCP tool with the operation summary as the tool name and operation description as the description.
Tool definitions are generated dynamically from user OpenAPI specs at runtime; cannot audit tool quality before deployment. No verification that generated tool names follow verb_noun patterns, that descriptions are LLM-optimized (10 - 1024 chars), or that schemas include type/description metadata.
The single visible tool 'dynamic_from_openapi_spec' has a generic description ('Tools are dynamically generated...') that does not explain WHAT the tool does, WHEN to use it, or what it returns. At 159 characters, it meets minimum length but lacks actionable guidance for LLMs selecting this tool.
No input schema validation logic visible. The OpenAPI parser generates inputSchema objects, but there is no evidence of: (1) enforcing required parameters, (2) normalizing enum constraints, (3) adding parameter descriptions if the OpenAPI spec lacks them, or (4) truncating verbose API-level schemas to agent-friendly subsets.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 31 | 2026-07-28+ | v2 |
Error handling is minimal and generic. The api-client.ts catches errors and returns JSON with 'error' field and isError=true, but does not categorize errors as retryable/user-fixable/fatal, does not include the invalid value and violated constraint, and does not suggest recovery actions. LLMs cannot self-correct without this guidance.
No pagination or result-limiting logic. If an OpenAPI endpoint returns 1000+ items, the response is not capped, paginated, or limited. This risks context window exhaustion and degraded LLM reasoning.
Tools are generated from operation summaries and descriptions directly from the OpenAPI spec. Most OpenAPI specs use terse, API-centric language ('GET /users/{id}' → 'Retrieve user by ID') rather than agent-optimized descriptions that explain WHEN to use it, dependencies, or expected output structure.
No validation that generated tool names are unambiguous and action-oriented. If two OpenAPI endpoints both produce 'get_data' or 'process', LLMs cannot distinguish them. No normalization to verb_noun patterns is evident.