---
title: Notion
description: Manage Notion pages
---

import { BlockInfoCard } from "@/components/ui/block-info-card"

<BlockInfoCard 
  type="notion_v2"
  color="#181C1E"
/>

{/* MANUAL-CONTENT-START:intro */}
The Notion tool integration enables your agents to read, create, and manage Notion pages and databases directly within your workflows. This allows you to automate the retrieval and updating of structured content, notes, documents, and more from your Notion workspace.

With the Notion tool, you can:

- **Read pages or databases**: Extract rich content or metadata from specified Notion pages or entire databases
- **Create new content**: Programmatically create new pages or databases for dynamic content generation
- **Append content**: Add new blocks or properties to existing pages and databases
- **Query databases**: Run advanced filters and searches on structured Notion data for custom workflows
- **Search your workspace**: Locate pages and databases across your Notion workspace automatically

This tool is ideal for scenarios where agents need to synchronize information, generate reports, or maintain structured notes within Notion. By bringing Notion's capabilities into automated workflows, you empower your agents to interface with knowledge, documentation, and project management data programmatically and seamlessly.
{/* MANUAL-CONTENT-END */}


## Usage Instructions

Integrate with Notion into the workflow. Can read page, read database, create page, create database, append content, query database, and search workspace.



## Tools

### `notion_read`

Read content from a Notion page

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `pageId` | string | Yes | The UUID of the Notion page to read |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `url` | string | Notion page URL |
| `created_time` | string | ISO 8601 creation timestamp |
| `last_edited_time` | string | ISO 8601 last edit timestamp |
| `content` | string | Page content in markdown format |
| `title` | string | Page title |

### `notion_read_database`

Read database information and structure from Notion

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `databaseId` | string | Yes | The UUID of the Notion database to read |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Database UUID |
| `url` | string | Notion database URL |
| `created_time` | string | ISO 8601 creation timestamp |
| `last_edited_time` | string | ISO 8601 last edit timestamp |
| `properties` | object | Database properties schema |
| `title` | string | Database title |

### `notion_write`

Append content to a Notion page

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `pageId` | string | Yes | The UUID of the Notion page to append content to |
| `content` | string | Yes | The content to append to the page |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `appended` | boolean | Whether content was successfully appended |

### `notion_create_page`

Create a new page in Notion

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `parentId` | string | Yes | The UUID of the parent Notion page where this page will be created |
| `title` | string | No | Title of the new page |
| `content` | string | No | Optional content to add to the page upon creation |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Page UUID |
| `url` | string | Notion page URL |
| `created_time` | string | ISO 8601 creation timestamp |
| `last_edited_time` | string | ISO 8601 last edit timestamp |
| `title` | string | Page title |

### `notion_update_page`

Update properties of a Notion page

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `pageId` | string | Yes | The UUID of the Notion page to update |
| `properties` | json | Yes | JSON object of properties to update |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Page UUID |
| `url` | string | Notion page URL |
| `last_edited_time` | string | ISO 8601 last edit timestamp |
| `title` | string | Page title |

### `notion_query_database`

Query and filter Notion database entries with advanced filtering

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `databaseId` | string | Yes | The UUID of the Notion database to query |
| `filter` | string | No | Filter conditions as JSON \(optional\) |
| `sorts` | string | No | Sort criteria as JSON array \(optional\) |
| `pageSize` | number | No | Number of results to return \(default: 100, max: 100\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `results` | array | Array of page objects from the database |
|   ↳ `object` | string | Always "page" |
|   ↳ `id` | string | Page UUID |
|   ↳ `created_time` | string | ISO 8601 creation timestamp |
|   ↳ `last_edited_time` | string | ISO 8601 last edit timestamp |
|   ↳ `created_by` | object | Partial user object |
|     ↳ `object` | string | Always "user" |
|     ↳ `id` | string | User UUID |
|   ↳ `last_edited_by` | object | Partial user object |
|     ↳ `object` | string | Always "user" |
|     ↳ `id` | string | User UUID |
|   ↳ `archived` | boolean | Whether the page is archived |
|   ↳ `in_trash` | boolean | Whether the page is in trash |
|   ↳ `url` | string | Notion page URL |
|   ↳ `public_url` | string | Public web URL if shared, null otherwise |
|   ↳ `parent` | object | Parent object specifying hierarchical relationship |
|     ↳ `type` | string | Parent type: "database_id", "data_source_id", "page_id", "workspace", or "block_id" |
|     ↳ `database_id` | string | Parent database UUID \(if type is database_id\) |
|     ↳ `data_source_id` | string | Parent data source UUID \(if type is data_source_id\) |
|     ↳ `page_id` | string | Parent page UUID \(if type is page_id\) |
|     ↳ `workspace` | boolean | True if parent is workspace \(if type is workspace\) |
|     ↳ `block_id` | string | Parent block UUID \(if type is block_id\) |
|   ↳ `icon` | object | Page/database icon \(emoji, custom_emoji, or file\) |
|     ↳ `url` | string | Authenticated URL valid for one hour |
|     ↳ `expiry_time` | string | ISO 8601 timestamp when URL expires |
|   ↳ `cover` | object | Page/database cover image |
|     ↳ `type` | string | File type: "file", "file_upload", or "external" |
|     ↳ `file` | object | Notion-hosted file object \(when type is "file"\) |
|       ↳ `url` | string | Authenticated URL valid for one hour |
|       ↳ `expiry_time` | string | ISO 8601 timestamp when URL expires |
|     ↳ `file_upload` | object | API-uploaded file object \(when type is "file_upload"\) |
|       ↳ `id` | string | File upload UUID |
|     ↳ `external` | object | External file object \(when type is "external"\) |
|       ↳ `url` | string | External file URL \(never expires\) |
|   ↳ `properties` | object | Page property values \(structure depends on parent type - database properties or title only\) |
| `has_more` | boolean | Whether more results are available |
| `next_cursor` | string | Cursor for next page of results |
| `total_results` | number | Number of results returned |

### `notion_search`

Search across all pages and databases in Notion workspace

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `query` | string | No | Search terms to find pages and databases \(leave empty to get all pages\) |
| `filterType` | string | No | Filter by object type: "page", "database", or leave empty for all |
| `pageSize` | number | No | Number of results to return \(default: 100, max: 100\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `results` | array | Array of search results \(pages and/or databases\) |
|   ↳ `object` | string | Object type: "page" or "database" |
|   ↳ `id` | string | Object UUID |
|   ↳ `created_time` | string | ISO 8601 creation timestamp |
|   ↳ `last_edited_time` | string | ISO 8601 last edit timestamp |
|   ↳ `created_by` | object | Partial user object |
|     ↳ `object` | string | Always "user" |
|     ↳ `id` | string | User UUID |
|   ↳ `last_edited_by` | object | Partial user object |
|     ↳ `object` | string | Always "user" |
|     ↳ `id` | string | User UUID |
|   ↳ `archived` | boolean | Whether the object is archived |
|   ↳ `in_trash` | boolean | Whether the object is in trash |
|   ↳ `url` | string | Object URL |
|   ↳ `public_url` | string | Public web URL if shared |
|   ↳ `parent` | object | Parent object specifying hierarchical relationship |
|     ↳ `type` | string | Parent type: "database_id", "data_source_id", "page_id", "workspace", or "block_id" |
|     ↳ `database_id` | string | Parent database UUID \(if type is database_id\) |
|     ↳ `data_source_id` | string | Parent data source UUID \(if type is data_source_id\) |
|     ↳ `page_id` | string | Parent page UUID \(if type is page_id\) |
|     ↳ `workspace` | boolean | True if parent is workspace \(if type is workspace\) |
|     ↳ `block_id` | string | Parent block UUID \(if type is block_id\) |
|   ↳ `properties` | object | Object properties |
| `has_more` | boolean | Whether more results are available |
| `next_cursor` | string | Cursor for next page of results |
| `total_results` | number | Number of results returned |

### `notion_create_database`

Create a new database in Notion with custom properties

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `parentId` | string | Yes | ID of the parent page where the database will be created |
| `title` | string | Yes | Title for the new database |
| `properties` | json | No | Database properties as JSON object \(optional, will create a default "Name" property if empty\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Database UUID |
| `url` | string | Notion database URL |
| `created_time` | string | ISO 8601 creation timestamp |
| `properties` | object | Database properties schema |
| `title` | string | Database title |

### `notion_add_database_row`

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `databaseId` | string | Yes | ID of the database to add the row to |
| `properties` | json | Yes | Row properties as JSON object matching the database schema \(e.g., \{"Name": \{"title": \[\{"text": \{"content": "Task 1"\}\}\]\}, "Status": \{"select": \{"name": "Done"\}\}\}\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Page UUID |
| `url` | string | Notion page URL |
| `created_time` | string | ISO 8601 creation timestamp |
| `last_edited_time` | string | ISO 8601 last edit timestamp |
| `title` | string | Row title |


