Natural language to API backend - converts natural language queries to SQL, GraphQL, and REST API calls using LLMs
This server exposes three tools with partial schemas and inconsistent descriptions. All tools have descriptions present (50-100 chars), but two of three lack output schema documentation. Input schemas are visible with types and enums, but parameter descriptions are minimal (15-30 chars average). The core issue: tool definitions appear to be inferred from Express route handlers rather than formally registered with comprehensive metadata. No evidence of error recovery guidance, idempotency declarations, or composition support. The `execute-query` and `ai-query` tools perform write operations but lack confirmation patterns or destructive-operation hints.
End-to-end pipeline: converts natural language prompt to query, validates it, and executes against backend
Validates and executes a SQL, GraphQL, or REST query against connected backends with explicit verification step
Converts natural language query to SQL, GraphQL, or REST API query using configured LLM models
No output schemas documented for any tool. LLMs cannot infer what fields to expect in responses, forcing downstream tool calls to be unpredictable.
Destructive write operations (execute-query, ai-query) lack confirmation or dry-run patterns. An agent could accidentally delete or modify data without verification.
Parameter descriptions are extremely brief (15-30 chars). 'Target query type: SQL, GraphQL, or REST' is the only substantive one; 'Query to execute' lacks format guidance, and 'Natural language query prompt' does not explain required context or length.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 40 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 21 | - | v1 |
Error messages in server.js are generic: 'Missing required fields', 'Validation failed', 'Internal Server Error'. They do not guide the LLM on recovery steps or which fields were invalid.
Tool definitions are inferred from Express POST routes, not formally registered with MCP-compliant schemas. The source code shows route handlers but no explicit tool registration metadata or schema documents.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. Agents cannot determine which tools are safe to retry or which modify state.
Handling of model parameter is inconsistent. 'generate-query' and 'ai-query' accept optional model; 'execute-query' does not. No enum or whitelist of valid model names, LLMs can pass arbitrary strings.
No validation of queryType enum beyond HTTP 400 response. If an LLM passes 'SPARQL' or 'REST_API' instead of 'SQL|GraphQL|REST', the error message does not list allowed values.
The 'ai-query' tool combines generation, validation, and execution in one call. If validation fails mid-pipeline, the LLM cannot understand which step failed or retry selectively. Should be decomposed into separate concerns.