Turn any OpenAPI spec or curl command into an MCP server. One command. No code.
mcpify exposes a single dynamically-generated tool 'dynamic_tools_from_openapi' that wraps OpenAPI operations. The tool definition itself has a generic name that does not follow verb_noun conventions (should be 'call_openapi_operation' or similar). The input schema is present but overly generic: path_parameters, query_parameters, header_parameters, body are all untyped objects with minimal descriptions. The tool description states tools are 'dynamically generated' but does not explain what the tool itself does or when to call it. No output schema is documented. Error handling returns raw HTTP status + body text without recovery guidance. The design conflates the MCP tool (which should be a stable interface) with dynamic OpenAPI operation wrapping, making it impossible for LLMs to understand what parameters each operation accepts without introspection.
Tools are dynamically generated from OpenAPI spec operations. Each operation becomes a tool with the name derived from operationId or method+path pattern.
Tool name 'dynamic_tools_from_openapi' does not follow verb_noun convention and is ambiguous. LLMs cannot infer the action from the name alone. Should be 'call_openapi_operation' or 'invoke_api_endpoint'.
Input schema parameters (path_parameters, query_parameters, header_parameters, body) are all untyped objects with generic descriptions. LLMs cannot validate inputs or understand which fields are required. Schema must specify per-operation parameter types, constraints, and descriptions.
No output schema documented. Tool returns raw HTTP response (status, body, truncated flag) without structure. LLMs cannot plan downstream operations or extract typed fields.
Error handling returns isError=true with raw HTTP status text and body. No recovery guidance (e.g., 'Try with different parameters' or 'This endpoint requires authentication'). LLMs cannot self-correct.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 26 | 2026-07-28+ | v2 |
Tool description does not explain WHAT the tool does, WHEN to use it, or WHAT it returns. It only states that 'tools are dynamically generated', which is implementation detail, not user-facing guidance.