MCP server for interacting with Notion API based on Node
Server has 9 tools with basic schemas and descriptions, but significant quality gaps limit production readiness. All tools have descriptions (10-50 chars, below the 50-200 char baseline for LLM optimization) and Zod schemas, but parameter descriptions are minimal and output schemas are undocumented. Error handling is present but generic. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications. The 'children' parameter in notion_append_block_children uses z.any() with no validation, and 'properties' parameters across three tools are z.any() with vague descriptions. No pagination support documented for list-like operations (search, query_database). Tool names follow verb_noun convention well (notion_search, notion_retrieve_page, etc.), but descriptions lack context on when to use each tool vs. alternatives.
Append new children blocks to a specified parent block
Create a new item (page) in a Notion database
Delete a block in Notion
Query a Notion database
Retrieve the children of a block
Retrieve a database from Notion
Retrieve a page from Notion
Three tools use z.any() for complex parameters (children, properties) with no validation or schema documentation. LLMs cannot infer valid structure, leading to malformed API calls.
Tool descriptions are 30-50 characters, well below the 50-200 char baseline. Descriptions lack context on when to use each tool, dependencies, and expected output structure. Example: 'Search for pages and databases in Notion' does not explain pagination, result limits, or filtering options.
No output schemas documented. Callers cannot know what fields to expect from responses, forcing LLMs to parse unstructured JSON and guess at downstream tool compatibility. notion_search and notion_query_database likely return paginated results but no pagination metadata is documented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Search for pages and databases in Notion
Update properties of a page or database item
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications. Destructive tool (notion_delete_block) and write tools lack annotations to guide agent safety policies.
Error messages are generic ('Search failed', 'Failed to retrieve page'). No recovery guidance or actionable next steps for LLMs. Missing error classification (retryable vs. user-fixable vs. fatal).