Skip to main content
Glama
atikk-co-jp

notion-mcp-server

by atikk-co-jp

notion-mcp-server

English | 日本語

MCP (Model Context Protocol) server for Notion API. Enables AI assistants to interact with Notion pages, databases, and blocks.

API Version: 2025-09-03 (latest)

Why this repository?

Why I Built This

I wanted to use AI agents to process tasks from my Notion database with specific conditions:

"Get tasks where Status = 'Not Started' AND Assignee = 'Alice', sorted by Priority"

Here's what I found with existing options:

MCP Option

Property Filtering

Token Efficiency

Plan Required

Official Notion MCP

Metadata only (created_at, created_by) / Full (Enterprise+AI)

Good

Notion AI

@notionhq/notion-mcp-server

✅ Full support

Large responses

None

This repository

✅ Full support

Optimized

None

The gap I wanted to fill:

  • Full database property filtering (AND/OR, select, checkbox, date, etc.)

  • Optimized response sizes for LLM token efficiency

  • No plan restrictions

This repository provides property filtering with fields parameter for 90% token reduction.

Related MCP server: @node2flow/notion-mcp

Quick Start

1. Get a Notion Token

  1. Go to Notion Integrations

  2. Click "New integration"

  3. Give it a name and select the workspace

  4. Copy the "Internal Integration Token" (starts with ntn_)

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

2. Configure Your AI Client

Claude Desktop

Add to your configuration (~/.config/claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": ["-y", "@atikk-co-jp/notion-mcp-server"],
      "env": {
        "NOTION_TOKEN": "ntn_xxxxxxxxxxxx"
      }
    }
  }
}

Claude Code

Add to your .mcp.json:

{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": ["-y", "@atikk-co-jp/notion-mcp-server"],
      "env": {
        "NOTION_TOKEN": "ntn_xxxxxxxxxxxx"
      }
    }
  }
}

That's it! Restart your AI client and start using Notion.

Features

  • Page Operations: Create, retrieve, update, and move Notion pages

  • Database Operations: Create, retrieve, update, and query databases with filters and sorts

  • Block Operations: Retrieve, update, delete, and append blocks

  • Search: Search across pages and databases

  • Comments: Create and list comments

  • Users: List users and retrieve user info

  • Token-Efficient Output: Markdown/simple format reduces token usage by ~96%

  • Markdown Input: Create and append content using Markdown (80% fewer input tokens)

API Coverage

⭐ = Markdown input supported (reduces input tokens by ~80%)

📤 = Minimal response (id/url only) - reduces output tokens by ~90%

Category

Notion API

MCP Tool

Input

Output (default)

Pages

Create page

create-page 📤

JSON

{id, url}

create-page-simple ⭐📤

Markdown

{id, url}

Retrieve page

retrieve-page

JSON

simple/json

Update page

update-page 📤

JSON

{id, url}

Retrieve page property

retrieve-page-property

JSON

json

Move page

move-page 📤

JSON

{id, url}

Archive page

archive-page 📤

JSON

{id}

Databases

Create database

create-database 📤

JSON

{id, url}

Retrieve database

retrieve-database

JSON

simple/json

Update database

update-database 📤

JSON

{id, url}

Archive database

archive-database 📤

JSON

{id}

Data Sources

Retrieve data source

retrieve-data-source

JSON

simple/json

Query data source

query-data-source

JSON

simple/json

Update data source

update-data-source 📤

JSON

{id}

Blocks

Retrieve block

retrieve-block

JSON

markdown/json

Update block

update-block 📤

JSON

{id}

update-block-simple ⭐📤

Markdown

{id}

Delete block

delete-block 📤

JSON

{id}

delete-blocks-batch 📤

JSON

{deleted_count, failed_count}

clear-page-content 📤

JSON

{deleted_count, failed_count}

Retrieve block children

get-block-children

JSON

markdown/simple/json

Append block children

append-block-children 📤

JSON

{block_ids}

append-blocks-simple ⭐📤

Markdown

{block_ids}

replace-page-content ⭐📤

Markdown

{deleted_count, created_count}

find-and-replace-in-page ⭐📤

Markdown

{updated_count, updated_block_ids}

Comments

Create comment

create-comment 📤

JSON

{id}

create-comment-simple ⭐📤

Markdown

{id}

List comments

list-comments

JSON

json

Users

List users

list-users

JSON

json

Retrieve user

retrieve-user

JSON

json

Retrieve bot user

retrieve-bot-user

JSON

json

Search

Search

search

JSON

simple/json

Available Tools

retrieve-page

Retrieve a Notion page by its ID.

Parameters:

  • page_id (required): The ID of the page to retrieve

  • format (optional): Output format - "simple" (default) or "json"

    • simple: Returns simplified property values with reduced token usage

    • json: Returns raw Notion API response

  • include_content (optional): Include page content as markdown (default: true)

{
  "page_id": "page-uuid-here",
  "format": "simple",
  "include_content": true
}

create-page

Create a new page. Supports two parent types:

  • Child page: Use parent.page_id to create a page under an existing page

  • Database entry: Use parent.data_source_id to create a page in a database

Create a child page:

{
  "parent": { "page_id": "parent-page-uuid-here" },
  "properties": {
    "title": {
      "title": [{ "text": { "content": "Child Page Title" } }]
    }
  }
}

Create a database entry:

{
  "parent": { "data_source_id": "data-source-uuid-here" },
  "properties": {
    "Name": {
      "title": [{ "text": { "content": "New Page Title" } }]
    },
    "Status": {
      "status": { "name": "In Progress" }
    }
  }
}

create-page-simple ⭐

Create a new page using Markdown. ~80% fewer input tokens compared to create-page.

Supports two parent types:

  • Child page: Use parent.page_id to create a page under an existing page

  • Database entry: Use parent.data_source_id to create a page in a database

Parameters:

  • parent (required): Either { page_id } or { data_source_id }

  • title (required): Page title as a simple string

  • content (optional): Page content in Markdown

  • properties (optional): Additional Notion properties

  • icon (optional): Emoji icon (e.g., "🐛")

Supported Markdown:

  • Headings: # ## ### (#### and beyond → heading_3)

  • Lists: - or * (bulleted), 1. (numbered)

  • Checkboxes: - [ ] / - [x]

  • Code blocks: ``` with language

  • Quotes: >

  • Dividers: ---

  • Images: ![alt](url)

  • Tables: | col1 | col2 | with header separator |---|---|

  • Inline: **bold**, *italic*, ~~strike~~, `code`, [link](url)

Extended Markdown (bidirectional):

  • Toggle: <details><summary>title</summary>content</details>

  • Callout: > [!NOTE], > [!WARNING], > [!TIP], > [!IMPORTANT], > [!CAUTION]

  • Equation: $$E = mc^2$$ (inline/block)

  • Underline: <u>text</u> or ++text++

  • Color: {color:red}text{/color}, {bg:yellow}text{/bg}

  • Bookmark: [bookmark](url) or [bookmark:caption](url)

  • Columns: :::columns / :::column / :::

  • Media: @[embed](url), @[video](url), @[audio](url), @[file](url), @[pdf](url)

  • Table of contents: [TOC]

Create a child page:

{
  "parent": { "page_id": "parent-page-uuid-here" },
  "title": "Meeting Notes",
  "content": "## Agenda\n\n1. Review progress\n2. Next steps"
}

Create a database entry:

{
  "parent": { "data_source_id": "data-source-uuid-here" },
  "title": "Bug Report",
  "content": "## Steps to Reproduce\n\n1. Login\n2. Open settings\n\n## Expected Behavior\n\nShould display correctly",
  "properties": {
    "Status": { "status": { "name": "Open" } }
  },
  "icon": "🐛"
}

Token Comparison:

Method

Tokens

Reduction

create-page (blocks)

~152

-

create-page-simple (markdown)

~26

83%

update-page

Update a page's properties, icon, cover, archive status, or lock status.

Parameters:

  • page_id (required): The ID of the page to update

  • properties (optional): Properties to update

  • icon (optional): Icon (set to null to remove)

  • cover (optional): Cover image (set to null to remove)

  • archived (optional): Set to true to archive

  • is_locked (optional): Lock the page to prevent edits in the UI

{
  "page_id": "page-uuid-here",
  "properties": {
    "Status": {
      "status": { "name": "Done" }
    }
  },
  "is_locked": true
}

query-data-source

Query a data source with optional filters and sorts.

Parameters:

  • data_source_id (required): The ID of the data source to query

  • filter (optional): Filter conditions as a JSON object

  • sorts (optional): Sort conditions as an array

  • start_cursor (optional): Cursor for pagination

  • page_size (optional): Number of results to return (1-100)

  • format (optional): Output format - "simple" (default) or "json"

    • simple: Returns simplified property values with reduced token usage

    • json: Returns raw Notion API response

{
  "data_source_id": "data-source-uuid-here",
  "filter": {
    "property": "Status",
    "status": { "equals": "In Progress" }
  },
  "sorts": [
    { "property": "Created", "direction": "descending" }
  ],
  "format": "simple"
}

create-database

Create a new database as a subpage of an existing page.

Parameters:

  • parent_page_id (required): The ID of the parent page

  • properties (required): Database schema with at least one title property

  • title (optional): Database title as rich text array

  • icon (optional): Icon for the database

  • cover (optional): Cover image for the database

  • is_inline (optional): If true, creates an inline database

{
  "parent_page_id": "parent-page-uuid",
  "properties": {
    "Name": { "title": {} },
    "Status": { "select": { "options": [{ "name": "Todo" }, { "name": "Done" }] } },
    "Priority": { "number": {} }
  },
  "title": [{ "type": "text", "text": { "content": "Task Database" } }]
}

update-database

Update an existing database container (title, description, icon, cover).

Note: For schema (properties/columns) updates, use update-data-source instead.

Parameters:

  • database_id (required): The ID of the database to update

  • title (optional): New title as rich text array

  • description (optional): New description as rich text array

  • icon (optional): Icon (set to null to remove)

  • cover (optional): Cover image (set to null to remove)

  • is_inline (optional): If true, creates an inline database

  • archived (optional): Set to true to archive

  • is_locked (optional): Lock the database to prevent edits in the UI

{
  "database_id": "database-uuid-here",
  "title": [{ "type": "text", "text": { "content": "New Title" } }],
  "is_locked": true
}

retrieve-data-source

Retrieve a data source schema by its ID.

Parameters:

  • data_source_id (required): The ID of the data source

  • format (optional): Output format - "simple" (default) or "json"

{
  "data_source_id": "data-source-uuid-here",
  "format": "simple"
}

update-data-source

Update a data source schema (properties/columns).

Parameters:

  • data_source_id (required): The ID of the data source to update

  • properties (optional): Properties to add, update, or delete (set to null)

{
  "data_source_id": "data-source-uuid-here",
  "properties": {
    "NewColumn": { "rich_text": {} },
    "OldColumn": null
  }
}

Search across all pages and data sources.

{
  "query": "search term",
  "filter": { "value": "page", "property": "object" }
}

Filter values: "page" or "data_source"

get-block-children

Get the child blocks of a page or block.

Parameters:

  • block_id (required): The ID of the block or page to get children from

  • start_cursor (optional): Cursor for pagination

  • page_size (optional): Number of results to return (1-100)

  • format (optional): Output format - "markdown" (default), "simple", or "json"

    • markdown: Returns human-readable markdown with significantly reduced token usage (~96% reduction)

    • simple: Returns ID + type + markdown content (lightweight, for deletion target selection)

    • json: Returns raw Notion API response

  • fetch_nested (optional): When format="markdown", fetch nested children blocks recursively (default: false)

{
  "block_id": "page-or-block-uuid-here",
  "format": "markdown",
  "fetch_nested": true
}

Get block IDs for deletion:

{
  "block_id": "page-or-block-uuid-here",
  "format": "simple"
}

Returns:

{
  "blocks": [
    { "id": "abc123", "type": "heading_1", "content": "# Title" },
    { "id": "def456", "type": "paragraph", "content": "Some text" }
  ],
  "has_more": false
}

append-block-children

Append new blocks to a page or block.

{
  "block_id": "page-or-block-uuid-here",
  "children": [
    {
      "type": "paragraph",
      "paragraph": {
        "rich_text": [{ "text": { "content": "New paragraph" } }]
      }
    }
  ]
}

append-blocks-simple ⭐

Append blocks using Markdown. ~80% fewer output tokens compared to append-block-children.

Parameters:

  • block_id (required): The page or block ID to append to

  • content (required): Content in Markdown

  • after (optional): Insert after this block ID

Same Markdown support as create-page-simple.

{
  "block_id": "page-or-block-uuid-here",
  "content": "# New Section\n\nThis is **important** content with a [link](https://example.com).\n\n- Item 1\n- Item 2\n\n```javascript\nconst x = 1;\n```"
}

Token Comparison:

Method

Tokens

Reduction

append-block-children (blocks)

~201

-

append-blocks-simple (markdown)

~42

79%

replace-page-content ⭐

Replace all content of a page with new Markdown content. Automatically preserves child_database and child_page blocks.

Parameters:

  • page_id (required): The page ID to update

  • content (required): New content in Markdown

  • dry_run (optional): Preview which blocks will be deleted without making changes (default: false)

⚠️ Warning: Blocks not representable in Extended Markdown (table_of_contents, synced_block, etc.) will be DELETED. Use dry_run: true to preview before executing.

Use when: You want to completely rewrite page content without finding individual block IDs.

Same Markdown support as create-page-simple.

{
  "page_id": "page-uuid-here",
  "content": "# New Page Title\n\nThis is the new content.\n\n## Section 1\n\n- Item 1\n- Item 2"
}

Preview deletions (dry run):

{
  "page_id": "page-uuid-here",
  "content": "# New content",
  "dry_run": true
}

find-and-replace-in-page ⭐

Find text in a page and replace it with new content. Supports regex patterns for advanced matching.

Parameters:

  • page_id (required): The page ID to search in

  • find (required): Text to find (string or regex pattern)

  • replace (required): Replacement text (supports Markdown: **bold**, *italic*, etc.)

  • use_regex (optional): If true, treat find as a regex pattern (default: false)

Use when: You want to update specific text without rewriting the entire page.

{
  "page_id": "page-uuid-here",
  "find": "old text",
  "replace": "**new text**"
}

With regex:

{
  "page_id": "page-uuid-here",
  "find": "item\\d+",
  "replace": "updated item",
  "use_regex": true
}

delete-blocks-batch

Delete multiple blocks by their IDs. Blocks are deleted sequentially to respect API rate limits (3 req/s).

Parameters:

  • block_ids (required): Array of block IDs to delete (max 100)

Use when: You want to delete specific blocks. Use get-block-children with format="simple" to get block IDs first.

{
  "block_ids": ["block-uuid-1", "block-uuid-2", "block-uuid-3"]
}

Returns:

{
  "deleted_count": 3,
  "failed_count": 0,
  "deleted": ["block-uuid-1", "block-uuid-2", "block-uuid-3"]
}

clear-page-content

Delete all content from a page. By default, preserves child_database and child_page blocks.

Parameters:

  • page_id (required): The page ID to clear

  • preserve_types (optional): Block types to preserve (default: ["child_database", "child_page"]). Set to [] to delete all.

Use when: You want to delete all content from a page without selecting individual blocks.

{
  "page_id": "page-uuid-here"
}

Delete everything (including child databases/pages):

{
  "page_id": "page-uuid-here",
  "preserve_types": []
}

Returns:

{
  "deleted_count": 15,
  "failed_count": 0
}

create-comment

Add a comment to a page.

{
  "page_id": "page-uuid-here",
  "rich_text": [{ "type": "text", "text": { "content": "This is a comment" } }]
}

create-comment-simple ⭐

Add a comment using Markdown. Simpler than create-comment.

Parameters:

  • page_id (required): The ID of the page

  • content (required): Comment in Markdown

  • discussion_id (optional): Reply to existing thread

{
  "page_id": "page-uuid-here",
  "content": "This is **important** with a [link](https://example.com)"
}

Development

# Install dependencies
pnpm install

# Run in development mode
pnpm dev

# Build for production
pnpm build

# Type check
pnpm typecheck

# Lint
pnpm lint

# Format code
pnpm format

# Run tests
pnpm test

# Run tests in watch mode
pnpm test:watch

License

MIT

Available Tools

32 tools
append-block-childrenA

Append new blocks as children to a block or page. Supports all block types: paragraph, headings, lists, code, images, etc. Returns the created block IDs. Use the "after" parameter to insert blocks at a specific position.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYesBlock or page ID
childrenYesBlock objects array
afterNoInsert after this block ID

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description fully bears the responsibility. It mentions the tool returns created block IDs, but does not disclose other behavioral aspects like whether the operation is reversible, permission requirements, or rate limits. Adequate but minimal 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.

Conciseness5/5

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

The description is concise—two sentences with no wasted words. The purpose is front-loaded, and the tip is relevant and brief.

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 output schema, no enums), the description covers the purpose, supported types, output, and a usage tip. It is largely complete but could elaborate on the expected structure of the 'children' array.

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 100%, so baseline is 3. The description adds value by explaining that 'children' supports all block types and clarifies the 'after' parameter's purpose, going beyond the schema descriptions.

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 'Append new blocks as children to a block or page', specifying the verb and resource. It lists supported block types, adding clarity. However, it does not explicitly differentiate from sibling tools like append-blocks-simple, which limits it to a 4.

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 a tip on using the 'after' parameter for positioning but lacks any guidance on when to use this tool versus alternatives (e.g., append-blocks-simple, create-page). No explicit when-not or comparative context.

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

append-blocks-simpleA

Append blocks to a page using Markdown. Simpler than append-block-children: just provide markdown text. Markdown: # headings, - lists, - [ ] checkboxes, ``` code, > quotes, | tables |, images, bold, italic, strike, code, links. Extended: toggle, > [!NOTE/WARNING/TIP/IMPORTANT/CAUTION] callout, $$ equation, /++ underline, {color:x}{/color}, {bg:x}{/bg}, bookmark, :::columns, @embed/video/audio/file/pdf, [TOC] table of contents. Returns created block IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYesBlock or page ID
contentYesContent in Markdown
afterNoInsert after this block ID

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full behavioral burden. It explains the action (append), supported markdown features, and return value (created block IDs). However, it does not disclose error handling, permission requirements, or limitations.

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 purpose and comparison, but the extensive list of markdown syntax makes it longer than necessary. Still, every sentence is informative and well-structured.

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 the return value and markdown format comprehensively, and compares to a sibling tool. However, it could include information about error conditions or required permissions for full 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 coverage is 100%, setting baseline at 3. The description adds value by detailing supported markdown syntax for the content parameter, which goes beyond the schema's simple 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 it appends blocks to a page using Markdown, and explicitly distinguishes from the sibling tool append-block-children by highlighting its simplicity and markdown input.

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 clear context for when to use this tool over append-block-children ('Simpler than...'), but does not explicitly state when not to use it or mention other alternatives.

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

archive-databaseA

Move a database to trash. Recoverable for 30 days via Notion UI. Returns database ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
database_idYesDatabase ID

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses key behaviors: moves to trash (not permanent), recoverable for 30 days, and returns database ID. However, it omits details like permissions needed or effects on child blocks.

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 with one short sentence covering action, recoverability, and return value. 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?

For a simple one-parameter tool, the description covers the main points: action, recovery window, and output. It lacks details on output format or side effects, but is adequate given the tool's simplicity.

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 100% for the single 'database_id' parameter, which has a minimal schema description. The tool description adds no further meaning beyond the schema, meeting the baseline for full 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 'Move a database to trash' and the resource 'database'. It distinguishes from sibling tools like 'archive-page' by specifying the target is a database, and notes recoverability and return value.

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 does not explicitly state when to use this tool versus alternatives like 'delete-block' or 'archive-page'. It implies use for trashing a database but lacks guidance on exclusions or prerequisites.

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

archive-pageA

Move a page to trash. Recoverable for 30 days via Notion UI. Returns page ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesPage ID

TDQS

A3.6/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses that the action is reversible (30-day recovery) and returns a page ID, but does not mention permissions, side effects, or what happens if page already trashed.

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?

Two sentences, front-loaded with action, no unnecessary words. Highly 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?

For a simple tool with one parameter and no output schema, the description covers the core purpose and a key behavioral fact (recoverable). Minor gaps: missing error conditions or prerequisites.

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 100% for the single parameter 'page_id' (described as 'Page ID'). The description adds no additional meaning beyond what the schema already provides, so baseline of 3 is appropriate.

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 ('Move a page to trash') and the resource (page), differentiating from siblings like 'delete-block' or 'archive-database'. It also specifies recovery period and return value.

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 vs alternatives such as 'delete-block' or 'archive-database'. The description lacks explicit context for agent decision-making.

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

clear-page-contentA

Delete all content from a page. By default, preserves child_database and child_page blocks. Use preserve_types=[] to delete everything. For deleting specific blocks, use delete-blocks-batch instead. Blocks are deleted sequentially to respect API rate limits (3 req/s). Returns count of deleted blocks.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesPage ID
preserve_typesNoBlock types to preserve (default: ["child_database", "child_page"]). Set to empty array [] to delete all.

TDQS

A4.4/5.0
Behavior4/5

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

Discloses sequential deletion to respect API rate limits (3 req/s) and returns count of deleted blocks. No annotations exist, so description carries full behavioral burden. Could mention permissions but adequate.

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, each purposeful: states purpose, default behavior with alternative, and behavioral detail with return info. No 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 two params, no annotations, no output schema, description covers purpose, usage, behavior, and return value. Could mention reversibility or limits but sufficient for simple 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?

Schema has 100% description coverage, so baseline 3. Description adds default value behavior for preserve_types and suggests empty array to delete all, adding value beyond 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?

Description clearly states 'Delete all content from a page' and contrasts with sibling tool 'delete-blocks-batch' for deleting specific blocks. Verb and resource are explicit.

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 states default preservation behavior and how to delete everything (use preserve_types=[]). Also directs to sibling tool for specific block deletion. No exclusions but clear when to use.

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

create-commentA

Add a comment to a Notion page. Creates a new discussion or adds to an existing one. Comments support rich text formatting (bold, italic, links, etc.). Use discussion_id to reply to an existing comment thread. Returns the created comment ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idNoPage ID
block_idNoBlock or page ID
discussion_idNoDiscussion ID (for replies)
rich_textYesRich text array

TDQS

A4/5.0
Behavior3/5

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

No annotations provided; the description states it creates comments (write operation) and returns the created comment ID, but does not disclose permissions, rate limits, or side effects beyond the basic mutation.

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, no fluff, front-loaded with purpose, and efficiently structured to convey core functionality and usage variant.

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 no output schema, the description states the return value; it covers key usage variants (new comment vs reply) and rich text support; though missing error or permission details, it is reasonably complete for a straightforward creation tool.

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 100% with parameter descriptions; the description adds context about discussion_id for replying and rich text support, but does not significantly extend 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 adds a comment to a Notion page, distinguishes between new discussion and reply, and is differentiated from the simpler sibling create-comment-simple.

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 (to add a comment) and hints at when to use discussion_id for replies, but does not explicitly list alternatives or when-not-to-use contexts beyond immediate scenarios.

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

create-comment-simpleA

Add a comment using Markdown. Simpler than create-comment. Returns comment ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idNoPage ID
block_idNoBlock or page ID
discussion_idNoDiscussion ID (for replies)
contentYesContent in Markdown

TDQS

A3.9/5.0
Behavior3/5

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

Without annotations, the description carries the full burden. It discloses that the tool mutates state and returns a comment ID, but lacks details on permissions, side effects, or rate limits, which is 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 two sentences, front-loaded with the main action, and contains no redundant information.

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 and return value, it does not provide guidance on how the four parameters relate or when each is needed, leaving some gaps for a tool with multiple parameters.

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 100%, so the baseline is 3. The description adds minimal value beyond the schema; it mentions Markdown for the content parameter but does not explain the other parameters' usage.

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 it adds a comment using Markdown, returns comment ID, and distinguishes from the sibling create-comment by indicating it is simpler.

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?

It provides clear context by noting it is simpler than create-comment, implying when to use this tool. However, it does not explicitly state when not to use it or mention alternatives.

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

create-databaseA

Create a new database as a subpage of an existing Notion page. Requires a parent_page_id and properties object defining the database schema. Each database must have exactly one title property. Returns database ID and URL. (API version 2025-09-03)

ParametersJSON Schema
NameRequiredDescriptionDefault
parent_page_idYesParent page ID
titleNoTitle
propertiesYesProperty schema (must include one title property)
iconNoIcon { type: "emoji", emoji: "📝" } or { type: "external", external: { url: "..." } }
coverNoCover image { type: "external", external: { url: "..." } }
is_inlineNoInline database

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 fully covers behavior: it creates a new database, requires specific inputs, enforces a schema constraint, and returns database ID and URL. It does not mention error scenarios or rate limits, but the core behavior is 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 three sentences with no filler. It front-loads the main purpose, then lists requirements and outputs. Every sentence earns its place.

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 (6 params, nested objects, no output schema), the description covers inputs, constraints, and output. It could elaborate on error handling or more details about the properties schema, but it is sufficient for typical use.

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 100%, but the description adds value by explaining that 'properties' defines the database schema, mandates one title property, and mentions the return format and API version. This goes beyond the schema's field 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 ('Create a new database'), the resource ('as a subpage of an existing Notion page'), and distinguishes it from siblings like create-page which creates a page, not a database.

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 implies when to use it (to create a database subpage) and lists required inputs (parent_page_id, properties) and constraints (exactly one title property). It does not explicitly state when not to use it or name alternatives, but the distinction from siblings is clear.

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 page in Notion. Specify parent as either page_id (to create a child page) or data_source_id (to create a database entry). Optionally include initial content blocks, icon, and cover image. Returns the created page ID and URL. (API version 2025-09-03)

ParametersJSON Schema
NameRequiredDescriptionDefault
parentYesParent (provide either page_id or data_source_id)
propertiesYesProperties object
childrenNoBlock objects array
iconNoIcon { type: "emoji", emoji: "📝" } or { type: "external", external: { url: "..." } }
coverNoCover image { type: "external", external: { url: "..." } }

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 carries full burden. It discloses creation action and return values (ID, URL) and API version, but lacks details on auth requirements, side effects, or rate limits. Adequate but not exhaustive.

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?

Two sentences front-load purpose, followed by clear parent options and optional content, with return value. No superfluous words; every sentence serves a purpose.

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, parent distinction, optional fields, return value. Does not detail properties object or children array format, but input schema provides that. Considering no output schema, description is sufficiently 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 coverage is 100%, but description adds value by explaining the distinction between page_id and data_source_id and summarizing optional parameters (blocks, icon, cover). Goes beyond baseline 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?

Clearly states 'Create a new page in Notion' with specific verb and resource. Distinguishes from siblings like create-database and create-page-simple by specifying parent options (page_id vs data_source_id) and optional content.

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 guidance on when to use page_id vs data_source_id, but does not explicitly exclude cases where simpler tools (e.g., create-page-simple) are preferable, leaving some ambiguity.

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

create-page-simpleB

Create a page with Markdown. Specify parent as either page_id (child page) or data_source_id (database entry). Title is auto-mapped to the title property. # headings, - lists, - [ ] checkboxes, ``` code, > quotes, | tables |, bold, italic, links, toggle, > [!NOTE] callout, $$ equation, [TOC] table of contents.

ParametersJSON Schema
NameRequiredDescriptionDefault
parentYesParent (provide either page_id or data_source_id)
titleYesTitle
contentNoContent in Markdown
propertiesNoProperties object
iconNoEmoji character (e.g. "📝", "🐛", "✅"). Must be an actual emoji, not a name.

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description adds some behavioral context: parent can be page_id or data_source_id, title is auto-mapped, and supported Markdown syntax is listed. However, it lacks details about error handling, permission requirements, or what happens if both parent fields are provided.

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 purpose. It contains no fluff, though the Markdown syntax list could be more structured. 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?

Given the tool has 5 parameters and no output schema or annotations, the description covers parent and content well but leaves gaps: properties and icon are not explained in depth, return value is omitted, and no comparison to siblings is provided.

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 100% (baseline 3). The description adds meaningful context for 3 of 5 parameters: clarifies parent options, explains title auto-mapping, and lists supported Markdown features for content. Icon gets slight enhancement with examples.

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 creates a page using Markdown, with specific verb 'Create' and resource 'page'. However, it does not explicitly differentiate from sibling tools like 'create-page', leaving some ambiguity.

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 (e.g., 'create-page' or 'create-database'). It does not mention prerequisites, limitations, or conditions that would help an agent decide.

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

delete-blockA

Delete a block by its ID. The block will be archived (moved to trash). Returns deleted block ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYesBlock or page ID

TDQS

A4/5.0
Behavior4/5

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

Discloses critical behavior: block is archived (moved to trash) and returns deleted block ID. Could add more on reversibility or permissions, but sufficient for a simple delete 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?

Two concise sentences: action then behavioral detail. No unnecessary 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?

Adequate for a single-param tool without output schema. Explains archiving and return value, but could mention error handling for invalid IDs.

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 already covers parameter with description 'Block or page ID' (100% coverage). Description adds no extra meaning beyond that.

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?

Clear verb 'delete' and resource 'block'. States archiving behavior, distinguishing from siblings like archive-page or delete-blocks-batch.

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?

Implied usage for single block deletion, but no explicit when-to-use, alternatives (e.g., delete-blocks-batch for multiple), or exclusion criteria.

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

delete-blocks-batchA

Delete multiple blocks by their IDs. Use this when you want to delete specific blocks. For deleting all content from a page, use clear-page-content instead. Blocks are deleted sequentially to respect API rate limits (3 req/s). Returns summary of deleted and failed blocks.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idsYesBlock IDs to delete (max 100). Use get-block-children with format="simple" to get IDs.

TDQS

A4.7/5.0
Behavior4/5

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

No annotations exist, so description carries burden. It discloses sequential deletion due to rate limits and that it returns a summary of deleted and failed blocks. Could mention idempotency or handling of non-existent blocks.

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 convey purpose, usage, behavior, and return value with zero fluff and front-loaded key action.

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?

For a simple single-parameter tool with no output schema, the description covers purpose, usage guidelines, behavioral details, and return value, making it complete enough 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?

Schema covers the parameter fully (block_ids with min/max and description). Description adds context on how to get IDs using get-block-children, which is helpful extra guidance.

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 'Delete multiple blocks by their IDs' and distinguishes from 'clear-page-content' for deleting all content from a page, and implicitly from sibling 'delete-block' for single blocks.

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 (delete specific blocks) and when to use alternative (clear-page-content for all content), plus mentions rate limit behavior for sequential deletion.

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

find-and-replace-in-pageA

Find text in a page and replace it with new content. Supports regex patterns (use_regex: true) for advanced matching (e.g., "item\d+" matches item1, item2). All matching blocks will be updated. Replacement text supports Markdown formatting: bold, italic, strikethrough, code, links. Only works with text-based blocks: paragraph, headings, lists, to_do, quote, callout, toggle. Use this for partial updates. For full page rewrite, use replace-page-content instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesPage ID
findYesText to find (string or regex pattern if use_regex is true)
replaceYesReplacement text (supports Markdown: **bold**, *italic*, etc.)
use_regexNoIf true, treat find as a regex pattern (default: false)

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so the description carries full burden. It discloses that the tool supports regex patterns, Markdown formatting in replacement, and only works with specified text-based blocks. It does not cover error cases or side effects, but for a simple find-and-replace, this is adequate.

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 at about 6 sentences, with the main purpose front-loaded. Each sentence adds information without redundancy. Slightly verbose but 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 tool's low parameter count (4) and no output schema or annotations, the description provides sufficient detail on functionality, limitations, and examples. It covers regex, Markdown, block types, and sibling differentiation. Could mention error handling, but not essential.

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 100%, baseline 3. The description adds value by explaining regex usage with an example and detailing Markdown formatting support, which is not in the schema. It also lists supported block types, providing practical context.

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 action: 'Find text in a page and replace it with new content.' It specifies the resource (a page) and distinguishes from the sibling tool 'replace-page-content' by noting partial vs full updates.

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 states when to use this tool: 'Use this for partial updates' and when not: 'For full page rewrite, use replace-page-content instead.' This provides clear guidance on alternatives.

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

get-block-childrenA

Retrieve the children blocks of a block or page. Returns paginated results. Use format='markdown' (default) for human-readable output with significantly reduced token usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYesBlock or page ID
start_cursorNoPagination cursor from previous response
page_sizeNoNumber of results (1-100)
formatNoOutput format: 'markdown' (default, human-readable), 'simple' (ID + type + content, for deletion), 'json' (full API response)markdown
fetch_nestedNoFetch nested children recursively (WARNING: many API calls)

TDQS

A3.9/5.0
Behavior3/5

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

Discloses pagination and reduced token usage with markdown, but lacks details on rate limits, error handling, or behavior when block_id is invalid. With no annotations, the description carries full behavioral burden and misses several traits.

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: purpose, pagination note, format recommendation. No fluff, well front-loaded.

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?

Covers pagination and format, but fails to mention the expensive recursive fetch_nested behavior (only noted in schema). No output schema means description could explain response structure. For 5 parameters, more completeness is needed.

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 100%, baseline 3. The description adds value by highlighting that markdown format reduces token usage and that pagination is supported, which reinforces the start_cursor and page_size parameters. Somewhat informative 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 retrieves children blocks of a block or page, with specific verb and resource. It distinguishes from siblings like 'retrieve-block' which gets a single block, and 'append-block-children' which adds 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?

Provides some guidance on using format='markdown' for token efficiency, but no explicit when-to-use vs alternatives or when-not-to-use. For a read tool, more context on when to prefer this over other retrieval tools would improve.

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

list-commentsA

List comments on a page or block. Either block_id or page_id must be provided. Returns a paginated list of comments with their content and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idNoBlock or page ID
page_idNoPage ID
start_cursorNoPagination cursor from previous response
page_sizeNoNumber of results (1-100)

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Mentions pagination and return content, but lacks details on read-only nature, authentication, or error handling for missing required parameters.

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?

Two sentences that are concise and front-loaded. Every sentence adds essential information with no unnecessary 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?

For a list tool with 4 parameters and no output schema, the description adequately explains return content (comments with content and metadata). Lacks deep detail on response structure but sufficient for selection.

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 100%, baseline 3. The description adds value by specifying mutual exclusivity of block_id and page_id, which is not in the 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 lists comments on a page or block, with specific verb and resource. It distinguishes from sibling tools like create-comment and create-comment-simple.

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 a clear constraint: either block_id or page_id must be provided. Does not explicitly state when not to use or alternatives, but the utility is clear given sibling context.

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. Returns paginated list of users with their IDs, names, and types (person or bot).

ParametersJSON Schema
NameRequiredDescriptionDefault
start_cursorNoPagination cursor from previous response
page_sizeNoNumber of results (1-100)

TDQS

A3.8/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 the full burden. It mentions pagination and return fields, but does not disclose potential behaviors like rate limits, authentication requirements, or ordering. The information is adequate but not rich.

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 consists of two concise sentences that front-load the purpose and key details. Every word adds value, with no filler or repetition.

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 no output schema, the description adequately explains return values (IDs, names, types). Parameters are well-covered by the schema. Missing details like sorting order are not critical, making the description sufficiently complete for a simple list tool.

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 100%, so the schema fully describes both parameters (start_cursor, page_size). The description adds no additional meaning to the parameters beyond what is already in the schema, resulting in a baseline 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 clearly states the verb 'List', resource 'all users in the workspace', and the return fields (IDs, names, types). It distinguishes itself from sibling tools like 'retrieve-user' which targets a single user.

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 when-to-use or when-not-to-use guidance is provided. The description implies usage for listing all users, but does not mention alternatives such as 'retrieve-user' for specific users. Usage context is implied but not explicit.

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

move-pageA

Move a page to a new parent (page or data source). Provide either page_id or data_source_id as the new parent. Returns page ID and URL. (API version 2025-09-03)

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesPage ID
parentYesParent (provide either page_id or data_source_id)

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 the burden. It mentions return values (page ID and URL) and API version, but does not disclose behavioral traits like what happens to page children 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.

Conciseness5/5

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

Two sentences, front-loaded with action, includes essential information (parent options, return values, API version). 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 tool's complexity (2 parameters, nested object, no output schema, no annotations), the description is largely complete, covering purpose, parameters, and return. Could mention effect on children or immediate execution for full 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 coverage is 100% with descriptions for each property. The description adds value by clarifying that either page_id or data_source_id should be provided inside the parent object, and states the return values, going 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 action ('Move a page') and the resource ('to a new parent'), specifying two possible parent types (page or data source). This distinguishes it from sibling tools like update-page or archive-page.

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 how to use the tool by mentioning 'Provide either page_id or data_source_id', but does not explicitly state when to use this tool vs alternatives like update-page, nor does it mention prerequisites or exclusions.

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

query-data-sourceA

Query a Notion data source with optional filters and sorts. Returns paginated results. Use format='simple' (default) for human-readable output with reduced token usage. Use fields parameter to limit which properties are returned (simple format only). (API version 2025-09-03)

ParametersJSON Schema
NameRequiredDescriptionDefault
data_source_idYesData source ID
filterNoFilter object. Example: {"property":"Status","select":{"equals":"Done"}}
sortsNoSort array. Example: [{"property":"Date","direction":"descending"}]
start_cursorNoPagination cursor from previous response
page_sizeNoNumber of results (1-100)
formatNoOutput format: 'simple' or 'json'simple
fieldsNoProperty names to include in response (simple format only). Example: ["Name", "Status", "Date"]

TDQS

A3.9/5.0
Behavior3/5

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

Mentions pagination and API version, which are useful behavioral details. However, no annotations exist, and the description does not disclose whether the operation is read-only or any side effects, though it is implied by 'Query'. Adequate but not 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, front-loaded with the core purpose in the first sentence, followed by key details on pagination and format. No wasted words.

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?

Covers pagination and format choices, but lacks description of return structure (e.g., array of objects). Without output schema, more detail on the response format would improve completeness. Acceptable for a query tool with many parameters.

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?

Adds value beyond the input schema by explaining the default 'simple' format, the restriction of fields to simple format, and pagination cursor usage. With 100% schema coverage, this is above baseline 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?

Clearly states the verb 'Query' and the resource 'Notion data source', with optional filters, sorts, and pagination. Distinguishes from retrieval tool (retrieve-data-source) which likely returns a single source without filtering.

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?

Provides usage guidance for format and fields parameters, but does not explicitly state when to use this tool versus alternatives like retrieve-data-source or other query-like tools. Implies usage for filtered queries but lacks 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.

replace-page-contentA

Replace all page content with Markdown. Preserves child_database/child_page only. WARNING: Non-Markdown blocks (bookmark, callout, equation, etc.) will be DELETED. Use dry_run: true to preview deletions. For partial updates, use find-and-replace-in-page.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesPage ID
contentYesContent in Markdown
dry_runNoPreview mode: shows which blocks will be deleted without actually modifying the page (default: false)

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 fully discloses the destructive behavior: non-Markdown blocks will be deleted. It also warns and suggests a preview. While additional details like authentication requirements or rate limits are missing, the disclosure is sufficient for safe operation.

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, each serving a distinct purpose: purpose, warning, and alternative. Highly concise and front-loaded, with no wasted words.

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 simple parameter set (3 params, no nested objects, no output schema) and the presence of sibling tools indicating alternatives, the description covers all necessary guidance: what the tool does, its destructive nature, how to preview, and when to use an alternative. The agent can make an informed decision.

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 100%, but the description adds meaning beyond the schema: it clarifies that 'content' must be Markdown and explains the effect of using it, and highlights that 'dry_run' previews deletions. This enriches the agent's understanding of how parameters affect 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 ('Replace all page content') and the resource ('with Markdown'), and distinguishes from sibling tools by specifying it replaces all content and preserves only child_database/child_page. This gives the agent a precise understanding of the tool's function.

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 provides when to use ('replace all page content with Markdown'), when not to use (for partial updates, 'use find-and-replace-in-page'), and a safety mechanism ('Use dry_run: true to preview deletions'). This guides correct invocation and prevents misuse.

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

retrieve-blockA

Retrieve a single block by its ID. Returns block content and metadata. Use format='markdown' (default) for human-readable output, 'json' for full Notion API response.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYesBlock or page ID
formatNoOutput format: 'simple' or 'json'

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description carries burden. Mentions output formats but omits error handling, permissions, or side effects. Adequate for a read operation.

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?

Two sentences, front-loaded with 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?

Covers key aspects: retrieval, content/metadata, format options. Minor omission: doesn't mention block_id can be page ID, but schema covers it.

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?

Adds value for format parameter but contains inconsistency: description says 'simple' while enum says 'markdown' and 'json'. Block_id not elaborated beyond 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?

Clearly states the tool retrieves a single block by ID and returns content and metadata. Distinguishes from sibling tools like get-block-children and update-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?

Provides format guidance (markdown vs json) but lacks explicit when-to-use vs alternatives or 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.

retrieve-bot-userA

Retrieve information about the current bot user (the integration). Returns the bot ID, name, avatar, and owner information.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

The description indicates a read-only operation ('Retrieve'), but with no annotations, it does not explicitly state safety or side effects. However, the verb 'retrieve' strongly implies no mutation, and the description adds return details.

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?

Single sentence with no waste. Information is front-loaded and clear.

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?

For a zero-parameter tool with no output schema, the description fully covers the tool's purpose and return values. No gaps remain.

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?

No parameters exist (schema coverage 100%), so no additional meaning is needed. The description adds value by listing the return fields, which is beyond the empty 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?

Description clearly states it retrieves info about the current bot user (integration) and lists specific return fields (bot ID, name, avatar, owner). This distinguishes it from siblings like 'retrieve-user' which likely targets human users.

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 lacks explicit guidance on when to use this tool versus alternatives. While the phrase 'current bot user' implies it's for integrations only, no comparison to 'retrieve-user' or exclusionary context is provided.

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

retrieve-databaseA

Retrieve a database container by its ID. Returns database metadata and associated data sources. Note: In API 2025-09-03, database properties/schema are retrieved via retrieve-data-source using data_source_id. Use format='simple' (default) for reduced token usage, 'json' for full Notion API response.

ParametersJSON Schema
NameRequiredDescriptionDefault
database_idYesDatabase ID
formatNoOutput format: 'simple' or 'json'simple

TDQS

A4.3/5.0
Behavior4/5

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

No annotations given, so description carries full burden. Discloses return type (metadata and data sources), format options, token usage implications, and API version note. Could be more explicit about what 'associated data sources' means, but sufficient for a read operation.

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?

Two sentences plus a note, no redundant information. Every sentence serves a purpose: purpose, return value, usage guidance. Efficiently structured.

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?

Returns vague 'database metadata and associated data sources' without details on fields. No output schema to compensate. With many sibling tools, more specificity would help agents understand what to expect. Adequate but not comprehensive.

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 covers 100% of parameters. Description adds value by explaining 'format' parameter usage: 'simple' reduces tokens, 'json' gives full Notion API response. This helps agents choose correctly.

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 verb 'Retrieve' and resource 'database container by its ID'. Describes return type: metadata and associated data sources. Distinguishes from siblings like 'retrieve-page' and 'retrieve-block'. Also notes alternative for schema via 'retrieve-data-source'.

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 context: retrieve database metadata, and for schema use 'retrieve-data-source'. Includes guidance on format parameter for token usage. Lacks explicit when-not-to-use, but the note effectively steers agents away from using this for schema.

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

retrieve-data-sourceA

Retrieve a data source schema by its ID. Returns data source properties (columns) and their types. Use format='simple' (default) for reduced token usage, 'json' for full Notion API response. (API version 2025-09-03)

ParametersJSON Schema
NameRequiredDescriptionDefault
data_source_idYesData source ID
formatNoOutput format: 'simple' or 'json'simple

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 bears full burden. It adds API version and format token usage info, but lacks details on auth requirements, rate limits, or error handling. It is adequate but not 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?

The description is three sentences with no wasted words. It front-loads the main purpose and provides necessary details succinctly.

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 no output schema or annotations, the description covers the return value (columns and types), format options, and API version. It is nearly complete but missing error handling context.

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 100%, and the description adds meaning beyond the schema by explaining token usage implications of the 'format' parameter, which is not in the schema 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 verb 'Retrieve', the resource 'data source schema', and what it returns (properties and types). The two format options are explained, and the tool is distinct from siblings like 'query-data-source' and 'update-data-source'.

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 clear guidance on when to use each format ('simple' for reduced token usage, 'json' for full response). However, it does not explicitly compare with sibling tools or give exclusion criteria.

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

retrieve-pageA

Retrieve a Notion page by its ID. Returns the page properties, metadata, and optionally content (blocks as markdown). Use format='simple' (default) for human-readable output with reduced token usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesPage ID
formatNoOutput format: 'simple' or 'json'simple
include_contentNoInclude page content as markdown (default: true)

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 covers the return value (properties, metadata, optional content) and the simple format benefit, but does not disclose error handling, authentication requirements, rate limits, or the behavior when the page is not found.

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 no extra information. The first sentence states the purpose, the second gives a concrete usage tip. Every word is earned.

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 absence of an output schema and annotations, the description covers the core functionality but misses details like error cases, ID format, and the exact structure of the 'json' output. It is functional but not fully comprehensive.

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 100%, and the description adds value by explaining the 'simple' format reduces token usage and that content is optional blocks as markdown. This clarifies the enum and boolean parameters 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 that the tool retrieves a Notion page by its ID and returns properties, metadata, and optional content. It distinguishes itself from siblings like retrieve-page-property or retrieve-block by focusing on the entire page.

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 recommendation for using format='simple' to reduce token usage, but it lacks explicit guidance on when to use this tool versus alternatives (e.g., retrieve-page-property, retrieve-block). No when-not or exclusion criteria are mentioned.

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

retrieve-page-propertyA

Get a property with pagination (for relation/rollup with many items). For simple properties, use retrieve-page instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesPage ID
property_idYesProperty ID (from page properties)
start_cursorNoPagination cursor from previous response
page_sizeNoNumber of results (1-100)

TDQS

A4.2/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 the full burden. It discloses pagination support but does not mention other behavioral traits such as read-only nature, error handling, or rate limits. The description adds some context but is not fully comprehensive for a tool 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?

The description is extremely concise with two sentences, each serving a clear purpose: defining the tool's use case and directing to an alternative. No extraneous information, perfectly front-loaded.

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 moderate complexity (4 parameters) and no output schema, the description is fairly complete. It explains when to use it, but does not describe the return format or pagination cursors in detail. Still, it provides enough context for an agent to correctly select and invoke the tool.

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 100%, so the baseline is 3. The description mentions 'pagination' which implies the use of start_cursor and page_size, but does not add significant meaning beyond the schema descriptions. It adequately complements the schema without overdoing 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 a property with pagination, specifically for relation/rollup with many items. It distinguishes itself from the sibling tool retrieve-page by naming it directly and specifying when to use the alternative.

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?

Explicit usage guidance is provided: use this tool for relation/rollup properties with many items, and for simple properties, use retrieve-page instead. This tells the agent when to choose this tool over its sibling.

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

retrieve-userA

Retrieve a user by their ID. Returns user information including name, avatar, and type (person or bot).

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesUser ID

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries full behavioral burden. It discloses the return structure (name, avatar, type) but does not mention error handling (e.g., user not found), authentication requirements, rate limits, or side effects. Basic transparency but missing important context.

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 long, front-loads the purpose, and contains no redundant information. Every sentence adds value: first states action, second details returns.

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 tool (one parameter, no output schema), the description covers the core purpose and return info. However, it lacks usage guidelines and behavioral transparency, which slightly reduces completeness.

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 100% and the description adds no extra meaning beyond 'User ID'. The description does not specify format or constraints, but the schema already provides the string type and required status. Baseline score is appropriate.

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 'retrieve', the resource 'user', and specifies the returned fields (name, avatar, type). It distinguishes from siblings like 'list-users' and 'retrieve-bot-user' by the focus on a single user by ID.

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 when a user ID is known, but does not explicitly state when to use this tool over alternatives (e.g., 'list-users' for multiple users, 'retrieve-bot-user' for bot-specific info). No exclusions or conditions are mentioned.

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

update-blockA

Update a block by its ID. Provide the block type and its properties. Example: { "paragraph": { "rich_text": [{ "text": { "content": "Updated text" } }] } }. Set archived to true to move the block to trash. Returns updated block ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYesBlock or page ID
blockYesBlock data with type-specific properties
archivedNoArchive status

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations present, description carries disclosure burden. It mentions the effect of archived (move to trash) and return value (block ID), but omits details on idempotency, partial updates, error states, or concurrent modification 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?

Three concise sentences covering purpose, example, and archive behavior. No redundant information, though example could be separated for clarity.

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 nested objects and no output schema, description lacks details on valid block types, error conditions, and the fact that block_id can be a page ID (schema states but description omits). Adequate but not fully 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 coverage is 100%, baseline 3. Description adds value by clarifying archived effect and providing a concrete example for the block parameter, enhancing meaning beyond schema descriptions.

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?

Description states 'Update a block by its ID' providing clear verb and resource. It does not explicitly distinguish from sibling 'update-block-simple', which likely has a simpler interface.

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?

Provides an example but no explicit guidance on when to use vs alternatives like update-block-simple or delete-block. Usage context is implied but not stated.

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

update-block-simpleA

Update a text block using Markdown. Simpler than update-block: just provide markdown text. Supports inline formatting: bold, italic, strikethrough, code, links. Only works with text-based blocks: paragraph, headings, lists, to_do, quote, callout, toggle. Requires block_id. If you want to update by text search, use find-and-replace-in-page. For full page rewrite, use replace-page-content.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYesBlock or page ID
contentYesContent in Markdown

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It lists supported block types and inline formatting but does not disclose error behavior on invalid block_id or unsupported block types, nor permissions required. Adequate but not comprehensive.

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?

Concise at 4 sentences, each sentence adds distinct value: purpose, comparison, formatting, block types, requirement, alternatives. Slightly longer than minimal but 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 simple tool with 2 required params and no output schema, description covers purpose, acceptable inputs, formatting, and alternative tools. Lacks detail on replacement behavior but sufficient for selection and basic invocation.

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 100% with clear parameter descriptions. The description repeats that content is Markdown and block_id is a block/page ID, adding no new semantic beyond schema. Baseline 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?

Description clearly states 'Update a text block using Markdown', specifies verb and resource, and distinguishes from sibling tools like update-block by noting it is simpler and just requires markdown text.

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?

Provides explicit when-to-use guidance: simpler than update-block, works only with text-based blocks, and suggests alternatives for text search (find-and-replace-in-page) and full page rewrite (replace-page-content).

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

update-databaseA

Update a Notion database container. Can modify title, description, icon, cover, inline status, archive status, and lock status. For schema (properties/columns) updates, use update-data-source instead. Returns database ID and URL. (API version 2025-09-03)

ParametersJSON Schema
NameRequiredDescriptionDefault
database_idYesDatabase ID
titleNoTitle
descriptionNoDescription
iconNoIcon { type: "emoji", emoji: "📝" } or { type: "external", external: { url: "..." } }
coverNoCover image { type: "external", external: { url: "..." } }
is_inlineNoInline database
archivedNoArchive status
is_lockedNoLock to prevent UI edits

TDQS

A3.7/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 states that fields can be modified and returns database ID and URL. It does not mention permissions, reversibility, side effects (e.g., effect of locking on API writes), 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.

Conciseness5/5

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

The description is very concise: three sentences covering purpose, modifiable fields, sibling tool distinction, and return value. Every sentence adds value and is front-loaded.

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 an 8-parameter tool with no output schema, the description covers purpose, fields, and sibling tool differentiation, and mentions return value. However, it lacks behavioral context (e.g., how archiving/locking affects operations) and any error or usage notes. This is adequate but not complete.

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 100% with brief parameter descriptions. The tool description enumerates the fields and adds context about what can be modified, but does not add deeper semantic value beyond the schema. Baseline 3 is appropriate.

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 Notion database container and lists the modifiable fields (title, description, icon, etc.). It explicitly distinguishes from the sibling tool update-data-source for schema updates.

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: for schema (properties/columns) updates, use update-data-source instead. This helps the agent decide when to use this tool versus the alternative. However, no other usage context (e.g., prerequisites or limitations) is given.

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

update-data-sourceA

Update a data source schema (properties/columns). Use this to add, update, or delete properties. Set a property to null to delete it. Returns data source ID. (API version 2025-09-03)

ParametersJSON Schema
NameRequiredDescriptionDefault
data_source_idYesData source ID
propertiesNoProperties to add/update/delete (set to null to delete)

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so the description fully carries the burden. It discloses the deletion behavior (set to null) and return value (data source ID), but does not specify if the update is a merge or replace, or mention side effects, authorization, or rate limits. 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?

Three sentences: purpose, usage instruction, and return/version note. Front-loaded with the action, no unnecessary 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 2 parameters, no output schema, and nested object complexity, the description covers the deletion behavior and return value. It does not explain the structure of the properties object further or mention error states, but 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.

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description repeats the schema info ('Set a property to null to delete it') and adds the return value note, but does not add meaning beyond what the schema already provides for the parameters.

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 'Update a data source schema (properties/columns)' with specific verbs (add, update, delete) and resource (data source schema). It distinguishes from sibling tools like query-data-source by focusing on schema modifications.

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 says 'Use this to add, update, or delete properties' but provides no guidance on when not to use it or alternatives like query-data-source for reading. Usage context is implied but not explicit.

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 Notion page's properties, icon, cover, archive status, or lock status. Partial updates are supported - only provide the fields you want to change. Set icon or cover to null to remove them. Set archived to true to move the page to trash. Set is_locked to true to lock the page in the UI. Returns updated page ID and URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesPage ID
propertiesNoProperties object
archivedNoArchive status
iconNoIcon { type: "emoji", emoji: "📝" } or { type: "external", external: { url: "..." } }
coverNoCover image { type: "external", external: { url: "..." } }
is_lockedNoLock to prevent UI edits

TDQS

A4.4/5.0
Behavior4/5

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

Without annotations, the description carries full burden. It discloses key behaviors: partial updates, removal of icon/cover via null, archiving, locking, and return of page ID and URL. It does not mention permissions or side effects on other properties, but the partial update behavior is clearly stated.

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 4 sentences, each conveying essential information without redundancy. It front-loads the purpose, then covers partial updates, specific field behaviors, and return value. No extraneous text.

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 6 parameters, nested objects (icon, cover), and no output schema, the description covers main behaviors and return value. It could elaborate on the 'properties' object format (e.g., Notion property value structure) and potential side effects, but overall sufficiently 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 coverage is 100% but description adds significant meaning: explains use of null for removal, boolean effects (archive, lock), and the concept of partial updates. It goes beyond schema descriptions, which are minimal for 'properties'.

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 updates a Notion page's properties, icon, cover, archive status, or lock status. It specifically names the resource (page) and the actions (update properties, set icon/cover, archive, lock), distinguishing it from sibling tools like 'update-block' or 'archive-page'.

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 partial updates and provides examples of when to set certain fields (e.g., null to remove, true to archive/lock). However, it does not explicitly contrast with sibling tools like 'archive-page' or 'update-block', leaving ambiguous which tool to use for block-level vs. page-level updates.

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. Dates show when Glama detected each change.

  1. 32 tool updatesv0.14.0
    • First observedappend-block-children
    • First observedappend-blocks-simple
    • First observedarchive-database
    • First observedarchive-page
    • First observedclear-page-content
    • First observedcreate-comment
    • First observedcreate-comment-simple
    • First observedcreate-database
    • First observedcreate-page
    • First observedcreate-page-simple
    • First observeddelete-block
    • First observeddelete-blocks-batch
    • First observedfind-and-replace-in-page
    • First observedget-block-children
    • First observedlist-comments
    • First observedlist-users
    • First observedmove-page
    • First observedquery-data-source
    • First observedreplace-page-content
    • First observedretrieve-block
    • First observedretrieve-bot-user
    • First observedretrieve-data-source
    • First observedretrieve-database
    • First observedretrieve-page
    • First observedretrieve-page-property
    • First observedretrieve-user
    • First observedsearch
    • First observedupdate-block
    • First observedupdate-block-simple
    • First observedupdate-data-source
    • First observedupdate-database
    • First observedupdate-page

TDQS

A3.6/5.0
Disambiguation2/5

Many tools have overlapping purposes, especially with 'simple' variants (e.g., append-block-children vs append-blocks-simple, create-comment vs create-comment-simple) and multiple deletion methods (delete-block, archive-page, clear-page-content). This makes it difficult for an agent to choose the correct tool.

Naming Consistency4/5

All tool names use snake_case and generally follow a verb-noun pattern (e.g., archive-database, retrieve-page). Some names are longer or less conventional (find-and-replace-in-page), but overall the pattern is consistent.

Tool Count3/5

32 tools is on the high side for a single server, but Notion is a complex platform with many operations. The count is borderline; some tools could be merged (e.g., 'simple' variants) to reduce clutter.

Completeness4/5

The tool set covers CRUD for pages, databases, blocks, comments, users, and search, as well as data source operations. Minor gaps exist (e.g., no batch update for properties), but overall the surface is comprehensive for common Notion tasks.

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
    Not graded
    quality
    D
    maintenance
    MCP server for the Notion API, enabling management of pages, blocks, databases, data sources, comments, and users through natural language.
    6
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A token-optimized MCP server for Notion that reduces context window usage by 73% while preserving full functionality, enabling AI assistants to interact with Notion efficiently.
    14
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/atikk-co-jp/notion-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server