A Model Context Protocol server for Notion API operations
Notion MCP has well-structured tool definitions with consistent naming (verb_noun pattern) and complete input schemas. However, descriptions are generic and lack LLM-optimization guidance. Parameter descriptions are minimal (often single phrases like 'The ID of the database to retrieve'). Output schemas are not documented, LLMs cannot predict response structure. Error handling is absent from tool definitions. No tool annotations (readOnlyHint/destructiveHint) despite clear risk stratification. The server implements 10 tools covering core Notion operations, but lacks the depth of guidance needed for reliable agent planning.
Append children blocks to a parent block
Create a new database
Create a new page
Get children of a block
Get the current bot user
Retrieve a database by ID
Retrieve a page by ID
No output schemas documented. LLMs cannot predict response structure or plan downstream tool calls. E.g., notion_search returns results but no schema tells the agent what fields to expect.
Descriptions are generic and under 100 chars. E.g., 'Retrieve a database by ID' lacks context on when to use this vs notion_query_database, what structure is returned, or prerequisites. Baseline for A+ tools is 50-200 chars with WHEN/WHAT/RETURN guidance.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). Tools are marked with Risk labels (READ_ONLY/WRITE) in metadata but not exposed via MCP tool annotations. Agents cannot distinguish safe from destructive operations without reading descriptions.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | <=2025-11-25 | v2 |
Query a database with optional filtering and sorting
Search across Notion pages and databases
Update page properties
Parameter descriptions are minimal. E.g., 'filter' in notion_query_database is described as 'Filter criteria for the query', no guidance on format, structure, or valid operators. Agents cannot construct valid filters without trial-and-error.
No error handling guidance in tool definitions. Notion API errors (rate limits, auth failures, invalid IDs) are not documented. Agents have no recovery path when a call fails.