Skip to main content
Glama
cphoskins
by cphoskins

notion-full-mcp

Full-featured Notion MCP server with deep page reading, surgical block editing, snapshot/restore, file uploads (Notion-hosted images and PDFs), table row manipulation, page restore from trash, destructive page copy across parents, and all block types including tables.

What's new in v0.3.0

  • Page restore from trash. restore_page explicitly unarchives a page by sending archived=False. This is the counterpart to delete_block on a page and works around the intentional safety guard in update_page that blocks archived=False. Cascaded child archives are restored automatically when the parent is restored.

  • Destructive page copy across parents. copy_page_to_parent is the workaround for Notion's public API not supporting parent changes. Recreates the page at the target parent with the same title, icon, and content, then archives the original. Handles paragraphs, headings, lists, tables, dividers, code blocks, and image/file blocks. Refuses to run if the source has nested child_page descendants (copy those manually).

  • move_page deprecated and now raises. Notion's PATCH /pages/{id} endpoint silently ignores parent field changes -- calls return HTTP 200 but do nothing. The move_page tool now returns a clear error pointing callers to copy_page_to_parent or manual drag-and-drop in the Notion sidebar.

Related MCP server: notion-private-api-mcp

What's new in v0.2.0

  • Notion file uploads. Upload images and files directly to Notion's own workspace storage instead of relying on external hosts like imgur. Works for PNG, JPEG, SVG, GIF, PDF, and any other Notion-supported attachment type.

  • Image block helpers. upload_image_as_block uploads a file and inserts it at a position in one call. replace_image_block swaps an existing image's content while preserving its position in the parent. download_image_block pulls any image block's file to disk.

  • Table row manipulation. insert_table_row adds a row to an existing table with automatic width validation. update_table_cell replaces the text of a single cell. No more rebuild-the-whole-table for small edits.

Install

pip install notion-full-mcp
# or
uv pip install notion-full-mcp

Quick Start

export NOTION_API_TOKEN="your-token-here"
notion-mcp

Claude Code Integration

Add to ~/.claude.json under mcpServers:

{
  "notion-full": {
    "type": "stdio",
    "command": "uvx",
    "args": ["notion-full-mcp"],
    "env": {
      "NOTION_API_TOKEN": "your-token-here"
    }
  }
}

Or for local development:

{
  "notion-full": {
    "type": "stdio",
    "command": "uv",
    "args": ["run", "--directory", "/path/to/notion-full-mcp", "notion-mcp"],
    "env": {
      "NOTION_API_TOKEN": "your-token-here"
    }
  }
}

Tools (33)

Search & Pages

Tool

Description

search_pages

Search pages by title

search

Search pages and/or databases

get_page_info

Get page metadata (title, parent, dates, URL)

create_page

Create a new page under a parent page or database

update_page

Update a page's title, icon, or archive status

move_page

DEPRECATED -- Notion's public API does not support moving pages. Returns a clear error pointing to copy_page_to_parent

restore_page

Restore a page (and its cascade-archived children) from trash

copy_page_to_parent

Recreate a page under a new parent (destructive workaround for the missing move capability; archives the original by default)

Reading

Tool

Description

read_page_deep

Read page with all nested children (recursive)

list_block_children

List direct children of a block or page

get_block

Get a single block by ID

Editing

Tool

Description

update_block_text

Replace all text in a block

find_replace_in_block

Find/replace text preserving formatting

update_block_rich_text

Update with full rich text specification

Inserting

Tool

Description

insert_text_after

Insert a text block after a specific block (supports all block types: paragraph, heading_1/2/3, bulleted_list_item, numbered_list_item, quote, etc.)

insert_blocks_after

Insert multiple blocks after a specific block

append_blocks_to_page

Append blocks to the end of a page

Deleting

Tool

Description

delete_block

Delete a block by ID

Comments

Tool

Description

create_comment

Add a comment to a page

list_comments

List all comments on a page or block

Databases

Tool

Description

get_database

Get database metadata and schema

query_database

Query a database with filters and sorts

Users

Tool

Description

get_self

Get the current authenticated user/bot

list_users

List all workspace users

Snapshot / Restore

Tool

Description

snapshot_page

Save complete page structure as JSON

restore_page_from_snapshot

Restore page from a snapshot (destructive)

Media & Files

Tool

Description

upload_file

Upload a file to Notion's own workspace storage (returns file_upload_id)

upload_image_as_block

Upload an image and insert it as a new image block in one step (after a block or appended to a page)

replace_image_block

Swap an existing image block's content with a newly uploaded file, preserving its position

download_image_block

Download the image file from an image block to disk — works for external URLs, Notion-hosted files, and file_upload references

upload_file_as_block

Upload any file (PDF, attachment) and insert it as a file block

Tables

Tool

Description

insert_table_row

Insert a new row into an existing table with automatic width validation

update_table_cell

Replace the text of a single cell in a table row

Notion API Token

  1. Go to https://www.notion.so/my-integrations

  2. Create a new integration

  3. Copy the token (starts with ntn_)

  4. Share the pages/databases you want to access with the integration

License

MIT

Available Tools

33 tools
append_blocks_to_pageB

Append blocks to the end of a page.

blocks_json should be a JSON array of block objects.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes
blocks_jsonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only mentions that blocks_json should be a JSON array of block objects, but it doesn't specify behavior on invalid page_id, idempotency, or limits. The tool is implied to be mutating (append), but safety aspects are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, with the first directly stating the purpose and the second providing parameter guidance. No extraneous information. It is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (multiple sibling tools) and missing annotations, the description is insufficiently complete. It lacks usage guidelines, behavioral details, and explanation of the return value despite having an output schema. More context is needed for effective disambiguation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It clarifies that blocks_json should be a JSON array of block objects, adding format guidance beyond the schema's 'type: string'. However, no additional meaning is provided for page_id. This partial compensation yields a score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Append blocks to the end of a page' clearly states the action (append), the resource (blocks), and the specific location (end of a page). This distinguishes it from sibling tools like 'insert_blocks_after' which insert at a specific position.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly suggests using this tool when you want to add blocks at the end of a page, but it does not explicitly state when to use it versus alternatives like 'insert_blocks_after' or other block insertion tools. No exclusions or conditions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

copy_page_to_parentA

Recreate a page under a new parent (destructive workaround for move).

Since Notion's public API does not support changing a page's parent, this tool works around the limitation by creating a new page at the target location with the same title, icon, and content, then archiving the original.

LIMITATIONS (read carefully): * Block IDs of the new page are different from the original. Any external references to original block IDs (graphics-spec.md, cross-page links, Change Log entries) will point at the archived original and need to be updated. * file_upload image blocks are copied as external URL references using the Notion-signed URL returned at copy time. Those URLs expire within an hour. For permanent preservation, re-upload the source files via upload_image_as_block after the copy. * child_page descendants (nested subpages) are NOT recursively copied -- the tool refuses to run if any are present. Copy them individually. * Comments, page history, permissions, and synced blocks are not copied.

Args: page_id: The source page to copy. new_parent_id: The target parent page or database ID. parent_type: "page_id" (default) or "database_id". archive_original: If True (default), archive the source page after the copy completes. Set False to keep both copies side-by-side.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes
new_parent_idYes
parent_typeNopage_id
archive_originalNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description fully discloses destructive behavior (archive original), block ID regeneration, file URL expiration, refusal on nested subpages, and omitted elements like comments and permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with overview, limitations list, and args section. Slightly lengthy but all content is valuable for a complex tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Description covers purpose, usage, behavioral details, and parameter meanings comprehensively. Output schema exists so omission of return values is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, description provides clear semantics for all 4 parameters including defaults, explaining why archive_original defaults True and parent_type options.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it recreates a page under a new parent as a destructive workaround for move. Distinguishes from sibling 'move_page' by explaining the API limitation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use (when API doesn't support parent change) and provides limitations (block ID change, URL expiry, no recursive copy, what's not copied). Implies alternatives for child pages and file preservation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_commentB

Add a comment to a Notion page.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavioral traits. It only states 'add a comment', with no mention of authentication requirements, side effects, or any constraints. This is insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a single sentence. However, it is overly minimal; valuable information could be added without harming conciseness. Still, it avoids verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 2 required parameters and many siblings, the description should explain parameter usage and differentiate from other tools. It is too sparse to provide complete context, despite the presence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description does not explain the parameters at all. It fails to clarify that page_id is the Notion page identifier or that text is the comment content, leaving the agent to infer from names alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the action (add) and the resource (comment to a Notion page), making the tool's purpose immediately clear. It correctly distinguishes from sibling tools like list_comments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not mention when not to use it or compare to related tools such as list_comments. The description is functional but lacks strategic context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_pageA

Create a new Notion page under a parent page or database.

Args: parent_id: ID of the parent page or database. title: Title for the new page. parent_type: "page_id" (default) or "database_id". icon_emoji: Optional emoji character to use as the page icon. children_json: Optional JSON array of block objects for initial content. properties_json: Optional JSON object of additional database properties to set. Example for setting Status: {"Status": {"status": {"name": "Done"}}} Example for setting Date: {"Due date": {"date": {"start": "2026-04-15"}}}

ParametersJSON Schema
NameRequiredDescriptionDefault
parent_idYes
titleYes
parent_typeNopage_id
icon_emojiNo
children_jsonNo
properties_jsonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden. It mentions creating a page and lists optional parameters, but does not disclose behavioral traits such as required permissions, rate limits, or what happens if the parent does not exist. The description is adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, with a clear opening sentence followed by a bulleted list of parameters. Every sentence adds necessary information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of 6 parameters and no schema descriptions, the description covers all parameters meaningfully, including examples for the most complex one. It provides sufficient information for an AI agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds value by explaining each parameter (e.g., parent_id is ID, parent_type defaults to page_id) and provides explicit examples for properties_json, which the schema lacks. This compensates well for the schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Create', the resource 'page', and the context 'under a parent page or database'. It is specific and distinguishes the tool from siblings that perform different actions like appending blocks or updating pages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'copy_page_to_parent' or 'update_page'. It does not mention prerequisites, limitations, or when another tool would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_blockC

Delete a specific block by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It only says 'Delete a specific block by ID', omitting details on reversibility, cascading effects, permission requirements, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, demonstrating conciseness and front-loading. However, it lacks necessary details, making it overly terse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (single required parameter) and presence of an output schema, the description should at minimum mention output or side effects. It does not, leaving significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema shows a single required parameter 'block_id' with no description. The description adds no meaning about its format, origin, or usage, despite 0% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Delete' and the resource 'block' with identifier 'by ID'. It distinguishes from sibling tools like 'get_block' or 'update_block_rich_text' by indicating destructive action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no context on when to use this tool versus alternatives, no prerequisites, and no conditions for appropriate use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

download_image_blockA

Download the image file from an image block to a local path.

Works for all three image source types: external URL, Notion-hosted file, and file_upload references. Notion-hosted URLs are signed and short-lived, so this tool re-fetches them at call time.

Args: block_id: The image block to download from. output_path: Local path to write the image to.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYes
output_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that Notion-hosted URLs are short-lived and re-fetched at call time, a key behavioral trait. However, it does not mention if downloading modifies the block or any permission requirements, which would be beneficial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with a clear front-loaded purpose statement followed by structured Args. Every sentence adds value without unnecessary fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (context signal), the description does not need to explain return values. It covers important aspects like supported image types and URL refreshing. However, it omits potential error conditions or prerequisites (e.g., block must be an image block), which could improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It provides brief but meaningful descriptions for both parameters: 'The image block to download from' and 'Local path to write the image to', adding context beyond the bare schema types. However, it lacks details like path format or overwrite behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (download), the resource (image file from an image block), and the destination (local path). It also specifies it works for all three image source types, distinguishing it from siblings like replace_image_block or upload_image_as_block.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for any image block but does not provide explicit guidance on when to use this tool vs. alternatives like replace_image_block or upload_image_as_block. No when-not or alternative scenarios are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_replace_in_blockA

Find and replace text within a block, preserving all formatting.

Replaces occurrences of old_text with new_text in each rich text segment while keeping bold, italic, links, and other annotations intact.

Returns an error (not a silent no-op) if old_text does not appear in the block. The error message includes the block's current plain text so the caller can diagnose Unicode / whitespace / formatting mismatches (e.g., en-dash U+2013 vs hyphen-minus U+002D, curly vs straight quotes, non-breaking space U+00A0 vs regular space). Use update_block_text or update_table_cell for full-text replacement when find/replace doesn't match because of character mismatches.

The success response includes a replacements field with the total number of occurrences of old_text that were replaced.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYes
old_textYes
new_textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the error behavior (non-silent, includes current plain text for diagnostics), the success response (includes 'replacements' field with count), and the preservation of formatting. However, it does not explicitly state that the tool modifies data (destructive), which is implied but could be clarified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: one sentence for purpose, followed by details on behavior, error handling, and alternatives. Every sentence earns its place with no redundancy. The critical information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 required parameters), no output schema (though context says there is one, but description already mentions the 'replacements' field), and no annotations, the description is complete. It covers purpose, behavior, error handling, and usage guidance, providing all necessary information for correct selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% coverage (no descriptions). The description compensates by explaining that old_text is the text to find and new_text is the replacement. It also clarifies that the function replaces in each rich text segment and raises an error if old_text is absent. This adds significant semantic value beyond parameter names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Find and replace text within a block, preserving all formatting.' This is a specific verb+resource combination. It further distinguishes from sibling tools by explicitly mentioning when to use alternatives like update_block_text or update_table_cell.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool and when not to: it returns an error if old_text is not found, and suggests using update_block_text or update_table_cell for full-text replacement when character mismatches occur. This helps the agent choose correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_blockA

Get a single block by ID, including its type, content, and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It indicates a read operation and lists returned fields, but it does not disclose any behavioral traits such as error handling, rate limits, or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that efficiently conveys the tool's purpose and return information with no superfluous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple task (get by ID) and the existence of an output schema, the description adequately covers return values. However, it could mention potential errors (e.g., if block not found) but this is acceptable for a straightforward retrieval.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has only one parameter (block_id) with 0% coverage in description (no description in schema). The tool description does not add any meaning beyond the parameter name, failing to explain what constitutes a valid block_id or any constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (get), the resource (a single block by ID), and what is included in the result (type, content, and metadata). This effectively distinguishes it from sibling tools like delete_block or list_block_children.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving a specific block, but it does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention any preconditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_databaseB

Get metadata and schema for a Notion database.

ParametersJSON Schema
NameRequiredDescriptionDefault
database_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description bears full burden. It implies a read operation but does not explicitly state non-destructive nature or other behavioral traits like error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise, front-loaded with key action. However, could include more detail without much bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given output schema exists, return values need not be described. But for a simple tool with one parameter, description is minimally adequate; lacks context on usage context or prerequisites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Parameter 'database_id' has 0% schema coverage and description adds no meaning beyond its name. Agent must infer what constitutes a valid database ID.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool retrieves metadata and schema for a Notion database, using specific verb 'Get' and resource 'database'. Distinct from siblings like query_database which fetches data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. Lacks explicit context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_page_infoB

Get metadata for a Notion page (title, parent, dates, URL).

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description bears full responsibility for behavioral disclosure. It only states 'Get metadata' without clarifying that it is read-only, requires no side effects, or any permissions needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is clear and front-loaded. While concise, it could benefit from slightly more detail without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and an output schema, the description is adequate but minimal. It lists some metadata fields but does not elaborate on the full extent of returned data or edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage. The description does not explain the 'page_id' parameter, its format, or constraints beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves metadata for a Notion page, listing specific fields (title, parent, dates, URL). This distinguishes it from sibling tools like 'read_page_deep' or 'update_page'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as 'get_block' or 'read_page_deep'. The description lacks exclusions or context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_selfA

Get the current authenticated Notion user or bot info.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states the tool 'gets' info, implying a read operation, but does not explicitly declare it as safe or read-only. It adds no further behavioral context beyond the action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, an output schema exists, and the tool's function is simple, the description is complete. It provides sufficient context for an agent to understand what the tool does.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100%. The description adds no parameter info, but none is needed. For zero-parameter tools, baseline is 4, and this meets it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves info about the current authenticated user or bot, using a specific verb and resource. It distinguishes itself from sibling tools, which focus on specific pages, blocks, databases, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit usage guidance is provided. While the purpose is self-contained and implies use for current user/bot info, there is no mention of when not to use it or alternatives. This is adequate but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insert_blocks_afterA

Insert new blocks after a specific block.

blocks_json should be a JSON array of block objects. Use make_block format: [{"type":"paragraph","paragraph":{"rich_text":[{"type":"text","text":{"content":"Hello"}}]}}]

For simple cases, use insert_text_after instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYes
blocks_jsonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must bear the burden. It explains the required format for blocks_json but lacks details on error behavior, side effects, or return values. The insertion action is implied but not fully disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no redundancy. The purpose is front-loaded, followed by format explanation and alternative recommendation. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description covers purpose, format, and alternative, it omits prerequisites (e.g., block_id must exist), failure scenarios, and any mention of the output schema. It is adequate but leaves gaps for an agent to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 0% description coverage, but the description adds significant meaning for blocks_json: it specifies JSON array format, provides an example, and references 'make_block format'. However, block_id lacks any elaboration beyond its name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Insert') and resource ('new blocks after a specific block'). It also explicitly distinguishes from sibling tool 'insert_text_after' by recommending the alternative for simple cases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use an alternative: 'For simple cases, use insert_text_after instead.' This clearly delineates usage context from a sibling tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insert_table_rowA

Insert a new row into an existing table.

The number of cells must match the table's existing width.

Args: table_id: The table block ID. cells_json: JSON array. Each element is either: - a plain string (single text segment) - a list of strings (multi-segment plain text in one cell) Example for a 4-column table: '["SMB", "$15K", "$0.015", "$80k - $300k"]' after_row_id: Optional row ID to insert after. If empty, append to end.

ParametersJSON Schema
NameRequiredDescriptionDefault
table_idYes
cells_jsonYes
after_row_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose behavioral traits. It mentions the required cell count constraint and cell format but omits side effects (e.g., row shifting), permissions needed, or behavior on invalid table_id.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two paragraphs, starting with purpose and then an organized 'Args' section. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description need not explain return values. It covers the core constraint and parameter formats but lacks error handling or edge cases. Overall sufficient for a straightforward insertion tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds substantial meaning beyond the schema (0% coverage): it defines table_id as the block ID, describes cells_json with examples and format, and explains after_row_id's use. This compensates for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Insert a new row into an existing table', specifying a precise verb and resource. Among sibling tools, it distinguishes itself from update_table_cell and other insert tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the constraint that the number of cells must match the table's width and describes the optional after_row_id parameter. However, it does not explicitly provide when-not-to-use scenarios or name alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insert_text_afterC

Insert a simple text block after a specific block.

Args: block_id: The block to insert after. text: The text content. block_type: Block type (paragraph, heading_1, heading_2, heading_3, bulleted_list_item, numbered_list_item, quote, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYes
textYes
block_typeNoparagraph

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It lacks any mention of side effects, permissions, error conditions, or limitations. The term 'insert' implies modification but no further detail is given.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and uses a structured docstring format with Args section. It is front-loaded with the purpose. Minor improvement would be to avoid listing all examples inline, but it's acceptably concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 parameters, no annotations, and an output schema that is not referenced, the description is incomplete. It does not explain what the tool returns, how it behaves in edge cases, or any prerequisites. Additional context is needed for a well-rounded understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It lists the three parameters and provides example values for block_type (e.g., paragraph, heading_1). This adds some context beyond the schema, but does not explain the semantics of each parameter fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool inserts a text block after a specific block, using clear verb ('insert') and resource ('text block'). However, it says 'simple text block' which is slightly vague given the variety of block types supported.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. Sibling tools like 'insert_blocks_after' and 'append_blocks_to_page' exist but are not differentiated, leaving the agent without context to choose correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_block_childrenA

List direct children of a block or page (shallow, no recursion).

Returns block IDs, types, and optionally their text content. Useful for finding specific block IDs before surgical edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYes
include_textNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided. The description discloses that the operation is shallow (non-recursive) and returns block IDs, types, and optionally text. However, it does not mention potential pagination for large result sets, rate limits, or error handling, which would be helpful for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the main action, and contains no unnecessary words. Every sentence adds value, making it efficient for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 parameters, no nested objects) and the presence of an output schema, the description covers the key aspects: shallow listing, optional text inclusion, and practical use. Minor omissions like pagination or error handling prevent a perfect score, but it is largely complete for the tool's purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description only hints at include_text with 'optionally their text content', but does not explain the block_id format, constraints, or the default behavior of include_text. Since no additional parameter details are given, the description falls short of compensating for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List', the resource 'direct children of a block or page', and the scope 'shallow, no recursion'. It distinguishes from siblings by specifying it's a listing operation specific to block children, unlike create, update, or delete tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a usage hint ('Useful for finding specific block IDs before surgical edits') but does not explicitly state when not to use this tool or mention alternatives like read_page_deep for recursive children. More explicit guidance would improve clarity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_commentsC

List all comments on a page or block.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description lacks details on behavioral traits such as pagination, ordering, rate limits, or authentication. It merely restates the name, providing no added behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, but it omits critical information. It is acceptable in structure but lacks substance, making it minimally adequate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the tool is simple, the description fails to provide sufficient context beyond the obvious. With no annotations and low schema coverage, it should offer more details about behavior and parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description only implies the parameter's purpose ('on a page or block') without detailing format, constraints, or usage. Does not compensate for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list) and resource (comments), and specifies the scope (on a page or block). It distinguishes from sibling tools like create_comment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, no mention of prerequisites or when not to use. Sibling tools exist but are not referenced.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_usersA

List all users in the workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry behavioral disclosure. It states the tool lists users (read operation), but does not describe any edge cases, authorization needs, or return value details beyond the title. Adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of six words, perfectly concise with no filler. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and an output schema that likely documents return values, the description is sufficient. It effectively informs the agent of the tool's simple purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description does not need to explain parameter meaning. Baseline score of 4 is appropriate since the schema coverage is 100%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List all users in the workspace' uses a specific verb and resource, clearly stating the tool's action. No other sibling tool performs user listing, so it is well-distinguished.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies usage when needing to see all users, but does not provide explicit when-not-to-use or alternative tools. Since no sibling overlaps, context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

move_pageA

NOT SUPPORTED: Notion's public API does not support moving a page.

The PATCH /pages/{id} endpoint silently ignores parent field changes -- the call returns HTTP 200 but the page is not actually moved. This tool is preserved only to return a clear error message and point callers to the working alternatives.

To move a page, use one of these instead: * copy_page_to_parent -- destructive recreate-and-archive (block IDs will change, file_upload media degrades to short-lived URLs) * Manually drag the page in the Notion sidebar (recommended for pages with nested subpages or heavy media content)

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes
new_parent_idYes
parent_typeNopage_id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that the PATCH endpoint silently ignores parent changes, returns HTTP 200 but does not move the page, and that this tool is preserved only to return a clear error message. Complete behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with 'NOT SUPPORTED', which immediately conveys the key message. It is concise but includes necessary details about alternatives. Slightly more verbose than ideal, but well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool is a placeholder for an unsupported action, the description is fully complete: it explains the API behavior, the fact that the tool exists only for error messaging, and provides two alternatives with their caveats (destructive nature, media degradation, recommendation for nested pages). No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain the parameters (page_id, new_parent_id, parent_type) beyond what the schema provides. Since the tool is a no-op, parameter details are less critical, but the description still does not add meaning for them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool does NOT support moving a page, explaining the API limitation and what it actually does (returns an error message). This is a specific verb-resource-purpose and distinguishes from sibling tools like copy_page_to_parent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'NOT SUPPORTED' and provides clear when-not-to-use guidance. It also gives two working alternatives (copy_page_to_parent and manual drag) with details on their trade-offs, so the agent knows exactly what to do instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_databaseA

Query a Notion database with optional filters and sorts.

Args: database_id: The database to query. filter_json: JSON string for a Notion filter object. Leave empty for no filter. sorts_json: JSON string for a Notion sorts array. Leave empty for no sorting. page_size: Maximum rows per page fetch (max 100). All pages are returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
database_idYes
filter_jsonNo
sorts_jsonNo
page_sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It explains pagination (all pages returned) and parameter constraints, but does not explicitly state that the operation is read-only, mention authentication needs, or describe error handling. This is adequate but lacks a safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with a clear main sentence followed by bullet points for parameters. Every sentence adds value, and the structure is front-loaded for quick understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists (so return values are covered), the description adequately explains parameter semantics and pagination. It is missing notes on error handling or rate limits, but for a query tool this is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must add meaning. It explains that filter_json and sorts_json are JSON strings (with empty defaults for no filter/sort), notes page_size max 100, and clarifies that all pages are returned. This provides significant context beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'query' and the resource 'Notion database', and highlights optional filters and sorts. This distinguishes it from sibling tools like 'get_database' (metadata) and 'search' (full-text search), providing strong purpose clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for querying database content with optional filtering and sorting, but does not explicitly state when to use this tool over alternatives like 'get_database' or 'search'. It mentions pagination behavior ('All pages are returned') but lacks explicit when-not or alternative tool guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_page_deepA

Read a Notion page with all nested children recursively.

Args: page_id: The Notion page ID. max_depth: Maximum nesting depth to fetch (default 5). format: Output format - 'markdown' for readable text, 'json' for full block tree.

Returns full document content including nested blocks like sub-lists, toggle contents, and table rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes
max_depthNo
formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description effectively conveys that the tool is read-only and recursively fetches nested content, including details about default depth and output formats. It does not discuss rate limits or authentication, but these are less critical for a read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the purpose, and structured with Args and Returns sections. Every sentence contributes essential information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description adequately covers the tool's behavior, parameters, and return value. It is sufficiently complete for a read operation on a page.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the description provides clear, meaningful explanations for each parameter (page_id, max_depth, format) including defaults and format options, which significantly adds value beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Read a Notion page with all nested children recursively', using a specific verb and resource, and clearly distinguishes from sibling tools that perform shallow reads or other operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lacks explicit guidance on when to use this tool versus alternatives like get_page_info or list_block_children. It does not mention when not to use it or provide context for selecting it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

replace_image_blockA

Replace an existing image block's content with a newly uploaded image.

Preserves the block's position in the parent by deleting the old block and inserting the new one after the previous sibling. If the image block is the very first child of its parent, the new block is appended to the end (Notion does not support prepend-at-position).

Args: block_id: The existing image block to replace. file_path: Local path to the new image. caption: Optional caption for the new image (omit to drop the old one).

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYes
file_pathYes
captionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Details the deletion-insertion behavior to preserve position, the edge case for first child, and a Notion limitation. Could also mention error handling but overall good transparency with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Efficient and well-structured: brief purpose, behavior explanation, then args list. No wasted sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers key aspects: purpose, behavior, parameters. Could mention return value or error states, but output schema exists to cover return.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Explains all three parameters meaningfully: block_id as existing block, file_path as new image, and caption as optional with behavior for omission. Compensates fully for 0% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it replaces an existing image block's content with a newly uploaded image, and mentions preserving position, distinguishing from sibling tools like delete_block or upload_image_as_block.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes behavior and a limitation (no prepend-at-position), but does not explicitly state when to use versus alternatives, nor when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_pageA

Restore a page (and its children) from trash.

This is the explicit counterpart to delete_block on a page. update_page has a safety guard that blocks archived=False; this dedicated tool is the supported way to unarchive.

When called on a page that was archived via a cascade (for example, a section container that was deleted along with its subpages), restoring the parent container automatically restores the cascaded descendants.

Args: page_id: The page to restore from trash.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses core behavior: restores page and children, is counterpart to delete_block, and supports cascading restoration. However, it lacks details on side effects (e.g., restored state of associated data) or authorization needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively concise but contains slight redundancy (e.g., mentioning counterpart to delete_block twice). The structure with an Args section is helpful and front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (restore operation with cascade), the description adequately covers core behavior, prerequisites (trashed page), and relationship to siblings. An output schema exists, so return values are not needed in the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one parameter (page_id) with no description (0% coverage). The description adds 'The page to restore from trash,' which clarifies the parameter's purpose beyond the schema definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool restores a page and its children from trash, and explicitly differentiates it from sibling tools like delete_block and update_page by noting it is the supported way to unarchive and handles cascading restoration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use this tool (as the dedicated unarchive tool, since update_page blocks archived=False) and mentions cascading restoration. However, it does not explicitly state when not to use it, such as for non-page blocks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_page_from_snapshotA

Restore a page from a previously saved snapshot.

WARNING: This deletes all current content and replaces it with the snapshot. Always take a snapshot of the current state before restoring.

Args: page_id: The page to restore into. snapshot_path: Path to the snapshot JSON file.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes
snapshot_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries full burden. It explicitly states 'This deletes all current content and replaces it with the snapshot,' disclosing key behavioral traits. It could mention additional traits like atomicity or permissions, but the disclosure is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a clear warning and parameter list. The Args section repeats schema information but is acceptable. It is front-loaded with the purpose and warning, making it efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, return values are not required. The description covers behavior, parameter meanings, and a prerequisite (taking a snapshot first). It is fairly complete but could mention error handling for invalid snapshot paths or page IDs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must add meaning. It provides brief but functional descriptions for both parameters ('The page to restore into' and 'Path to the snapshot JSON file'), clarifying their roles beyond the schema's type-only specification.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Restore a page from a previously saved snapshot,' which specifies the action and resource. It distinguishes from sibling tools like 'snapshot_page' and 'restore_page' by emphasizing the snapshot-based restoration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Includes a warning about destructive behavior and advises to take a snapshot first, providing clear guidance on when to use the tool and necessary precautions. However, it does not explicitly mention when not to use or list alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_pagesA

Search Notion pages by title. Returns page IDs, titles, and URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses return fields (IDs, titles, URLs) but lacks details on side effects, auth requirements, or rate limits. Since no annotations are provided, the description carries full burden and is only partially transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that conveys all essential information concisely and front-loads the core purpose. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the presence of an output schema, the description covers the basics and specifies return fields. However, it omits scope (e.g., across all pages) and ordering, leaving minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description should clarify parameters. It only implies the 'query' parameter is a title, but 'max_results' is unexplained, leaving ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the action ('Search'), resource ('Notion pages'), and scope ('by title'), differentiating it from the general sibling tool 'search'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The mention of 'by title' implies a use case but does not explicitly state limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snapshot_pageA

Create a complete snapshot of a page with all nested children.

Saves to a JSON file if output_path is provided. The snapshot includes the full block tree with recursive children, suitable for restore.

Default path: ~/notion-snapshots/_.json

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes
output_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description discloses key behaviors: creates a snapshot with recursive children, saves to JSON if output_path is provided, and gives a default path. It does not state whether the operation is read-only or describe side effects, but the core functionality is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—three sentences that cover purpose, output format, and default path. Every word adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the presence of an output schema (which covers return values), the description is complete. It covers all essential aspects: what it does, what it includes, and how output is handled. Prerequisites like permissions are implied but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates. It explains that page_id identifies the page and output_path controls where the JSON is saved, including the default path. This adds significant meaning beyond the raw schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a complete snapshot of a page with all nested children.' This specifies the exact action (create snapshot) and resource (page with children), distinguishing it from related tools like read_page_deep (read only) and restore_page_from_snapshot (reverse operation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'suitable for restore,' implying a use case, and the default path provides context. However, it does not explicitly contrast with alternatives like read_page_deep or specify when not to use it, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_block_rich_textB

Update a block's rich text with fully specified formatting.

rich_text_json should be a JSON array of rich text objects, e.g.: [{"type":"text","text":{"content":"Bold text"},"annotations":{"bold":true}}]

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYes
rich_text_jsonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It explains the rich_text_json format but does not disclose permissions, side effects, or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise with a useful example, but the structure could be improved by separating parameter details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values are covered. However, description lacks context for block_id and does not explain prerequisites or effects of the update.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%. Description adds meaning for rich_text_json (example provided) but not for block_id, leaving one parameter unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates a block's rich text with fully specified formatting, which is specific and distinct from siblings like update_block_text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies use when formatting needs to be fully specified, but does not explicitly state when not to use or mention alternatives, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_block_textA

Replace all text in a specific block with new plain text.

Preserves the block type but replaces all rich text content. Use find_replace_in_block for targeted text changes that preserve formatting.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYes
new_textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the destructive nature (replaces all text) and preservation of block type, but does not mention permissions, error handling, or return value. It is adequate but could be more comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences with no redundancy. First sentence states purpose, second adds detail, third provides alternative guidance. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 string params), the description is mostly adequate. However, it lacks details about what the tool returns (despite having an output schema) and does not mention any side effects or prerequisites. It is minimally complete but could be more informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so no parameter descriptions exist. The description clarifies that new_text is plain text, but does not explicitly describe each parameter beyond their names. It adds some value but not enough to fully compensate for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool replaces all text in a specific block with plain text, and distinguishes itself from find_replace_in_block. It uses a specific verb ('Replace'), identifies the resource ('all text in a specific block'), and provides additional context about preserving block type and replacing rich text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly directs users to use find_replace_in_block for targeted changes that preserve formatting, indicating when to prefer an alternative. However, it does not explicitly state when not to use this tool or describe prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_pageA

Update a page's title, icon, or archive status.

Only fields with non-default values are sent in the PATCH body. To archive a page pass archived=True; to unarchive pass archived=False (but note the server only sends archived when a caller explicitly toggles it — see the implementation which guards on the sentinel value).

Args: page_id: The page to update. title: New title text. Omit or pass "" to leave unchanged. icon_emoji: New icon emoji. Omit or pass "" to leave unchanged. archived: Pass True to archive the page. Defaults to False (no change sent). properties_json: Optional JSON object of database properties to set. Example: {"Status": {"status": {"name": "Done"}}} Example: {"Due date": {"date": {"start": "2026-04-15"}}} Can be combined with title — both will be applied.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes
titleNo
icon_emojiNo
archivedNo
properties_jsonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It explains that only non-default fields are sent, how archiving toggles work, and that omitting title/icon_emoji or passing empty strings leaves them unchanged. This covers key behavioral traits, though it could mention idempotency or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is generally concise and front-loaded with purpose. However, the parenthetical note about the implementation's sentinel value is a bit too technical for an agent and could be streamlined.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all parameters and behaviors for a mutation tool. An output schema exists (not shown), so return values are covered. However, it lacks mention of permissions, idempotency, or error handling, which would be helpful given no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining each parameter's meaning: page_id (implied), title (omit or pass "" to leave unchanged), icon_emoji (same), archived (default False but controls toggle), and properties_json (with concrete examples). This adds significant value beyond the schema's type/default info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Update' and the resource 'page', and lists specific fields (title, icon, archive status, properties). It distinguishes from sibling tools like update_block_text (which updates blocks) and create_page (which creates new pages).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on non-default value sending, archiving toggle behavior, and properties usage with examples. However, it does not explicitly state when to use this tool versus alternatives like move_page or update_block_text.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_table_cellA

Replace the text of a single cell in a table row.

Args: row_id: The table_row block ID. cell_index: Zero-based index of the cell within the row. new_text: New plain-text content for the cell. Overwrites all existing rich text segments in that cell.

ParametersJSON Schema
NameRequiredDescriptionDefault
row_idYes
cell_indexYes
new_textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description must disclose behavioral traits. It reveals that the tool 'overwrites all existing rich text segments', which is a key destructive behavior. However, it does not mention permission requirements, rate limits, or what happens on invalid input. The disclosure is minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured: a one-line summary followed by three clear argument descriptions. Every sentence contributes value, and there is no unnecessary text. Ideal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (3 parameters, no nested objects) and the presence of an output schema (so return values need not be described), the description is mostly complete. It could mention that row_id must be a valid existing block, but overall it covers the core semantics adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, but the description compensates by clearly explaining each parameter: row_id is a 'table_row block ID', cell_index is 'zero-based', and new_text is 'plain-text content' that overwrites existing rich text. This adds significant meaning beyond the raw schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a clear verb ('Replace') and singular resource ('a single cell in a table row'), making the tool's purpose immediately obvious. It effectively distinguishes from siblings like 'update_block_text' (which targets block-level text) and 'insert_table_row' (which adds rows).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides usage instructions for the arguments but gives no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The agent receives no contextual advice for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_fileA

Upload a file to Notion's own storage.

Returns a file_upload_id that can be referenced in image, file, pdf, or video blocks via {"type": "file_upload", "file_upload": {"id": ...}}. For the common case of uploading an image and creating a block in one step, use upload_image_as_block instead.

Args: file_path: Local path to the file (PNG, JPEG, GIF, SVG, PDF, etc.) Files up to 20 MiB use single-part mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It mentions the return value (file_upload_id), supported file types, and a size constraint (20 MiB single-part mode), but does not discuss permissions, error handling, or whether the operation is destructive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the core purpose. It includes a note about the return value, an alternative tool, and parameter details without excessive verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single parameter, existence of an output schema, and no annotations, the description covers the primary aspects: what it does, the return value, when to use an alternative, and the parameter's file type/size constraints. It could mention error scenarios or output schema details but is sufficient for a simple upload tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no description for file_path (0% coverage), but the description adds meaningful context: local path, supported file types (PNG, JPEG, GIF, SVG, PDF, etc.), and a size limit for single-part mode. This compensates well for the schema's lack of description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool uploads a file to Notion's own storage and distinguishes it from the sibling tool upload_image_as_block by noting the alternative for the common case of uploading an image and creating a block in one step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises using upload_image_as_block for the common case of image upload and block creation, providing a clear when-not scenario. However, it does not mention when to use upload_file_as_block instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_file_as_blockA

Upload a file (PDF, doc, any attachment) to Notion and insert as a file block.

Analogous to upload_image_as_block but for non-image files. Use this for PDFs, spreadsheets, archives, etc.

Args: file_path: Local path to the file. after_block_id: If provided, insert after this block (siblings). parent_id: If after_block_id is empty, append to this page/block. caption: Optional caption. name: Optional display name override (defaults to the filename).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
after_block_idNo
parent_idNo
captionNo
nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of disclosing behavioral traits. It does not mention any side effects, safety considerations, file size limits, permissions, or whether the operation is reversible. The description only states what the tool does (upload and insert), but lacks crucial behavioral context for an AI agent to use it safely.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the primary action, and uses a clear structure: purpose statement, analogy to sibling, then parameter list. Every sentence adds value, and there is no redundant or unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the zero schema coverage and no annotations, the description provides adequate information for basic usage: what the tool does, how parameters work, and differentiation from a sibling. However, it lacks details on file access requirements, error handling, or the nature of the output (though an output schema exists). It is mostly complete for typical use but could be more thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, but the description compensates with an 'Args' section that explains all five parameters: file_path (local path), after_block_id (insertion position), parent_id (fallback location), caption (optional), and name (display override). These explanations add meaningful context beyond the schema's property names, though some are brief (e.g., 'Optional caption').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Upload a file (PDF, doc, any attachment) to Notion and insert as a file block,' specifying the action and resource. It also distinguishes itself from the sibling tool 'upload_image_as_block' by noting it is for non-image files, which provides clear differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states it is analogous to upload_image_as_block but for non-image files and recommends use for PDFs, spreadsheets, archives, etc. This gives clear context for when to use the tool relative to its sibling, though it does not explicitly state when not to use it or mention alternatives like the generic upload_file tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_image_as_blockA

Upload an image file to Notion and insert it as a new image block.

This is the standard replacement for imgur-hosted images. The image is stored in Notion's own workspace storage.

Args: file_path: Local path to the image (PNG, JPEG, GIF, SVG, WEBP, etc.) after_block_id: If provided, insert immediately after this block (siblings). parent_id: If after_block_id is empty, append to this page/block instead. caption: Optional caption text for the image.

Exactly one of after_block_id or parent_id must be provided.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
after_block_idNo
parent_idNo
captionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that the image is stored in Notion's own workspace storage, which is useful. However, without annotations, more transparency is expected regarding auth, rate limits, or error handling; does not fully compensate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is efficient with bullet points for parameters, no wasted sentences. Could be slightly more concise but well-structured and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers main purpose and parameter usage well. Since output schema exists, lack of return value details is acceptable. Missing file size limits or supported formats beyond the list, but overall sufficient for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description lists all 4 parameters with brief explanations and adds a constraint on the mutual exclusivity of after_block_id and parent_id, adding significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool uploads an image to Notion and inserts it as an image block, differentiating it from similar tools like upload_file or upload_file_as_block by specifying 'image' and mentioning it as a replacement for imgur-hosted images.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear guidance on when to use (standard replacement for imgur-hosted images) and a critical rule: exactly one of after_block_id or parent_id must be provided. Lacks explicit when-not or alternatives to other siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 33 tool updatesv0.3.1
    • First observedappend_blocks_to_page
    • First observedcopy_page_to_parent
    • First observedcreate_comment
    • First observedcreate_page
    • First observeddelete_block
    • First observeddownload_image_block
    • First observedfind_replace_in_block
    • First observedget_block
    • First observedget_database
    • First observedget_page_info
    • First observedget_self
    • First observedinsert_blocks_after
    • First observedinsert_table_row
    • First observedinsert_text_after
    • First observedlist_block_children
    • First observedlist_comments
    • First observedlist_users
    • First observedmove_page
    • First observedquery_database
    • First observedread_page_deep
    • First observedreplace_image_block
    • First observedrestore_page
    • First observedrestore_page_from_snapshot
    • First observedsearch
    • First observedsearch_pages
    • First observedsnapshot_page
    • First observedupdate_block_rich_text
    • First observedupdate_block_text
    • First observedupdate_page
    • First observedupdate_table_cell
    • First observedupload_file
    • First observedupload_file_as_block
    • First observedupload_image_as_block

TDQS

A3.5/5.0

Scored across 33 tools

Disambiguation5/5

Each tool has a clearly distinct purpose, even those that seem similar (e.g., upload_file, upload_file_as_block, upload_image_as_block) are differentiated by whether they return an ID, insert a block, or handle images vs. files. Overlaps like update_block_text and find_replace_in_block are well-documented with distinct use cases.

Naming Consistency4/5

The majority of tools follow a consistent verb_noun pattern (create_page, delete_block, list_comments). Minor deviations include multi-word verbs like copy_page_to_parent and restore_page_from_snapshot, but overall the naming is predictable and readable.

Tool Count3/5

33 tools is high but largely justified given the broad Notion surface (pages, blocks, databases, comments, files, snapshots). However, some tools like `move_page` are essentially placeholders that return errors, and the count could be trimmed by merging redundant upload variants.

Completeness3/5

Core CRUD operations for pages and blocks are well-covered, along with search, comments, and file uploads. Notable gaps include missing database creation/deletion, database schema updates, and support for non-text block types (e.g., toggles, callouts). The snapshot feature partially compensates for restore needs.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Unofficial Notion MCP server built on Notion's private API (token_v2 cookie). Gives LLM agents full read/write access to the entire workspace — no integration token and no per-page sharing.
    11
    10
    4
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enhanced Notion MCP server supporting all 24 property types, auto-pagination, block operations, and markdown conversion for database and page operations.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Comprehensive MCP server for the Notion API. Provides 22 tools for full CRUD operations on pages, databases, blocks, users, and comments.
    12
    MIT