Notion
Connect to Notion workspace. Create, edit pages, manage databases, and collaborate on content
Supports authentication: OAuth 2.0
Tool list
Section titled “Tool list”notion_comment_create
Section titled “notion_comment_create”Create a comment in Notion. Provide a comment object with rich_text content and either a parent object (with page_id) for a page-level comment or a discussion_id to reply in an existing thread.
| Properties | Description | Type |
|---|---|---|
comment | Comment object containing a rich_text array. Example: {"rich_text":[{"type":"text","text":{"content":"Hello"}}]} | object |
discussion_id | Existing discussion thread ID to reply to. | string |
notion_version | Optional override for the Notion-Version header (e.g., 2022-06-28). | string |
parent | Parent object for a new top-level comment. Shape: {"page_id":"<uuid>"}. | object |
schema_version | Internal override for schema version. | string |
tool_version | Internal override for tool implementation version. | string |
notion_comment_retrieve
Section titled “notion_comment_retrieve”Retrieve a single Notion comment by its comment_id. LLM tip: you typically obtain comment_id from the response of creating a comment or by first listing comments for a page/block and selecting the desired item’s id.
| Properties | Description | Type |
|---|---|---|
comment_id | The identifier of the comment to retrieve (hyphenated UUID). Obtain it from Create-Comment responses or from a prior List-Comments call. | string |
notion_version | Optional Notion-Version header override (e.g., 2022-06-28). | string |
schema_version | Internal override for schema version. | string |
tool_version | Internal override for tool implementation version. | string |
notion_comments_fetch
Section titled “notion_comments_fetch”Fetch comments for a given Notion block. Provide a block_id (the target page/block ID, hyphenated UUID). Supports pagination via start_cursor and page_size (1–100). LLM tip: extract block_id from a Notion URL’s trailing 32-char id, then insert hyphens (8-4-4-4-12).
| Properties | Description | Type |
|---|---|---|
block_id | Target Notion block (or page) ID to fetch comments for. Use a hyphenated UUID. | string |
notion_version | Optional Notion-Version header override (e.g., 2022-06-28). | string |
page_size | Maximum number of comments to return (1–100). | integer |
schema_version | Internal override for schema version. | string |
start_cursor | Cursor to fetch the next page of results. | string |
tool_version | Internal override for tool implementation version. | string |
notion_data_fetch
Section titled “notion_data_fetch”Fetch data from Notion using the workspace search API (/search). Supports pagination via start_cursor.
| Properties | Description | Type |
|---|---|---|
page_size | Max number of results to return (1–100) | integer |
query | Text query used by /search | string |
schema_version | Optional schema version to use for tool execution | string |
start_cursor | Cursor for pagination; pass the previous response’s next_cursor | string |
tool_version | Optional tool version to use for execution | string |
notion_database_create
Section titled “notion_database_create”Create a new database in Notion under a parent page. Provide a parent object with page_id, a database title (rich_text array), and a properties object that defines the database schema (columns).
| Properties | Description | Type |
|---|---|---|
notion_version | Optional override for the Notion-Version header (e.g., 2022-06-28). | string |
parent | Parent object specifying the page under which the database is created. Example: {"page_id": "2561ab6c-418b-8072-beec-c4779fa811cf"} | object |
properties | Database schema object defining properties (columns). Example: {"Name": {"title": {}}, "Status": {"select": {"options": [{"name": "Todo"}, {"name": "Doing"}, {"name": "Done"}]}}} | object |
schema_version | Internal override for schema version. | string |
title | Database title as a Notion rich_text array. | array<object> |
tool_version | Internal override for tool implementation version. | string |
notion_database_fetch
Section titled “notion_database_fetch”Retrieve a Notion database’s full definition, including title, properties, and schema. Required: database_id (hyphenated UUID). LLM tip: Extract the last 32 characters from a Notion database URL, then insert hyphens (8-4-4-4-12).
| Properties | Description | Type |
|---|---|---|
database_id | The target database ID in UUID format with hyphens. | string |
notion_version | Optional override for the Notion-Version header. | string |
schema_version | Optional schema version override. | string |
tool_version | Optional tool version override. | string |
notion_database_insert_row
Section titled “notion_database_insert_row”Insert a new row (page) into a Notion database. Required: database_id (hyphenated UUID) and properties (object mapping database column names to Notion **property values). Optional: child_blocks(content blocks),icon(page icon object), andcover` (page cover object).
LLM guidance:
propertiesmust use property values (not schema). Example:
{ "title": { "title": [ { "text": { "content": "Task A" } } ] }, "Status": { "select": { "name": "Todo" } }, "Due": { "date": { "start": "2025-09-01" } } }- Use the exact property key as defined in the database (case‑sensitive), or the property id.
iconexample (emoji):{"type":"emoji","emoji":"📝"}coverexample (external):{"type":"external","external":{"url":"https://example.com/image.jpg"}}- Runtime note: the executor/host should synthesize
parent = {"database_id": database_id}before sending to Notion.
| Properties | Description | Type |
|---|---|---|
_parent | Computed by host: { "database_id": "<database_id>" }. Do not supply manually. | object |
child_blocks | Optional array of Notion blocks to append as page content (paragraph, heading, to_do, etc.). | array<unknown> |
cover | Optional page cover object. Example external: {"type":"external","external":{"url":"https://example.com/cover.jpg"}}. | object |
database_id | Target database ID (hyphenated UUID). | string |
icon | Optional page icon object. Examples: {"type":"emoji","emoji":"📝"} or {"type":"external","external":{"url":"https://..."}}. | object |
notion_version | Optional Notion-Version header override (e.g., 2022-06-28). | string |
properties | Object mapping column names (or property ids) to property values. |
️ CRITICAL: Property Identification Rules:
- For title fields: ALWAYS use ‘title’ as the property key (not ‘Name’ or display names)
- For other properties: Use exact property names from database schema (case-sensitive)
- DO NOT use URL-encoded property IDs with special characters
Recommended Workflow:
- Call fetch_database first to see exact property names
- Use ‘title’ for title-type properties
- Match other property names exactly as shown in schema
Example:
{ "title": { "title": [ { "text": { "content": "Task A" } } ] }, "Status": { "select": { "name": "Todo" } }, "Due": { "date": { "start": "2025-09-01" } }}``` | `object` || `schema_version` | Optional schema version override. | string | null || `tool_version` | Optional tool version override. | string | null |
## `notion_database_property_retrieve`
Query a Notion database and return only specific properties by supplying one or more property IDs. Use when you need page rows but want to limit the returned properties to reduce payload. Provide the database_id and an array of filter_properties (each item is a property id like "title")
| Properties | Description | Type || --- | --- | --- || `database_id` | Target database ID (hyphenated UUID). | string || `property_id` | property ID to filter results by a specific property. get the property id by querying database. | string | null || `schema_version` | Optional schema version override. | string | null || `tool_version` | Optional tool version override. | string | null |
## `notion_database_query`
Query a Notion database for rows (pages). Provide database_id (hyphenated UUID). Optional: page_size, start_cursor for pagination, and sorts (array of sort objects). LLM guidance: extract the last 32 characters from a Notion database URL and insert hyphens (8-4-4-4-12) to form database_id. Sort rules: each sort item MUST include either property OR timestamp (last_edited_time/created_time), not both.
| Properties | Description | Type || --- | --- | --- || `database_id` | Target database ID (hyphenated UUID). | string || `notion_version` | Optional Notion-Version header override. | string | null || `page_size` | Maximum number of rows to return (1–100). | integer | null || `schema_version` | Optional schema version override. | string | null || `sorts` | Order the results. Each item must include either property or timestamp, plus direction. | `array<object>` | null || `start_cursor` | Cursor to fetch the next page of results. | string | null || `tool_version` | Optional tool version override. | string | null |
## `notion_page_create`
Create a page in Notion either inside a database (as a row) or as a child of a page. Use exactly one parent mode: provide database_id to create a database row (page with properties) OR provide parent_page_id to create a child page. When creating in a database, properties must use Notion property value shapes and the title property key must be "title" (not the display name). Children (content blocks), icon, and cover are optional. The executor should synthesize the Notion parent object from the chosen parent input.
Target rules:- Use database_id OR parent_page_id (not both)- If database_id is provided → properties are required- If parent_page_id is provided → properties are optional
| Properties | Description | Type || --- | --- | --- || `_parent` | Computed by the executor: `{"database_id": "..."}` OR `{"page_id": "..."}` derived from database_id/parent_page_id. | `object` | null || `child_blocks` | Optional blocks to add as page content (children). | `array<unknown>` | null || `cover` | Optional page cover object. | `object` | null || `database_id` | Create a page as a new row in this database (hyphenated UUID). Extract from the database URL (last 32 chars → hyphenate 8-4-4-4-12). | string | null || `icon` | Optional page icon object. | `object` | null || `notion_version` | Optional Notion-Version header override. | string | null || `parent_page_id` | Create a child page under this page (hyphenated UUID). Extract from the parent page URL. | string | null || `properties` | For database rows, supply property values keyed by property name (or id). For title properties, the key must be "title".
Example (database row):{ "title": { "title": [ { "text": { "content": "Task A" } } ] }, "Status": { "select": { "name": "Todo" } }, "Due": { "date": { "start": "2025-09-01" } }} | `object` | null || `schema_version` | Optional schema version override. | string | null || `tool_version` | Optional tool version override. | string | null |