MCP server for Microsoft OneNote — read, search, create, and delete pages via Microsoft Graph.
OneNote MCP has 11 tools with consistent naming (verb_noun pattern) and reasonable descriptions (avg ~120 chars). All tools have input schemas with type definitions. However, parameter descriptions are sparse or missing context about constraints, formats, and dependencies. Output schemas are not documented. Error handling lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Descriptions are functional but below LLM-optimization baseline (50-200 chars). Missing pagination details for list tools despite potential for large result sets.
Creates a new top-level OneNote notebook with the given display name.
Creates a new OneNote page in the specified section with HTML content and optional binary attachments.
Creates a new section within a notebook or section group.
Creates a new section group within a notebook or another section group.
Permanently deletes a OneNote page.
Lists all OneNote notebooks for the authenticated user.
Lists all section groups within a notebook or all section groups across notebooks.
Output schemas not documented. LLMs cannot infer what fields list_notebooks, read_page, or search_pages return, forcing them to guess downstream field names for chaining.
No pagination parameters (limit, offset, cursor) on list_* tools despite potential for large result sets. search_pages has limit but list_notebooks/list_sections/list_section_groups do not. Risk of context window exhaustion.
Parameter descriptions lack constraint details. 'notebook_id' described as 'Optional notebook ID' but no guidance on format, length, or how to obtain one. 'commands' array in update_page lacks schema for command objects (target, action, position, content).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Lists all sections within a notebook or all sections across notebooks.
Reads the content of a OneNote page and returns it as HTML and Markdown.
Searches OneNote pages by query string using full-text search on page title and content.
Updates the content of an existing OneNote page by appending, prepending, inserting, replacing, or deleting elements.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe read-only tools from destructive ones without parsing descriptions. delete_page and update_page should be marked destructive.
Error handling lacks recovery guidance. No indication of what to do if a notebook_id is invalid, if a page is not found, or if a create operation fails due to duplicate name or permission denial.