Official MCP server for Notion API that converts OpenAPI specifications into MCP tools
Critical failures across all dimensions. The server dynamically generates tools from OpenAPI specs with names like 'API-{operationId}' (truncated to 64 chars). Tool definitions are inferred from OpenAPI parsing, not explicitly registered in code. The single tool entry shows an empty properties object with additionalProperties:true, no actual schema is visible. Description is generic boilerplate about 'dynamically generated tools' with no actionable guidance for LLMs. No parameter descriptions, no output schema documentation, no error handling guidance. This violates core patterns: tool naming (no verb prefix, opaque operationId names), tool description (generic, under 50 chars of substance), parameter documentation (completely absent), and schema completeness (empty/dynamic).
Dynamically generated tools from OpenAPI specification. Each operation in the Notion OpenAPI spec becomes a separate tool with the pattern API-{operationId}. Tools are truncated to 64 characters maximum.
Tool definitions are dynamically inferred from OpenAPI, not explicitly registered. No visible tool registration with proper MCP schema in source code. This server is far below that.
Input schema is empty (properties: {}, additionalProperties: true). No parameter types, no descriptions, no constraints. LLMs cannot infer what parameters to pass.
Tool names are opaque operationIds (e.g., 'API-listDatabases', 'API-createPage') with no action verb prefix. Names do not follow verb_noun pattern. LLMs cannot infer intent from names alone. Truncation to 64 chars further obscures meaning.
Description is generic boilerplate: 'Dynamically generated tools from OpenAPI specification...' Does not explain WHAT each tool does, WHEN to use it, or what it returns. Under 50 chars of substance. This is ~40 chars of actual content.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 23 | 2026-07-28+ | v2 |
No output schema documented. LLMs cannot plan downstream calls or extract required fields. No pagination guidance, no field descriptions, no chaining IDs returned.