Notion MCP server providing tools to interact with Notion API for managing pages, databases, blocks, users, and search functionality
Notion MCP has 13 tools with consistent naming (verb_noun pattern) and basic schemas using Zod. All tools have descriptions and input parameters are typed. However, descriptions are generic (avg ~60 chars, well below the 194-char baseline for A+ tools), output schemas are undocumented, and error handling is minimal. No tool annotations (readOnlyHint/destructiveHint). Pagination is present but inconsistently applied. The server lacks guidance on when to use similar tools (e.g., search vs get-page) and does not document response structures, forcing LLMs to infer output fields.
Append blocks to a parent block or page
Create a comment on a page or block
Create a new database in Notion
Create a new page in Notion
Retrieve all pages in the workspace
Retrieve children blocks of a block or page
Retrieve comments from a block or page
Output schemas undocumented. All 13 tools return JSON via text content but do not declare expected response structure. LLMs cannot plan downstream calls or extract fields reliably.
Descriptions too brief (avg 55 chars vs 194-char baseline). Generic text like 'Retrieve a page by ID' lacks context on when to use this vs search or get-all-pages. No dependency hints or prerequisites documented.
No tool annotations. Destructive tools (create-page, create-database, append-block-children, create-comment) lack destructiveHint. Read-only tools lack readOnlyHint. Agents cannot distinguish safe from risky operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Get information about the current authenticated user (bot)
Retrieve a database by ID
Retrieve a page by ID
List all users in the workspace
Query a database to retrieve its pages
Search for pages or databases in Notion workspace
Error handling returns raw error messages without recovery guidance. 'Error fetching current user: <message>' tells LLM nothing about retry eligibility or next steps. No categorization of retryable vs fatal errors.
Pagination inconsistency. list-users, search, query-database, get-block-children, get-comments, get-all-pages support pagination; get-page, get-database, get-current-user do not. No guidance on when pagination is available or how to detect end-of-results.