MCP server that indexes Notion workspace content into ChromaDB for semantic search
Server has 6 well-named tools with clear verb-noun patterns (notion_search, notion_get_page, etc.). All tools have descriptions (avg 95 chars, within 10-1024 range). Input schemas are present with types and descriptions for all parameters. However, output schemas are not documented in the source code, LLMs cannot see what fields to expect from responses. Parameter descriptions are adequate but lack format constraints (e.g., page_id format, database_id format). Error handling is not visible in the tool definitions. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications. Missing documentation of pagination behavior for list tools.
Query indexed entries from a specific Notion database, optionally with a semantic search.
Retrieve the full indexed text content of a specific Notion page by its ID.
List all Notion databases that have been indexed. Returns database IDs and titles.
Semantic search across all indexed Notion content. Returns relevant chunks with page titles, URLs, and relevance scores.
Check the current sync status: last sync time, pages indexed, chunks stored, and whether a sync is in progress.
Trigger an immediate sync of Notion content. Can be incremental or a full re-index.
Output schemas not documented. LLMs cannot see what fields notion_search, notion_get_page, or notion_get_database_entries return. This forces agents to guess at response structure and breaks downstream tool chaining.
No tool annotations (readOnlyHint/destructiveHint). notion_trigger_sync is marked WRITE but lacks destructiveHint annotation. Agents cannot distinguish safe vs. risky tools without reading descriptions.
Parameter format constraints missing. page_id and database_id descriptions do not specify format (UUID, alphanumeric, with/without dashes). LLMs may pass invalid IDs.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | <=2025-11-25 | v2 |
Pagination not documented for list tools. notion_list_databases and notion_get_database_entries accept limit but no offset/cursor. No indication of total count or next_cursor in response.
Error handling not visible in tool definitions. No recovery guidance documented (e.g., 'If page not found, try notion_search'). Agents cannot self-correct on failures.