MCP server for patient education with Code Mode execution, API catalog search, GraphQL, and SPARQL support
This server has 5 tools with schemas and descriptions present, but significant quality gaps. Tool names lack clear action verbs (catalog_search, execute, graphql_execute, sparql_execute, search are generic). Descriptions are present but often verbose and lack LLM-optimized structure. Parameter descriptions exist but are inconsistent in clarity. Critical issue: execute/graphql_execute/sparql_execute accept arbitrary code input with minimal validation guidance, this is a severe security and usability risk. No output schemas documented. Error handling is absent from visible code. The server appears to be a code-execution sandbox wrapper, which is inherently high-risk and requires exceptional documentation and guardrails that are not evident here.
Search the API catalog (legacy mode). The tool accepts query/category/max_results parameters and performs keyword-based search over the static ApiCatalog. Returns matching endpoints with full parameter docs. Use this to discover API capabilities before calling execute.
Execute JavaScript code against an API catalog with Code Mode. Code runs in a sandboxed V8 isolate with api.get/api.post wrappers, catalog search helpers, and console.log() capture. API keys never enter the isolate — all HTTP goes through the host's apiFetch.
Execute JavaScript code against a GraphQL endpoint with Code Mode. Code runs in a sandboxed V8 isolate with gql.query() for GraphQL execution, schema.* introspection helpers, and optional REST api.get/api.post for hybrid GraphQL+REST servers. API keys never enter the isolate — all HTTP goes through the host's gqlFetch.
Search the API specification (OpenAPI mode). Write JavaScript code to search the OpenAPI spec, or use legacy query/category arguments for keyword search. Available functions: searchPaths(query, maxResults=10), listTags(), getOperation(idOrPath), describeOperation(idOrPath), and access to the full frozen spec object.
Execute JavaScript code against a SPARQL endpoint with Code Mode. Code runs in a sandboxed V8 isolate with sparql.query(), sparql.ask(), sparql.raw() for SPARQL execution, common ontology prefixes, and console.log() capture. The endpoint URL never enters the isolate — all HTTP goes through the host's sparqlFetch.
Tool names lack action verbs. 'execute', 'search', 'catalog_search' are generic and do not clearly signal intent. 'execute' is dangerously vague, execute what? Code? Queries? Mutations? LLMs cannot infer the scope or safety implications.
No output schemas documented. Tools return results but the structure is not specified. LLMs cannot plan downstream operations or extract required fields (e.g., does execute return {result, error, staged_data}?).
Code execution tools (execute, graphql_execute, sparql_execute) accept arbitrary JavaScript with minimal input validation guidance. Descriptions mention sandboxing but do not explain constraints, allowed APIs, or error recovery. No mention of code injection risks or validation rules.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | 2026-07-28+ | v2 |
Parameter descriptions are verbose and include implementation details (e.g., 'Code runs in a sandboxed V8 isolate with api.get/api.post wrappers'). This wastes tokens and buries actionable constraints. Descriptions should state WHAT the param controls, not HOW it works internally.
No error handling guidance visible. Tools do not document what errors are retryable, what indicates user input problems, or how to recover. An LLM receiving a code execution error has no guidance on next steps.