# Notion

Your Toolhouse AI Worker can connect to Notion using 48 specialized tools.

## Auth Connection

This service requires an auth connection to use its tools. You can set this up in your Toolhouse dashboard under [Auth Connections](https://toolhouse.app/auth-connections?authkit_slugs=notion).

## Tools (48)

### `Notion Add Multiple Page Content`

Integration name: **NOTION\_ADD\_MULTIPLE\_PAGE\_CONTENT**

Bulk-add content blocks to Notion. Text >2000 chars auto-splits. Parses markdown formatting. ⚠️ PARENT BLOCK TYPES: Content is added AS CHILDREN of parent\_block\_id. - To add content AFTER a heading, use PAGE ID as parent + heading ID in 'after' param. - Headings CANNOT have children unless is\_toggleable=True. Simplified format: {'content': 'text', 'block\_property': 'paragraph'} Full format for code: {'type': 'code', 'code': {'rich\_text': \[...], 'language': 'python'}} Array format also supported (auto-normalized): \[{"parent\_block\_id": "..."}, {block1}, {block2}] => proper request structure

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter         | Type   | Required | Example                                                                                                                                                                                                                                                      | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ----------------- | ------ | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `after`           | string |          | `"4b5f6e87-123a-456b-789c-9de8f7a9e4c0"`                                                                                                                                                                                                                     | Block ID to insert content AFTER (as siblings). Use this to add content after a heading: set parent\_block\_id to the PAGE ID and 'after' to the HEADING block ID. The new blocks appear immediately after this block at the same nesting level. If omitted, blocks are appended to the end of the parent's children list.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `content_blocks`  | array  |     ✅    | `[{"content":"# Project Status Report","block_property":"heading_1"},{"content":"System is **running smoothly** with *excellent* performance.","block_property":"paragraph"},{"block_property":"divider"},{"content":"Task item","block_property":"to_do"}]` | ⚠️ CRITICAL: Notion API enforces 2000 char limit per text.content field. Content >2000 chars auto-splits. List of blocks to add (max 100). Each item can be in EITHER format: A) Unwrapped (recommended): {'content': 'text', 'block\_property': 'paragraph'} B) Wrapped: {'content\_block': {'content': 'text', 'block\_property': 'paragraph'}} Block content formats: 1) Simplified: {'content': 'text (REQUIRED for text blocks)', 'block\_property': 'type'} 2) Full Notion: {'type': 'code', 'code': {...}} for complex blocks. Auto-features: Markdown parsing (**bold** *italic* ~~strike~~ `code` [link](broken://pages/d51a52149f1728e308f48760690db466a730a1fe)). Valid block\_property values: paragraph, heading\_1-3, callout, to\_do, toggle, quote, bulleted/numbered\_list\_item, divider. NOTE: 'code' and 'table' blocks require full Notion format with nested children/properties. 'divider' blocks don't require content. ⚠️ UNSUPPORTED: child\_database (use NOTION\_CREATE\_DATABASE), child\_page (use NOTION\_CREATE\_NOTION\_PAGE), link\_preview (read-only). |
| `parent_block_id` | string |     ✅    | `"4b5f6e87-123a-456b-789c-9de8f7a9e4c1"`                                                                                                                                                                                                                     | The UUID of the parent page or block where content will be added AS CHILDREN (nested inside). ⚠️ COMMON MISTAKE: To add content AFTER a block (as siblings), use the page ID as parent\_block\_id and specify the block ID in the 'after' parameter. Using a heading block ID here will fail because headings cannot have children unless they are toggleable. CONTAINER BLOCKS that support children: pages, paragraph, toggle, callout, quote, bulleted\_list\_item, numbered\_list\_item, to\_do, column, column\_list, table, synced\_block, and heading\_1/2/3 ONLY if is\_toggleable=True. NON-CONTAINER blocks that CANNOT have children: heading\_1/2/3 (unless toggleable), divider, image, video, file, embed, bookmark, equation, breadcrumb, table\_of\_contents, code, and child\_database (databases don't support block children - use database entry actions instead). Accepts 32 hex chars with/without hyphens. Example: '4b5f6e87-123a-456b-789c-9de8f7a9e4c1'. Get valid IDs from create\_page, search\_pages, or other Notion actions.                                |

***

### `Notion Add Page Content`

Integration name: **NOTION\_ADD\_PAGE\_CONTENT**

DEPRECATED: Use 'add\_multiple\_page\_content' for better performance. Adds a single content block to a Notion page/block. CRITICAL: Notion API enforces a HARD LIMIT of 2000 characters per text.content field. Content exceeding 2000 chars is AUTOMATICALLY SPLIT into multiple sequential blocks. REQUIRED 'content' field for text blocks: paragraph, heading\_1-3, callout, to\_do, toggle, quote, list items. Parent blocks MUST be: Page, Toggle, To-do, Bulleted/Numbered List Item, Callout, or Quote. Common errors: - "content.length should be ≤ 2000": Text exceeds API limit (should be auto-handled) - "Content is required for paragraph blocks": Missing 'content' field for text blocks - "object\_not\_found": Invalid parent\_block\_id or no integration access For bulk operations, use 'add\_multiple\_page\_content' instead.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter         | Type   | Required | Example                                                                                          | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ----------------- | ------ | :------: | ------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `after`           | string |          | `"4b5f6e87-123a-456b-789c-9de8f7a9e4c0"`                                                         | Identifier of an existing block. The new content block will be appended immediately after this block. If omitted or null, the new block is appended to the end of the parent's children list.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `content_block`   | —      |     ✅    | `{"content":"This is a paragraph added via API (max 2000 chars).","block_property":"paragraph"}` | ⚠️ CRITICAL: Notion API enforces a HARD LIMIT of 2000 characters per text.content field in rich\_text arrays. Content exceeding 2000 chars will be AUTOMATICALLY split into multiple blocks. SHORTCUT: You can pass a plain 'content' string at the top level (alongside page\_id) and it will be auto-wrapped as a paragraph block. OPTION 1 - Simplified format: Provide {'content': 'text', 'block\_property': 'type'}. The 'content' field is MANDATORY for: paragraph, heading\_1, heading\_2, heading\_3, callout, to\_do, toggle, quote, bulleted\_list\_item, numbered\_list\_item. Maximum 2000 chars per content field. OPTION 2 - Full Notion block format: Provide complete block structure with 'type' and properties. Must include 'object': 'block' and proper rich\_text arrays. For file/image/video blocks: use 'link' instead of 'content'. Common errors: Missing 'content' for text blocks, exceeding 2000 chars, invalid block structure. |
| `parent_block_id` | string |     ✅    | `"4b5f6e87-123a-456b-789c-9de8f7a9e4c1"`                                                         | Identifier of the parent page or block to which the new content block will be added. Parent must be one of: Page, Toggle, To-do, Bulleted/Numbered List Item, Callout, or Quote. Ensure your integration has access to this block. Use other Notion actions to obtain valid IDs. Alternative field names 'page\_id' or 'block\_id' are also accepted and will be normalized. Must not be empty.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |

***

### `Notion Append Block Children`

Integration name: **NOTION\_APPEND\_BLOCK\_CHILDREN**

DEPRECATED: Use NOTION\_APPEND\_TEXT\_BLOCKS, NOTION\_APPEND\_TASK\_BLOCKS, NOTION\_APPEND\_CODE\_BLOCKS, NOTION\_APPEND\_MEDIA\_BLOCKS, NOTION\_APPEND\_LAYOUT\_BLOCKS, or NOTION\_APPEND\_TABLE\_BLOCKS instead. Appends raw Notion API blocks to parent. Text limited to 2000 chars per text.content field. Each block MUST have 'object':'block' and 'type'. Use rich\_text arrays for text blocks.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter  | Type   | Required | Example                                                                                                                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ---------- | ------ | :------: | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `after`    | string |          | `"9bc30ad4-9373-46a5-84ab-0a7845ee52e6"`                                                                                 | Optional UUID of an existing child block. New blocks will be inserted after this block. Must be a valid child block ID of the parent block. If omitted, blocks are appended at the end. Do not use placeholder values like '\<block\_id>' or invalid IDs.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `block_id` | string |     ✅    | `"b55c9c91-384d-452b-81db-d1ef79372b75"`                                                                                 | The unique identifier (UUID) of the parent block or page to append children to. Must be a valid Notion block/page ID in UUID format (with or without hyphens). Use NOTION\_FETCH\_DATA to find valid page IDs. Do not use placeholder values.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `children` | array  |     ✅    | `[{"type":"heading_2","object":"block","heading_2":{"rich_text":[{"text":{"content":"Section Title"},"type":"text"}]}}]` | Array of block objects (max 100 per request). 2000 char limit per text.content field. Each block MUST include: - 'object': 'block' (REQUIRED) - 'type': block type (REQUIRED) - Property matching type name with 'rich\_text' array for text blocks Pass an actual array of objects, NOT a JSON string. Text blocks (paragraph, heading\_1-3, etc.) MUST use 'rich\_text' array structure: {'rich\_text': \[{'type': 'text', 'text': {'content': 'your text here (max 2000 chars)'}}]} TABLE BLOCKS: Table blocks support up to 2 levels of nesting. The 'table' property MUST contain: - 'table\_width': number of columns (integer >= 1) - 'has\_column\_header': boolean - 'has\_row\_header': boolean - 'children': array with at least 1 table\_row block Each table\_row MUST have 'cells' array with length = table\_width. Each cell is an array of rich\_text. Example: {'type': 'table', 'object': 'block', 'table': {'table\_width': 2, 'has\_column\_header': false, 'has\_row\_header': false, 'children': \[{'type': 'table\_row', 'object': 'block', 'table\_row': {'cells': \[\[{'type': 'text', 'text': {'content': 'Cell 1'}}], \[{'type': 'text', 'text': {'content': 'Cell 2'}}]]}}]}} Common errors: - Using 'text' instead of 'rich\_text' (WRONG: heading\_2: {'text': ...}) - Missing 'object': 'block' field - Malformed rich\_text array structure - Table without 'children' array or with empty 'children' - Table\_row cells array length != table\_width - Nesting block objects directly in table cells (cells contain rich\_text arrays, not blocks) |

***

### `Notion Append Code Blocks`

Integration name: **NOTION\_APPEND\_CODE\_BLOCKS**

Append code and technical blocks (code, quote, equation) to a Notion page. Use for: - Code snippets and programming examples (code) - Citations and highlighted quotes (quote) - Mathematical formulas and equations (equation) Supported block types: - code: Code with syntax highlighting (70+ languages including Python, JavaScript, Go, Rust, etc.) - quote: Block quotes for citations - equation: LaTeX/KaTeX mathematical expressions ⚠️ Code content is limited to 2000 characters per text.content field. For longer code, split into multiple code blocks. For other block types, use specialized actions: - append\_text\_blocks: paragraphs, headings, lists - append\_task\_blocks: to-do, toggle, callout - append\_media\_blocks: image, video, audio, files - append\_layout\_blocks: divider, columns, TOC - append\_table\_blocks: tables

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter  | Type   | Required | Example                                                                                                                                     | Description                                                                                                                                                                                                                                                                                                                                                                                                            |
| ---------- | ------ | :------: | ------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `after`    | string |          | —                                                                                                                                           | Optional UUID of an existing child block. New blocks will be inserted after this block.                                                                                                                                                                                                                                                                                                                                |
| `block_id` | string |     ✅    | `"b55c9c91-384d-452b-81db-d1ef79372b75"`                                                                                                    | The UUID of the parent block or page to append children to.                                                                                                                                                                                                                                                                                                                                                            |
| `children` | array  |     ✅    | `[{"code":{"language":"python","rich_text":[{"text":{"content":"print('Hello, World!')"},"type":"text"}]},"type":"code","object":"block"}]` | Array of code/technical block objects to append. Supported types: - code: Code snippet with syntax highlighting (supports 70+ languages) - quote: Block quote for citations or highlighted text - equation: Mathematical equation using LaTeX/KaTeX syntax ⚠️ Code content limited to 2000 characters per rich\_text text.content field. For longer code, split into multiple code blocks. Max 100 blocks per request. |

***

### `Notion Append Layout Blocks`

Integration name: **NOTION\_APPEND\_LAYOUT\_BLOCKS**

Append layout blocks (divider, TOC, breadcrumb, columns) to a Notion page. Supported types: - divider: Horizontal line separator - table\_of\_contents: Auto-generated from headings - breadcrumb: Page hierarchy navigation - column\_list: Multi-column layout (requires 2+ columns, each with 1+ child block) For multi-column layouts, create column\_list with column children in one request. Each column must contain at least 1 child block. For other blocks, use: append\_text\_blocks, append\_task\_blocks, append\_code\_blocks, append\_media\_blocks, or append\_table\_blocks.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter  | Type   | Required | Example                                              | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ---------- | ------ | :------: | ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `after`    | string |          | —                                                    | Optional UUID of an existing child block. New blocks will be inserted after this block.                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `block_id` | string |     ✅    | `"b55c9c91-384d-452b-81db-d1ef79372b75"`             | The UUID of the parent block or page to append children to.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `children` | array  |     ✅    | `[{"type":"divider","object":"block","divider":{}}]` | Array of layout/structural block objects to append. Supported types: - divider: Horizontal line separator - table\_of\_contents: Auto-generated TOC from headings - breadcrumb: Navigation breadcrumb (auto-generated) - column\_list: Container with at least 2 columns, each column must have at least 1 child block - column: Individual column (must be child of column\_list) Note: column\_list blocks must include their column children in the same request. Each column must contain at least one child block. Max 100 blocks per request. |

***

### `Notion Append Media Blocks`

Integration name: **NOTION\_APPEND\_MEDIA\_BLOCKS**

Append media blocks (image, video, audio, file, pdf, embed, bookmark) to a Notion page. Use for: - Images and screenshots (image) - YouTube/Vimeo videos or direct video URLs (video) - Audio files and podcasts (audio) - File downloads (file) - PDF documents (pdf) - Embedded content from Twitter, Figma, CodePen, etc. (embed) - Link previews with metadata (bookmark) All media blocks require external URLs. For other block types, use specialized actions: - append\_text\_blocks: paragraphs, headings, lists - append\_task\_blocks: to-do, toggle, callout - append\_code\_blocks: code, quote, equation - append\_layout\_blocks: divider, columns, TOC - append\_table\_blocks: tables

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter  | Type   | Required | Example                                                                                                              | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ---------- | ------ | :------: | -------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `after`    | string |          | —                                                                                                                    | Optional UUID of an existing child block. New blocks will be inserted after this block.                                                                                                                                                                                                                                                                                                                                                                    |
| `block_id` | string |     ✅    | `"b55c9c91-384d-452b-81db-d1ef79372b75"`                                                                             | The UUID of the parent block or page to append children to.                                                                                                                                                                                                                                                                                                                                                                                                |
| `children` | array  |     ✅    | `[{"type":"image","image":{"type":"external","external":{"url":"https://example.com/image.png"}},"object":"block"}]` | Array of media block objects to append. Supported types: - image: Image from external URL - video: Video from YouTube, Vimeo, or direct URL - audio: Audio file from external URL - file: Generic file download link - pdf: PDF document (rendered inline) - embed: Embed from supported services (Twitter, Figma, CodePen, etc.) - bookmark: Link preview with title and description All media types require an external URL. Max 100 blocks per request. |

***

### `Notion Append Table Blocks`

Integration name: **NOTION\_APPEND\_TABLE\_BLOCKS**

Append table blocks to a Notion page. Use for structured tabular data like spreadsheets, comparison charts, and status trackers. Example: { "table\_width": 3, "has\_column\_header": true, "rows": \[ {"cells": \[\[{"type": "text", "text": {"content": "Col1"}}], \[...], \[...]]} ] } ⚠️ Cell content limited to 2000 chars per text.content field.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter  | Type   | Required | Example                                                                                                                                                                                                                                                                                                                                                          | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ---------- | ------ | :------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `after`    | string |          | —                                                                                                                                                                                                                                                                                                                                                                | Optional UUID of an existing child block. New blocks will be inserted after this block.                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `tables`   | array  |     ✅    | `[{"rows":[{"cells":[[{"text":{"content":"Name"},"type":"text"}],[{"text":{"content":"Role"},"type":"text"}],[{"text":{"content":"Status"},"type":"text"}]]},{"cells":[[{"text":{"content":"Alice"},"type":"text"}],[{"text":{"content":"Engineer"},"type":"text"}],[{"text":{"content":"Active"},"type":"text"}]]}],"table_width":3,"has_column_header":true}]` | Array of tables to append. Each table includes: - table\_width: Number of columns (1-100) - has\_column\_header: Style first row as header (optional, default false) - has\_row\_header: Style first column as header (optional, default false) - rows: Array of row objects (at least one required) Each row contains a 'cells' array where each cell is an array of rich text objects. The number of cells in each row MUST match table\_width. ⚠️ Cell content limited to 2000 characters per rich\_text text.content field. Max 100 tables per request. |
| `block_id` | string |     ✅    | `"b55c9c91-384d-452b-81db-d1ef79372b75"`                                                                                                                                                                                                                                                                                                                         | The UUID of the parent block or page to append children to.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |

***

### `Notion Append Task Blocks`

Integration name: **NOTION\_APPEND\_TASK\_BLOCKS**

Append task blocks (to-do, toggle, callout) to a Notion page or block. Supported block types: - to\_do: Checkbox items (checkable/uncheckable) - toggle: Collapsible sections - callout: Highlighted boxes with emoji icons All three types support nested children (up to 2 levels of nesting). block\_id must be a page or block that supports children (e.g., page, toggle, paragraph, list items, quote, callout, to\_do). Blocks like divider, breadcrumb, equation do NOT support children. Limits: 2000 chars per text.content, max 100 blocks per request. For other blocks: append\_text\_blocks, append\_code\_blocks, append\_media\_blocks, append\_layout\_blocks, append\_table\_blocks.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter  | Type   | Required | Example                                                                                                                                   | Description                                                                                                                                                                                                                                                                                                                                                                                      |
| ---------- | ------ | :------: | ----------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `after`    | string |          | —                                                                                                                                         | Optional UUID of an existing child block. New blocks will be inserted after this block.                                                                                                                                                                                                                                                                                                          |
| `block_id` | string |     ✅    | `"b55c9c91-384d-452b-81db-d1ef79372b75"`                                                                                                  | The UUID of the parent page or block to append children to. Must be a page\_id or a block type that supports children (e.g., toggle, paragraph, bulleted\_list\_item, numbered\_list\_item, quote, callout, to\_do). Some block types like divider, breadcrumb, equation do NOT support children.                                                                                                |
| `children` | array  |     ✅    | `[{"type":"to_do","to_do":{"checked":false,"rich_text":[{"text":{"content":"Complete documentation"},"type":"text"}]},"object":"block"}]` | Array of task/interactive block objects to append. Supported types: - to\_do: Checkbox task item (can be checked/unchecked) - toggle: Collapsible section (click to expand/collapse) - callout: Highlighted box with emoji icon (for important notes) ⚠️ Text content limited to 2000 characters per rich\_text text.content field. Max 100 blocks per request. Max 2 levels of nesting allowed. |

***

### `Notion Append Text Blocks`

Integration name: **NOTION\_APPEND\_TEXT\_BLOCKS**

Append text blocks (paragraphs, headings, lists) to a Notion page. This is the most commonly used action for adding content to Notion. Use for: documentation, notes, articles, outlines, lists. Supported block types: - paragraph: Regular text - heading\_1, heading\_2, heading\_3: Section headers - bulleted\_list\_item: Bullet points - numbered\_list\_item: Numbered lists ⚠️ Text content is limited to 2000 characters per text.content field. For other block types, use specialized actions: - append\_task\_blocks: to-do, toggle, callout - append\_code\_blocks: code, quote, equation - append\_media\_blocks: image, video, audio, files - append\_layout\_blocks: divider, columns, TOC - append\_table\_blocks: tables

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter  | Type   | Required | Example                                                                                                                  | Description                                                                                                                                                                                                                                                                                                                                                                            |
| ---------- | ------ | :------: | ------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `after`    | string |          | `"9bc30ad4-9373-46a5-84ab-0a7845ee52e6"`                                                                                 | Optional UUID of an existing child block. New blocks will be inserted after this block.                                                                                                                                                                                                                                                                                                |
| `block_id` | string |     ✅    | `"b55c9c91-384d-452b-81db-d1ef79372b75"`                                                                                 | The UUID of the parent block or page to append children to.                                                                                                                                                                                                                                                                                                                            |
| `children` | array  |     ✅    | `[{"type":"heading_2","object":"block","heading_2":{"rich_text":[{"text":{"content":"Section Title"},"type":"text"}]}}]` | Array of text block objects to append (also accepts 'blocks' as parameter name). Supported types: - paragraph: Regular text paragraph - heading\_1, heading\_2, heading\_3: Section headings - bulleted\_list\_item: Bullet point - numbered\_list\_item: Numbered list item ⚠️ Text content limited to 2000 characters per rich\_text text.content field. Max 100 blocks per request. |

***

### `Notion Archive Notion Page`

Integration name: **NOTION\_ARCHIVE\_NOTION\_PAGE**

Archives (moves to trash) or unarchives (restores from trash) a specified Notion page. Limitation: Workspace-level pages (top-level pages with no parent page or database) cannot be archived via the API and must be archived manually in the Notion UI.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter | Type    | Required | Example                                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| --------- | ------- | :------: | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `archive` | boolean |          | —                                        | Set to `true` to move the page to trash (archive), or `false` to restore it from trash (unarchive). Defaults to `true`.                                                                                                                                                                                                                                                                                                                                                                                           |
| `page_id` | string  |     ✅    | `"a1b2c3d4-e5f6-7890-1234-567890abcdef"` | The unique identifier (UUID) of the Notion page to be archived or unarchived. Must be a page ID, not a database ID. Note: Workspace-level pages (pages that sit at the root of your workspace with no parent page or database) cannot be archived via the API - only pages nested under other pages or databases can be archived programmatically. Page IDs can be obtained using NOTION\_SEARCH\_NOTION\_PAGE with filter\_value='page' or from the 'id' field of page objects returned by other Notion actions. |

***

### `Notion Create Comment`

Integration name: **NOTION\_CREATE\_COMMENT**

Adds a comment to a Notion page (via `parent_page_id`) OR to an existing discussion thread (via `discussion_id`); cannot create new discussion threads on specific blocks (inline comments).

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter        | Type   | Required | Example                                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ---------------- | ------ | :------: | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `comment`        | object |     ✅    | `{"content":"Looks good to me!"}`        | Content of the comment as a NotionRichText object or a JSON string. Simplest form: {'content': 'Looks good!'} or {'text': 'Looks good!'} (both 'content' and 'text' are accepted as the field name). Can also be passed as a JSON string: '{"content": "Looks good!"}'. Optional styling fields: bold, italic, etc. The 'link' field is for external URLs only (e.g., '<https://example.com>'), NOT for page IDs. Do NOT wrap this in a list or use Notion API block JSON. |
| `discussion_id`  | string |          | `"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"` | The ID of an existing discussion thread to which the comment will be added. This is required if `parent_page_id` is not provided. Must be a valid UUID (32 hex characters with or without hyphens).                                                                                                                                                                                                                                                                        |
| `parent_page_id` | string |          | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` | The ID of the Notion page where the comment will be added. This is required if `discussion_id` is not provided. Must be a valid UUID (32 hex characters with or without hyphens). Page IDs can be obtained using other Notion actions that fetch page details or list pages.                                                                                                                                                                                               |

***

### `Notion Create Database`

Integration name: **NOTION\_CREATE\_DATABASE**

Creates a new Notion database as a subpage under a specified parent page with a defined properties schema. IMPORTANT NOTES: - The parent page MUST be shared with your integration, otherwise you'll get a 404 error - If you encounter conflict errors (409), retry the request as Notion may experience temporary save conflicts - For relation properties, you MUST provide the database\_id of the related database - Parent ID must be a valid UUID format (with or without hyphens), not a template variable Use this action exclusively for creating new databases.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter    | Type   | Required | Example                                                                                            | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ------------ | ------ | :------: | -------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `title`      | string |     ✅    | `"Project Roadmap"`                                                                                | The desired title for the new database. This text will be automatically converted into Notion's rich text format when the database is created.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `parent_id`  | string |     ✅    | `"a1b2c3d4-e5f6-7890-1234-567890abcdef"`                                                           | **CRITICAL: MUST BE A PAGE ID, NOT A DATABASE ID.** Databases can only be created as children of pages, not as children of other databases. Using a database ID will result in an API error: 'Can't create databases parented by a database.' HOW TO IDENTIFY PAGE vs DATABASE: Use NOTION\_SEARCH\_NOTION\_PAGE with filter\_value='page' to find pages (object='page') - only these IDs can be used here. Database IDs (object='database') are NOT valid as parent\_id for this action. FORMAT: Valid 32-character UUID with hyphens (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) or without hyphens (32 alphanumeric characters). Additional text after the UUID (e.g., 'uuid: Page Title') is automatically cleaned. The page must be shared with your integration, otherwise you'll receive a 404 error.                             |
| `properties` | array  |          | `"[{\"name\": \"Task Name\", \"type\": \"title\"}, {\"name\": \"Due Date\", \"type\": \"date\"}]"` | Optional list defining the schema (columns) for the new database. Each item is an object with 'name' and 'type'. If not provided, Notion creates a default database with a single 'Name' column of type 'title'. When provided, the list must include at least one property of type 'title'. Common supported property types include: 'title', 'rich\_text', 'number', 'select', 'multi\_select', 'status', 'date', 'people', 'files', 'checkbox', 'url', 'email', 'phone\_number'. Other types like 'formula', 'relation', 'rollup', 'created\_time', 'created\_by', 'last\_edited\_time', 'last\_edited\_by' might also be supported. IMPORTANT: For 'relation' type properties, you MUST also provide the 'database\_id' field with the UUID of the related database. The related database must be shared with your integration. |

***

### `Notion Create File Upload`

Integration name: **NOTION\_CREATE\_FILE\_UPLOAD**

Tool to create a Notion FileUpload object and retrieve an upload URL. Use when you need to automate attaching local or external files directly into Notion without external hosting.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter         | Type    | Required | Example                           | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ----------------- | ------- | :------: | --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `mode`            | string  |          | `"single_part"`                   | Upload mode: 'single\_part' for direct upload (default, up to 20 MB), 'multi\_part' for chunked uploads (requires paid Notion workspace), or 'external\_url' to import from a public URL. Note: Free workspaces are limited to 5 MB files and cannot use multi\_part mode.                                                                                                                                                                                                                                                                                                               |
| `filename`        | string  |          | `"image.png"`                     | Human-readable file name with extension. Required for external\_url; for multi\_part, supply to infer extension or pair with content\_type; optional for single-part. Supported extensions: Audio (.aac, .adts, .mid, .midi, .mp3, .mpga, .m4a, .m4b, .mp4, .oga, .ogg, .wav, .wma); Document (.pdf, .txt, .json, .doc, .dot, .docx, .dotx, .xls, .xlt, .xla, .xlsx, .xltx, .ppt, .pot, .pps, .ppa, .pptx, .potx); Image (.gif, .heic, .jpeg, .jpg, .png, .svg, .tif, .tiff, .webp, .ico); Video (.amv, .asf, .wmv, .avi, .f4v, .flv, .gifv, .m4v, .mp4, .mkv, .webm, .mov, .qt, .mpeg). |
| `content_type`    | string  |          | `"image/png"`                     | MIME type of the file. Required in multi\_part if filename lacks extension; optional for single-part.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `external_url`    | string  |          | `"https://example.com/image.jpg"` | Public HTTPS URL to import. Required when mode='external\_url'. Must expose Content-Type and Content-Length.                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `number_of_parts` | integer |          | `3`                               | Total parts for a multi-part upload; required when mode='multi\_part'.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |

***

### `Notion Create Notion Page`

Integration name: **NOTION\_CREATE\_NOTION\_PAGE**

Creates a new page in a Notion workspace under a specified parent page or database. Supports creating pages with markdown content using the native markdown parameter, or as an empty page that can be populated later. PREREQUISITES: - Parent page/database must exist and be accessible in your Notion workspace - Use search\_pages or list\_databases first to obtain valid parent IDs LIMITATIONS: - Cannot create root-level pages (must have a parent) - May encounter conflicts if creating pages too quickly - Title-based parent search is less reliable than using UUIDs - The markdown parameter is mutually exclusive with children/content parameters

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter   | Type   | Required | Example                                         | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ----------- | ------ | :------: | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `icon`      | string |          | `"😻"`                                          | An emoji to be used as the icon for the new page. Must be a single emoji character. If the title starts with this emoji, it will be stripped from the title text to prevent duplication.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `cover`     | string |          | `"https://www.example.com/images/cover.png"`    | The URL of an image to be used as the cover for the new page. The URL must be publicly accessible.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `title`     | string |     ✅    | `"My new report"`                               | The title of the new page to be created. If an icon emoji is provided and the title starts with the same emoji, it will be automatically removed from the title to avoid duplication.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `markdown`  | string |          | `"# Meeting Notes\n\nDiscussed roadmap for Q1"` | Page content as Notion-flavored Markdown. When provided, the page will be created from this markdown string. If properties.title is omitted, the first # h1 heading will be extracted as the page title. This parameter is mutually exclusive with children and content parameters.                                                                                                                                                                                                                                                                                                                                                                                       |
| `parent_id` | string |     ✅    | `"59833787-2cf9-4fdf-8782-e53db20768a5"`        | CRITICAL: Must be either: 1) A valid Notion UUID in dashed format (8-4-4-4-12 hex characters like '59833787-2cf9-4fdf-8782-e53db20768a5') or dashless format (32 hex characters like '598337872cf94fdf8782e53db20768a5') of an existing Notion page or database. 2) The exact title of an existing page/database (less reliable - UUID strongly preferred). IMPORTANT: Always use search\_pages or list\_databases actions FIRST to obtain valid parent IDs. Common errors: Using malformed UUIDs, non-existent IDs, or IDs from different workspaces. Note: Root-level pages cannot be created - you must specify a parent. Also accepts 'parent\_page\_id' as an alias. |

***

### `Notion Delete Block`

Integration name: **NOTION\_DELETE\_BLOCK**

Archives a Notion block, page, or database using its ID, which sets its 'archived' property to true (like moving to "Trash" in the UI) and allows it to be restored later. Note: This operation will fail if the block has an archived parent or ancestor in the hierarchy. You must unarchive the ancestor before archiving/deleting its descendants. IMPORTANT LIMITATION: Workspace-level pages (top-level pages that are direct children of the workspace, not contained within other pages or databases) cannot be archived via the Notion API. This is a documented Notion API restriction. Only pages that are children of other pages or databases can be deleted through this action.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter  | Type   | Required | Example                                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ---------- | ------ | :------: | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `block_id` | string |     ✅    | `"59833787-2cf9-4fdf-8782-e53db20768a5"` | Identifier of the block, page, or database to be deleted (archived). Must be a valid Notion block/page/database ID in UUID format (with or without hyphens). IMPORTANT: Workspace-level pages (top-level pages not contained within other pages or databases) cannot be archived via the API - only pages that are children of other pages or databases can be deleted. To find page IDs and their titles, consider using an action like `NOTION_FETCH_DATA`. |

***

### `Notion Duplicate Page`

Integration name: **NOTION\_DUPLICATE\_PAGE**

Duplicates a Notion page, including all its content, properties, and nested blocks, under a specified parent page or workspace.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter   | Type   | Required | Example                                  | Description                                                                                                                                                                                                                                                                                                                                                      |
| ----------- | ------ | :------: | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `title`     | string |          | `"My Duplicated Page"`                   | An optional new title for the duplicated page. If not provided, the title of the original page will be used, prefixed with 'Copy of'.                                                                                                                                                                                                                            |
| `page_id`   | string |     ✅    | `"2e22de6b-770e-4166-be30-1490f6ffd7c1"` | The unique identifier (UUID v4) of the Notion page to be duplicated. Ensure this page exists and is accessible.                                                                                                                                                                                                                                                  |
| `parent_id` | string |     ✅    | `"7e22de6b-770e-4166-be30-1490f6ffd7c1"` | The unique identifier (UUID v4) of the Notion page or database that will serve as the parent for the duplicated page. If a database ID is provided, the new page is created as a row in that database with properties preserved. If a page ID is provided, the new page is created as a child page with only the title. This ID cannot be the same as `page_id`. |

***

### `Notion Fetch All Block Contents`

Integration name: **NOTION\_FETCH\_ALL\_BLOCK\_CONTENTS**

Tool to fetch all child blocks for a given Notion block. Use when you need a complete listing of a block's children beyond a single page; supports optional recursive expansion of nested blocks.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter    | Type    | Required | Example                                                            | Description                                                                                                                                                                                                                                                                                                                                         |
| ------------ | ------- | :------: | ------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `block_id`   | string  |          | `"c02fc1d3-db8b-45c5-a222-27595b15aea7"`                           | Identifier (UUID) of the parent Notion block or page whose children to list. Pages are blocks in Notion. Accepts UUIDs with or without hyphens (e.g., 'c02fc1d3-db8b-45c5-a222-27595b15aea7' or 'c02fc1d3db8b45c5a22227595b15aea7'). Either block\_id or page\_url must be provided. The block must be shared with your integration.                |
| `page_url`   | string  |          | `"https://www.notion.so/My-Page-c02fc1d3db8b45c5a22227595b15aea7"` | Notion page URL from which to extract the page/block ID. Either block\_id or page\_url must be provided. NOTE: Database view URLs (those containing '?v=' parameter) are NOT supported. Database views are filtered views of a database and do not have block children. To access database content, use the NOTION\_QUERY\_DATABASE action instead. |
| `max_depth`  | integer |          | `5`                                                                | Maximum recursion depth when recursive=true. Prevents excessive nesting traversal. Defaults to 10. Set higher for deeply nested structures, lower for faster results.                                                                                                                                                                               |
| `page_size`  | integer |          | `25`                                                               | Maximum number of child blocks to return per request. Defaults to 100, with a maximum of 100 as per Notion API limits.                                                                                                                                                                                                                              |
| `recursive`  | boolean |          | —                                                                  | If true, fetches nested children for blocks with 'has\_children' set to true, appending all descendants to the output list. Subject to max\_depth and max\_blocks limits.                                                                                                                                                                           |
| `max_blocks` | integer |          | `1000`                                                             | Maximum total blocks to return when recursive=true. Prevents runaway fetches on extremely large block trees. Defaults to 5000. When limit is reached, blocks fetched so far are returned with a warning in the response.                                                                                                                            |

***

### `Notion Fetch Block Contents`

Integration name: **NOTION\_FETCH\_BLOCK\_CONTENTS**

Retrieves a paginated list of direct, first-level child block objects along with contents for a given parent Notion block or page ID; use block IDs from the response for subsequent calls to access deeply nested content.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter      | Type    | Required | Example                                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| -------------- | ------- | :------: | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `block_id`     | string  |     ✅    | `"c02fc1d3-db8b-45c5-a222-27595b15aea7"` | UUID of the parent Notion block or page whose children are to be fetched. Accepts both hyphenated (e.g., 'c02fc1d3-db8b-45c5-a222-27595b15aea7') and non-hyphenated (e.g., 'c02fc1d3db8b45c5a22227595b15aea7') UUID formats. Notion's API does not support special identifiers like 'root' or 'top-level' - you must always provide an actual page or block UUID. To discover valid page/block IDs, first use 'NOTION\_SEARCH\_NOTION\_PAGE' to find pages or 'NOTION\_QUERY\_DATABASE' to query databases. |
| `page_size`    | integer |          | `"25"`                                   | The maximum number of child blocks to return in a single response. The actual number of results may be lower if there are fewer child blocks available or if the end of the list is reached. Maximum allowed value is 100. If unspecified, Notion's default page size will be used.                                                                                                                                                                                                                         |
| `start_cursor` | string  |          | `"a1b2c3d4-e5f6-47a8-b9c0-d1e2f3a4b5c6"` | Pagination cursor from next\_cursor in a previous API response. When paginating through results, pass the next\_cursor value from the previous response here to fetch the next page. Must be a valid UUID format or cursor string returned by Notion's API. If omitted, returns the first page of results.                                                                                                                                                                                                  |

***

### `Notion Fetch Block Metadata`

Integration name: **NOTION\_FETCH\_BLOCK\_METADATA**

Fetches metadata for a Notion block (including pages, which are special blocks) using its UUID. Returns block type, properties, and basic info but not child content. Prerequisites: 1) Block/page must be shared with your integration, 2) Use valid block\_id from API responses (not URLs). For child blocks, use fetch\_block\_contents instead. Common 404 errors mean the block isn't accessible to your integration.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter  | Type   | Required | Example                                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ---------- | ------ | :------: | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `block_id` | string |     ✅    | `"c02fc1d3-db8b-45c5-a222-27595b15aea7"` | The unique UUID identifier for the Notion block to be retrieved. Must be a valid 32-character UUID (with or without hyphens). Pages in Notion are also blocks, so page IDs work here too. Important: The block/page must be shared with your integration. To find valid block IDs, use actions like search\_pages, list\_databases, or fetch\_block\_contents. Common error: Ensure you're using the actual block\_id from API responses, not URLs or other identifiers. |

***

### `Notion Fetch Comments`

Integration name: **NOTION\_FETCH\_COMMENTS**

Fetches unresolved comments for a specified Notion block or page ID. The block/page must be shared with your Notion integration and the integration must have 'Read comments' capability enabled, otherwise a 404 error will be returned.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter      | Type    | Required | Example                                  | Description                                                                                                                                                                                                                                                                                                                                                            |
| -------------- | ------- | :------: | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `page_id`      | string  |          | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` | Identifier for a Notion page from which to fetch comments. This is an alias for block\_id since pages are blocks in Notion. Provide either page\_id or block\_id, but not both. IMPORTANT: The page must be shared with your Notion integration - if not shared, you will receive a 404 error. To find IDs, use the `NOTION_SEARCH_NOTION_PAGE` action.                |
| `block_id`     | string  |          | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` | Identifier for a Notion block from which to fetch comments. In Notion, pages are technically blocks, so you can pass a page ID here as well. Provide either block\_id or page\_id, but not both. IMPORTANT: The block/page must be shared with your Notion integration - if not shared, you will receive a 404 error. To find IDs, use the `NOTION_FETCH_DATA` action. |
| `page_size`    | integer |          | —                                        | The number of comments to return in a single response page. Must be between 1 and 100, inclusive. Default is 100.                                                                                                                                                                                                                                                      |
| `start_cursor` | string  |          | —                                        | A pagination cursor. If provided, the response will contain the page of results starting after this cursor. If omitted, the first page of results is returned.                                                                                                                                                                                                         |

***

### `Notion Fetch Data`

Integration name: **NOTION\_FETCH\_DATA**

Fetches Notion items (pages and/or databases) from the Notion workspace, use this to get minimal data about the items in the workspace with a query or list all items in the workspace with minimal data

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter              | Type    | Required | Example              | Description                                                                                                                                                                                                                                                                                                        |
| ---------------------- | ------- | :------: | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `query`                | string  |          | `"Quarterly Report"` | An optional search query to filter pages and/or databases by their title or content. If not provided (None or empty string), all accessible items matching the selected type (pages, databases, or both) are returned.                                                                                             |
| `page_size`            | integer |          | —                    | The maximum number of items per page (1-100). IMPORTANT: Notion API enforces a hard maximum of 100 items per request - values above 100 will be automatically capped to 100. To retrieve more than 100 items, use pagination by passing the returned 'next\_cursor' value in subsequent requests. Defaults to 100. |
| `fetch_type`           | string  |     ✅    | —                    | Specifies what type of Notion data to fetch. Use 'pages' to fetch only pages, 'databases' to fetch only databases, or 'all' to fetch both pages and databases.                                                                                                                                                     |
| `start_cursor`         | string  |          | —                    | Pagination cursor to fetch the next page of results. Pass the 'next\_cursor' value from a previous response to retrieve the next page. When null or not provided, the first page is returned.                                                                                                                      |
| `original_page_size`   | integer |          | —                    | The original page size value before it was capped.                                                                                                                                                                                                                                                                 |
| `page_size_was_capped` | boolean |          | —                    | Indicates whether the page size was capped to the maximum allowed value.                                                                                                                                                                                                                                           |

***

### `Notion Fetch Database`

Integration name: **NOTION\_FETCH\_DATABASE**

Fetches a Notion database's structural metadata (properties, title, etc.) via its `database_id`, not the data entries; `database_id` must reference an existing database.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter     | Type   | Required | Example                                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ------------- | ------ | :------: | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `database_id` | string |     ✅    | `"2ec43c10-7ecd-8159-a8f4-ff16630df66c"` | Required. The unique identifier of the Notion database in UUID format (e.g., '2ec43c10-7ecd-8159-a8f4-ff16630df66c') or unhyphenated 32-char hex (e.g., '2ec43c107ecd8159a8f4ff16630df66c'). Must be a DATABASE ID, not a page ID. Linked databases are NOT supported - use the original source database ID. To find database IDs: use NOTION\_SEARCH\_NOTION\_PAGE with filter\_value='database', or extract from database URLs (notion.so/{database\_id}). |

***

### `Notion Fetch Row`

Integration name: **NOTION\_FETCH\_ROW**

Retrieves a Notion database row's properties and metadata; use fetch\_block\_contents for page content blocks.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter | Type   | Required | Example                                  | Description                                                                                                                                                                                                                                                    |
| --------- | ------ | :------: | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `page_id` | string |     ✅    | `"6c6a9b6c-12a4-4c3e-98e2-3c7a1e4f2d2a"` | The UUID of the Notion page (which represents a row in a database) to retrieve. Must be a page ID, not a database ID. Each row in a Notion database is a page. Use actions like NOTION\_FETCH\_DATA or NOTION\_QUERY\_DATABASE to get page IDs from databases. |

***

### `Notion Get About Me`

Integration name: **NOTION\_GET\_ABOUT\_ME**

DEPRECATED: Use GetAboutUser instead. Retrieves the User object for the bot associated with the current Notion integration token, typically to obtain the bot's user ID for other API operations.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called. *No parameters required.*

***

### `Notion Get About User`

Integration name: **NOTION\_GET\_ABOUT\_USER**

Retrieves detailed information about a specific Notion user, such as their name, avatar, and email, based on their unique user ID.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter | Type   | Required | Example                                  | Description                                                                                                                     |
| --------- | ------ | :------: | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `user_id` | string |     ✅    | `"d40e73cb-a769-4109-b8ad-14f9f4db1219"` | The unique identifier of the Notion user whose details are to be retrieved. This ID is used to fetch specific user information. |

***

### `Notion Get Page Markdown`

Integration name: **NOTION\_GET\_PAGE\_MARKDOWN**

Retrieve a Notion page's full content rendered as Notion-flavored Markdown in a single API call. Use when you need the readable content of a page without recursive block-children fetching.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter            | Type    | Required | Example                                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| -------------------- | ------- | :------: | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `page_id`            | string  |     ✅    | `"6c6a9b6c-12a4-4c3e-98e2-3c7a1e4f2d2a"` | The UUID of the Notion page to retrieve as markdown. Accepts both hyphenated (8-4-4-4-12) and unhyphenated (32 characters) UUID formats. This endpoint retrieves the full page content rendered as Notion-flavored Markdown in a single API call, avoiding the need for recursive block-children fetching. IMPORTANT: Only page IDs are accepted - database IDs will be rejected. To retrieve database content, use the 'Fetch Database' or 'Query Database' actions instead. |
| `include_transcript` | boolean |          | —                                        | Set to true to include meeting note transcripts in the markdown response. Defaults to false if not specified.                                                                                                                                                                                                                                                                                                                                                                 |

***

### `Notion Get Page Property Action`

Integration name: **NOTION\_GET\_PAGE\_PROPERTY\_ACTION**

Call this to get a specific property from a Notion page when you have a valid `page_id` and `property_id`; handles pagination for properties returning multiple items.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter      | Type    | Required | Example                                  | Description                                                                                                                                                                                                                                                                                                                                                            |
| -------------- | ------- | :------: | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `page_id`      | string  |     ✅    | `"067dd719-a912-471e-a9a3-ac10710e78b4"` | Identifier of the Notion page (e.g., '067dd719-a912-471e-a9a3-ac10710e78b4') from which to retrieve the property. Use the 'NOTION\_FETCH\_DATA' action or similar to discover available page IDs and their titles.                                                                                                                                                     |
| `page_size`    | integer |          | —                                        | For paginated property types (e.g., 'relation', 'rollup', 'rich\_text' if content is extensive), this specifies the number of items to return per request. If omitted, Notion's default page size for the property is used.                                                                                                                                            |
| `property_id`  | string  |     ✅    | `"title"`                                | Identifier or name of the property to retrieve. For 'title' properties, the ID is always 'title'. For other properties, this can be the property's name as displayed in Notion (e.g., 'Status', 'Assignee') or its unique programmatic ID (e.g., 'N%3A%5B%7C', 'prop\_id\_example'). Property IDs/names can be found by inspecting the page object or database schema. |
| `start_cursor` | string  |          | —                                        | For paginated properties, if a previous request's response indicated `has_more: true`, provide the `next_cursor` value here to fetch the subsequent set of items. Omit if fetching the first page.                                                                                                                                                                     |

***

### `Notion Insert Row Database`

Integration name: **NOTION\_INSERT\_ROW\_DATABASE**

Creates a new page (row) in a specified Notion database. Prerequisites: - Database must be shared with your integration - Property names AND types must match schema exactly (case-sensitive) - Use NOTION\_FETCH\_DATA with fetch\_type='databases' first to get exact property names and types - Each database has ONE 'title' property; other text fields are 'rich\_text' - Database must NOT have multiple data sources (synced databases are not supported) Common Errors: - 404: Database not shared with integration - 400 "not a property": Wrong property name - 400 "expected to be X": Wrong property type - 400 "multiple\_data\_sources": Database uses multiple data sources (not supported) Note: Rich text content in child\_blocks is automatically truncated to 2000 characters per Notion API limits.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter      | Type   | Required | Example                                                                                                                                                      | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| -------------- | ------ | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `icon`         | string |          | `"😻"`                                                                                                                                                       | Emoji to be used as the page icon. Must be a single emoji character.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `cover`        | string |          | `"https://google.com/image.png"`                                                                                                                             | URL of an external image to set as the page cover. The URL must point to a publicly accessible image.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `properties`   | array  |          | `"[{\"name\": \"Task Name\", \"type\": \"title\", \"value\": \"Finalize Q3 report\"}, {\"name\": \"Priority\", \"type\": \"select\", \"value\": \"High\"}]"` | Property values for the new page. Accepts a LIST of objects or a JSON-encoded string. Each object must include: `name` (exact property name, case-sensitive), `type` (property data type), and `value` (string-formatted value). Property names AND types are CASE-SENSITIVE and must match your Notion database schema exactly. Each database has exactly ONE 'title' type property; all other text properties use 'rich\_text'. Use NOTION\_FETCH\_DATA with fetch\_type='databases' to find exact property names and types. CORRECT FORMAT (list of property objects): \[ {"name": "Task Name", "type": "title", "value": "Finalize Q3 report"}, {"name": "Priority", "type": "select", "value": "High"}, {"name": "Tags", "type": "multi\_select", "value": "Work,Personal"}, {"name": "Due Date", "type": "date", "value": "2024-06-01T12:00:00.000-04:00"}, {"name": "Completed", "type": "checkbox", "value": "False"} ] INCORRECT FORMAT (dict - causes validation error): {"Task Name": "value", "Priority": "High"} 'status' vs 'select' TYPE CONFUSION: - Dropdown lists use type='select' - even if the property is NAMED 'Status'. - The 'status' type is a special Notion property with workflow groups ('To-do', 'In progress', 'Complete'). - Use NOTION\_FETCH\_DATA to verify the actual type in your database schema. PROPERTY TYPE ERRORS: - 'X is not a property that exists': Check schema - wrong property name or wrong type. - 'X is expected to be Y': Wrong type specified - use the type shown in the error. Value formatting rules by type: - `title` / `rich_text`: Plain text string (max 2000 chars). - `number`: String of a number (e.g., "23.4"). - `select`: Single option name. Commas NOT allowed - use 'multi\_select' for multiple values. - `multi_select`: Comma-separated option names (e.g., "Work,Personal"). Options must exist in schema. - `date`: ISO 8601. Single: "2024-06-01T12:00:00.000-04:00". Range: "start/end" separated by "/". - `people`: Comma-separated Notion user IDs. - `relation`: Comma-separated page UUIDs (NOT text/titles). Use NOTION\_QUERY\_DATABASE to get page IDs. - `checkbox`: "True" or "False". - `url`: Valid URL string. - `files`: Comma-separated URLs. - `email`: Valid email string. - `phone_number`: Phone number string. Only use if database property type is 'Phone'. |
| `database_id`  | string |     ✅    | `"59833787-2cf9-4fdf-8782-e53db20768a5"`                                                                                                                     | Identifier (UUID) of the Notion database where the new page (row) will be inserted. Can be provided with or without hyphens (e.g., '59833787-2cf9-4fdf-8782-e53db20768a5' or '598337872cf94fdf8782e53db20768a5'). This ID must correspond to an existing database that has been explicitly shared with your integration. IMPORTANT: The database must be shared with your integration in Notion settings, otherwise you will get a 404 error. NOTE: Databases with multiple data sources (synced databases or combined views) are not supported by this integration. Use the `NOTION_FETCH_DATA` action to find available database IDs that are already shared with your integration.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `child_blocks` | array  |          | —                                                                                                                                                            | A list of `NotionRichText` objects defining content blocks (e.g., paragraphs, headings, media) to append to the new page's body. Accepts either a list of objects OR a JSON-encoded string representing a list. If omitted, the page body will be empty. **Supported block types:** paragraph, heading\_1, heading\_2, heading\_3, callout, to\_do, toggle, quote, bulleted\_list\_item, numbered\_list\_item, divider, image, video, file. **Media blocks (image, video, file):** Require the `link` field with an external URL. The Notion API does not support uploading files directly - you must provide publicly accessible URLs. **Note:** Notion API limits children to 100 blocks per request. If more than 100 blocks are provided, the action will automatically create the page with the first 100 blocks and then append remaining blocks in subsequent API calls.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |

***

### `Notion Insert Row From Nl`

Integration name: **NOTION\_INSERT\_ROW\_FROM\_NL**

Creates a new row (page) in a Notion database from a natural language description. Fetches the database schema at runtime, uses an LLM to generate the correctly-formatted property payload, and creates the page.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter     | Type   | Required | Example                                  | Description                                                                                                                                |
| ------------- | ------ | :------: | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `icon`        | string |          | `"📝"`                                   | Optional emoji icon for the page.                                                                                                          |
| `cover`       | string |          | —                                        | Optional cover image URL for the page.                                                                                                     |
| `nl_query`    | string |     ✅    | —                                        | Natural language description of the row to create. Example: 'Add task: Review PR #14143, priority High, status In Progress, due tomorrow'. |
| `database_id` | string |     ✅    | `"59833787-2cf9-4fdf-8782-e53db20768a5"` | Notion database UUID where the new row will be inserted. Can be provided with or without hyphens.                                          |

***

### `Notion List Data Source Templates`

Integration name: **NOTION\_LIST\_DATA\_SOURCE\_TEMPLATES**

Tool to list all templates for a Notion data source. Use when needing to discover template IDs/names for bulk page creation. Use after confirming the data\_source\_id.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter        | Type    | Required | Example                                  | Description                                                                                            |
| ---------------- | ------- | :------: | ---------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| `page_size`      | integer |          | `50`                                     | Number of templates to return per page (1–100). Defaults to 100 if omitted.                            |
| `start_cursor`   | string  |          | `"d88b2f0c-efb1-4a6f-9d3b-1a2c3e4f5b67"` | Cursor for pagination. Use the `next_cursor` value from a previous response to retrieve the next page. |
| `data_source_id` | string  |     ✅    | `"b724c3f2-8a7a-4d5a-9e12-d4f3e1a7b890"` | Data source ID (UUIDv4). Path parameter identifying the data source to list templates from.            |

***

### `Notion List File Uploads`

Integration name: **NOTION\_LIST\_FILE\_UPLOADS**

Tool to retrieve file uploads for the current bot integration, sorted by most recent first. Use when you need to list all file uploads or paginate through file upload history.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter      | Type    | Required | Example                                  | Description                                                                                                                                                    |
| -------------- | ------- | :------: | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `page_size`    | integer |          | `100`                                    | Controls how many items the response includes from the complete list. Maximum 100, default 100. The actual response may contain fewer results than requested.  |
| `start_cursor` | string  |          | `"2ca8d5ed-53a6-81f7-b5a0-00b20e08ccf3"` | Accepts a next\_cursor value from a previous response. Treat as an opaque value to retrieve subsequent result pages. If omitted, begins from the list's start. |

***

### `Notion List Users`

Integration name: **NOTION\_LIST\_USERS**

Retrieves a paginated list of users (excluding guests) from the Notion workspace; the number of users returned per page may be less than the requested `page_size`.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter      | Type    | Required | Example | Description                                                                                                                |
| -------------- | ------- | :------: | ------- | -------------------------------------------------------------------------------------------------------------------------- |
| `page_size`    | integer |          | —       | The desired number of users to retrieve per page. The maximum value is 100.                                                |
| `start_cursor` | string  |          | —       | If omitted, retrieves the first page of users. Use the 'next\_cursor' value from a previous response to get the next page. |

***

### `Notion Move Page`

Integration name: **NOTION\_MOVE\_PAGE**

Tool to move a Notion page to a new parent (page or database). Use when you need to reorganize page hierarchy. Important: To move to a database, use data\_source\_id (NOT database\_id). Get the data source ID from the database object using NOTION\_FETCH\_DATABASE.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter | Type   | Required | Example                                                               | Description                                                                                                                                                                                                                                                                                                                                    |
| --------- | ------ | :------: | --------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `parent`  | —      |     ✅    | `{"type":"page_id","page_id":"f336d0bc-b841-465b-8045-024475c079dd"}` | Parent destination for the page. Use type='page\_id' with page\_id to move under another page (the page\_id must reference a page, not a database). Use type='data\_source\_id' with data\_source\_id to move into a database. Common mistake: Using type='page\_id' with a database ID will fail - databases require type='data\_source\_id'. |
| `page_id` | string |     ✅    | `"59833787-2cf9-4fdf-8782-e53db20768a5"`                              | The ID of the page to move. UUID format with or without dashes is supported.                                                                                                                                                                                                                                                                   |

***

### `Notion Query Database`

Integration name: **NOTION\_QUERY\_DATABASE**

Queries a Notion database to retrieve pages (rows). In Notion, databases are collections where each row is a page and columns are properties. Returns paginated results with metadata. Important requirements: - The database must be shared with your integration - Property names in sorts must match existing database properties exactly (case-sensitive) - For timestamp sorting, use 'created\_time' or 'last\_edited\_time' (case-insensitive) - The start\_cursor must be a valid UUID from a previous response's next\_cursor field - Database IDs must be valid 32-character UUIDs (with or without hyphens) Use this action to: - Retrieve all or filtered database entries - Sort results by database properties or page timestamps - Paginate through large result sets - Get database content for processing or display

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter      | Type    | Required | Example                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| -------------- | ------- | :------: | ------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `sorts`        | array   |          | `[{"ascending":false,"property_name":"created_time"}]` | List of sort rules to order the database query results. Each sort rule must specify: 'property\_name' (name of database property or timestamp field) and 'ascending' (True/False). For database properties: names must match exactly (case-sensitive). For timestamps: use 'created\_time' or 'last\_edited\_time' (case-insensitive). Multiple sorts are applied in the order specified.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `page_size`    | integer |          | `10`                                                   | Number of items (database rows/pages) to return per request. Valid range: 1-100. Default is 100. The API may return fewer items than requested if that's all that's available.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `database_id`  | string  |     ✅    | `"260beeb0-57b4-80df-acc9-c3620f730dee"`               | The UUID of the Notion DATABASE to query (32-character hex string, optionally with hyphens). Query parameters (e.g., ?v=viewid) from Notion URLs are automatically stripped. IMPORTANT: This must be a DATABASE ID, not a page ID. Pages and databases are different object types in Notion. A database is a collection/table that contains pages as rows. If you have a page ID, you cannot use it here. How to obtain a database ID: Use NOTION\_SEARCH\_NOTION\_PAGE with filter\_value='database' to list accessible databases, or find it in the Notion URL of a database view (the 32-char ID after the workspace name). Common error: If you receive 'validation\_error' with message 'Provided ID is a page, not a database', you have passed a page ID instead of a database ID. Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx or xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| `start_cursor` | string  |          | `"67890abc-def0-1234-5678-9abcdef01234"`               | A pagination cursor for fetching the next page of results. Must be a valid UUID string (format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) obtained from the 'next\_cursor' field of a previous query response. Do not use placeholder values. If omitted, returns the first page.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |

***

### `Notion Query Database With Filter`

Integration name: **NOTION\_QUERY\_DATABASE\_WITH\_FILTER**

Tool to query a Notion database with server-side filtering, sorting, and pagination. Use when you need to retrieve a subset of rows by property, date, status, or other conditions.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter                    | Type    | Required | Example                                             | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ---------------------------- | ------- | :------: | --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `sorts`                      | array   |          | `{"property":"Priority","direction":"descending"}`  | List of sort criteria in order of precedence. Use PropertySort for database properties (with property field) and TimestampSort for system timestamps (with timestamp='created\_time' or 'last\_edited\_time'). IMPORTANT: To sort by page creation or last edited time, you MUST use the TimestampSort format with timestamp='created\_time' or timestamp='last\_edited\_time', NOT property names like 'Created' or 'Last Edited'. Common timestamp field name variations (Created, creation time, Last Edited, etc.) will be automatically converted to the correct format.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `filter`                     | object  |          | `{"select":{"equals":"To Do"},"property":"Status"}` | PREREQUISITE: Call NOTION\_FETCH\_DATABASE first to discover property names and types. Filter type keys MUST match the property's actual type in the schema. Each filter object MUST contain exactly ONE filter type key. For multiple conditions, use compound filters: {"and": \[{"property": "Name", "title": {...}}, {"property": "Description", "rich\_text": {...}}]}. 'title' IS A RESERVED PROPERTY NAME: 'title' always refers to the database's built-in primary title column (type 'title', NOT 'select' or 'rich\_text'). Even custom properties named 'title' are treated as the built-in title column. FILTER TYPE MUST MATCH SCHEMA TYPE: Property names are NOT reliable indicators of type. A property named 'Status' could be type 'select' in one database but type 'status' in another. 'select' is for dropdowns; 'status' is ONLY for Notion's built-in Status property with workflow groups. SELECT/STATUS/MULTI\_SELECT VALUES ARE CASE-SENSITIVE: Option names must match EXACTLY as defined in the database schema, including capitalization and emoji prefixes (e.g., 'Done' not 'done', '✅ Done' not 'Done'). Common mistake: using 'done' when the actual option is 'Done'. Check the database schema for exact option names. Valid filter type keys: title, rich\_text, number, checkbox, select, multi\_select, status, date, people, files, url, email, phone\_number, relation, created\_by, created\_time, last\_edited\_by, last\_edited\_time, formula, unique\_id, rollup, verification, timestamp. FORMULA FILTERS: Structure: {'property': '', 'formula': {\<result\_type>: {: }}}. Result types: 'string' (rich\_text conditions), 'number' (numeric conditions), 'date' (date conditions), 'checkbox' (boolean conditions). The result type MUST match the formula's actual output type. If the formula property value shows type 'boolean', use 'checkbox' in the filter (API naming mismatch). Some complex formulas are unfilterable ('Unable to filter based on a formula of unknown type') - use client-side filtering instead. NOTE: 'text' is NOT valid - use 'rich\_text' for text properties or 'title' for title properties. SYSTEM TIMESTAMP FILTERS: Use simplified format: {"created\_time": {"on\_or\_after": "2024-01-01"}} - auto-transformed to correct API format. Filter structure for database properties: {"property": "\<property\_name>", "\<filter\_type>": {"": ""}}. Common conditions by type: title/rich\_text: equals, contains, starts\_with, ends\_with, is\_empty, is\_not\_empty; select/status: equals, does\_not\_equal, is\_empty, is\_not\_empty; number: equals, does\_not\_equal, greater\_than, less\_than, greater\_than\_or\_equal\_to, less\_than\_or\_equal\_to, is\_empty, is\_not\_empty; checkbox: equals (true/false); date: equals, before, after, on\_or\_before, on\_or\_after, is\_empty, is\_not\_empty, past\_week, past\_month, past\_year, next\_week, next\_month, next\_year; relation: contains, does\_not\_contain (both require a valid page UUID), is\_empty, is\_not\_empty. ROLLUP FILTERS: Require a nested aggregation type wrapper. Do NOT use flat filters like {"rollup": {"contains": "value"}}. Instead use one of: (1) {"rollup": {"any": {}}} - matches if ANY related item satisfies condition; (2) {"rollup": {"every": {}}} - matches if ALL related items satisfy condition; (3) {"rollup": {"none": {}}} - matches if NO related items satisfy condition; (4) {"rollup": {"number": {\<number\_condition>}}} - for number rollup aggregations (count, sum, avg, etc.); (5) {"rollup": {"date": {\<date\_condition>}}} - for date rollup aggregations (earliest, latest). Inside rollup.any/every/none, use the filter type matching the underlying property type. Compound filters use 'and' or 'or' arrays: {"and": \[, ]} or {"or": \[, ]}. |
| `page_size`                  | integer |          | `10`                                                | Maximum number of items to return (1–100). Defaults to 100 if omitted.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `database_id`                | string  |     ✅    | `"260beeb0-57b4-80df-acc9-c3620f730dee"`            | The UUID of the Notion database to query (32 character hex string, with hyphens or without). IMPORTANT: This must be a DATABASE ID, not a page ID. Page IDs and database IDs are different things. If you have a page URL/ID, that is NOT the same as the database ID - inline databases within pages have their own separate database IDs distinct from the parent page ID. Use NOTION\_SEARCH\_NOTION\_PAGE or NOTION\_FETCH\_DATABASE to discover the correct database ID. The database must be shared with your integration.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `start_cursor`               | string  |          | `"67890abc-def0-1234-5678-9abcdef01234"`            | Cursor from a prior response's `next_cursor` for fetching the next page. Must be a valid UUID format (32-character hex string with hyphens or without).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `composio_execution_message` | string  |          | —                                                   | Internal message about any automatic conversions made during execution.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |

***

### `Notion Query Data Source`

Integration name: **NOTION\_QUERY\_DATA\_SOURCE**

Tool to query a Notion data source. Use when you need to retrieve pages or child data sources with filters, sorts, and pagination. Make paginated requests using cursors and optional property filters for efficient data retrieval.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter           | Type    | Required | Example                                                   | Description                                                                                                                      |
| ------------------- | ------- | :------: | --------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `sorts`             | array   |          | `{"property":"Priority","direction":"descending"}`        | List of sort criteria in order of precedence. Use PropertySort for property fields or TimestampSort for creation/edit times.     |
| `filter`            | object  |          | `{"status":{"equals":"In Progress"},"property":"Status"}` | Filter object to limit returned entries. Supports single-property filters or compound filters using 'and'/'or'.                  |
| `page_size`         | integer |          | `10`                                                      | Maximum number of items to return (1-100). Defaults to 100 if omitted.                                                           |
| `start_cursor`      | string  |          | `"67890abc-def0-1234-5678-9abcdef01234"`                  | Cursor from a prior response's `next_cursor` for fetching the next page.                                                         |
| `data_source_id`    | string  |     ✅    | `"f47ac10b-58cc-4372-a567-0e02b2c3d479"`                  | UUID of the Notion data source to query (with or without hyphens). URI prefixes like 'collection://' are automatically stripped. |
| `filter_properties` | array   |          | `["title","status"]`                                      | List of property IDs to include in each returned item; maps to the `filter_properties[]` query parameter.                        |

***

### `Notion Replace Page Content`

Integration name: **NOTION\_REPLACE\_PAGE\_CONTENT**

Safely replaces a page's child blocks by optionally backing up current content, deleting existing children, then appending new children in batches. Use when you need to rebuild a page without leaving partial states. Notion does not provide atomic transactions; this tool orchestrates a multi-step workflow with optional backup to reduce risk.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter                   | Type    | Required | Example                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| --------------------------- | ------- | :------: | ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `dry_run`                   | boolean |          | —                                                                                                                      | If True, returns what would be deleted and appended without making any changes. Use to preview the operation.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `page_id`                   | string  |     ✅    | `"b55c9c91-384d-452b-81db-d1ef79372b75"`                                                                               | The unique identifier (UUID) of the page whose content will be replaced. Must be a valid Notion page ID in UUID format (with or without hyphens).                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `new_children`              | array   |     ✅    | `[{"type":"paragraph","object":"block","paragraph":{"rich_text":[{"text":{"content":"New content"},"type":"text"}]}}]` | Array of block objects to append to the page after clearing existing content. Supported types: paragraph, heading\_1/2/3, bulleted\_list\_item, numbered\_list\_item, to\_do, toggle, callout, code, quote, equation, image, video, audio, file, pdf, embed, bookmark, divider, table\_of\_contents, breadcrumb, column\_list, column, table, table\_row. Each block MUST include 'type' field and type-specific content. Text blocks must use 'rich\_text' array structure with max 2000 chars per text.content. Will be appended in batches of up to 100 blocks to respect Notion API limits. |
| `backup_parent`             | object  |          | —                                                                                                                      | Parent specification for backup page creation.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `create_backup`             | boolean |          | —                                                                                                                      | Whether to create a backup page with the current content before replacing it. Strongly recommended when replacing important content.                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `backup_title_suffix`       | string  |          | —                                                                                                                      | Suffix to append to the original page title when creating a backup page.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `archive_existing_children` | boolean |          | —                                                                                                                      | Whether to delete (archive) existing child blocks before appending new content. Set to False to keep existing content and only append new blocks.                                                                                                                                                                                                                                                                                                                                                                                                                                               |

***

### `Notion Retrieve Comment`

Integration name: **NOTION\_RETRIEVE\_COMMENT**

Tool to retrieve a specific comment by its ID. Use when you have a comment ID and need to fetch its details.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter    | Type   | Required | Example                                  | Description                             |
| ------------ | ------ | :------: | ---------------------------------------- | --------------------------------------- |
| `comment_id` | string |     ✅    | `"123e4567-e89b-12d3-a456-426614174000"` | Identifier for the comment to retrieve. |

***

### `Notion Retrieve Database Property`

Integration name: **NOTION\_RETRIEVE\_DATABASE\_PROPERTY**

Tool to retrieve a specific property object of a Notion database. Use when you need to get details about a single database column/property.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter     | Type   | Required | Example                                  | Description                                                                                                                                                                                                                                                                                                         |
| ------------- | ------ | :------: | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `database_id` | string |     ✅    | `"a1b2c3d4-e5f6-7890-1234-abcdef123456"` | Identifier for the database.                                                                                                                                                                                                                                                                                        |
| `property_id` | string |     ✅    | `"title"`                                | Identifier for the property. This can be the property ID (e.g., 'GZtn') or the property name (e.g., 'Status'). Supports URL-encoded values (e.g., 'kD%5ER' decodes to 'kD^R'). Property name matching is case-sensitive but supports Unicode normalization for characters that can be represented in multiple ways. |

***

### `Notion Retrieve File Upload`

Integration name: **NOTION\_RETRIEVE\_FILE\_UPLOAD**

Tool to retrieve details of a Notion File Upload object by its identifier. Use when you need to check the status or details of an existing file upload.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter        | Type   | Required | Example                                  | Description                                                  |
| ---------------- | ------ | :------: | ---------------------------------------- | ------------------------------------------------------------ |
| `file_upload_id` | string |     ✅    | `"2ca8d5ed-53a6-81f7-b5a0-00b20e08ccf3"` | The unique identifier (UUID) of the file upload to retrieve. |

***

### `Notion Retrieve Page`

Integration name: **NOTION\_RETRIEVE\_PAGE**

Retrieve a Notion page's properties/metadata (not block content) by page\_id. Use when you have a page URL/ID and need to access its properties; for page content use block-children tools.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter | Type   | Required | Example                                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| --------- | ------ | :------: | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `page_id` | string |     ✅    | `"6c6a9b6c-12a4-4c3e-98e2-3c7a1e4f2d2a"` | The UUID of the Notion page to retrieve. Accepts both hyphenated (8-4-4-4-12) and unhyphenated (32 characters) UUID formats. IMPORTANT: Must be a PAGE ID, not a database ID. If you have a database ID, use NOTION\_FETCH\_DATABASE instead. This endpoint returns page properties and metadata, not page content (use block-children tools for content). For pages with properties containing more than 25 references, use NOTION\_GET\_PAGE\_PROPERTY\_ACTION to retrieve complete property values. |

***

### `Notion Search Notion Page`

Integration name: **NOTION\_SEARCH\_NOTION\_PAGE**

Searches Notion pages and databases by title. Use specific search terms to find items by title (primary approach). KNOWN LIMITATIONS: (1) Search indexing is not immediate - recently shared items may not appear. (2) Search is not exhaustive - results may be incomplete. (3) Database pages return all custom properties with full nested structures, which can create large responses for databases with many properties - use filter\_properties to reduce response size. FALLBACK STRATEGY: If a specific title search returns empty results despite knowing items exist, try an empty query to list all accessible items and filter client-side.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter           | Type    | Required | Example       | Description                                                                                                                                                                                                                                                                                                                                                             |
| ------------------- | ------- | :------: | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `query`             | string  |          | —             | Text to search for in page and database titles. Use specific search terms to find items by title (primary approach). Note: Notion's search has known limitations - indexing is not immediate and recently shared items may not appear. If a specific query returns empty results, try an empty query as a fallback to list all accessible items and filter client-side. |
| `direction`         | string  |          | `"ascending"` | Specifies the sort direction for the results. Required if `timestamp` is provided. Valid values are `ascending` or `descending`.                                                                                                                                                                                                                                        |
| `page_size`         | integer |          | —             | The number of items to include in the response. Must be an integer between 1 and 100, inclusive. Defaults to 25.                                                                                                                                                                                                                                                        |
| `timestamp`         | string  |          | —             | The timestamp field to sort the results by. Currently, the only supported value is `last_edited_time`. If provided, `direction` must also be specified.                                                                                                                                                                                                                 |
| `filter_value`      | string  |          | `"page"`      | Filters results by object type: 'page' or 'database'. Note: When searching databases, Notion's search may not find recently shared or newly created databases due to indexing delays. If specific database searches return empty results, try an empty query with filter\_value='database' as a fallback to list all accessible databases.                              |
| `start_cursor`      | string  |          | —             | An opaque cursor value from a previous response's `next_cursor` field. Must be exactly as returned by the API - do not pass page IDs, database IDs, or any other identifiers. If `None`, empty, or invalid, results start from the beginning.                                                                                                                           |
| `filter_property`   | string  |          | `"object"`    | The property to filter the search results by. Currently, the only supported value is `object`, which filters by the type specified in `filter_value`. Defaults to `object`.                                                                                                                                                                                             |
| `filter_properties` | array   |          | —             | List of property names to include in the response for page results. When specified, only these properties will be returned in each page's 'properties' object, reducing response size. Useful for database pages with many custom properties. If not specified, all properties are returned. Note: This filter is applied client-side after receiving the API response. |

***

### `Notion Send File Upload`

Integration name: **NOTION\_SEND\_FILE\_UPLOAD**

Tool to transmit file contents to Notion for a file upload object. Use after creating a file upload object to send the actual file data.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter             | Type    | Required | Example                                  | Description                                                                                                                                                                 |
| --------------------- | ------- | :------: | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `file`                | object  |     ✅    | —                                        | File information including name and mimetype. FileInfo object where 'name' is the filename (e.g., 'document.pdf', 'test.txt').                                              |
| `part_number`         | integer |          | `1`                                      | Required when the file upload mode is 'multi\_part'. Indicates which part is being sent (parts are numbered starting from 1). For single-part uploads, omit this parameter. |
| `file_upload_id`      | string  |     ✅    | `"2ca8d5ed-53a6-81b9-812e-00b2d59c16b4"` | Identifier of the file upload object to send data for. This ID is obtained from the Create File Upload action.                                                              |
| `file_content_base64` | string  |          | —                                        | Optional base64-encoded file content. If provided, this will be used instead of downloading from S3 or reading from file\_path. Useful for direct file content submission.  |

***

### `Notion Update Block`

Integration name: **NOTION\_UPDATE\_BLOCK**

Updates existing Notion block's text content. ⚠️ CRITICAL: Content limited to 2000 chars. Cannot change block type or archive blocks. Content exceeding 2000 chars will fail with validation error. For longer content, split across multiple blocks using add\_multiple\_page\_content.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter               | Type   | Required | Example                                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ----------------------- | ------ | :------: | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `content`               | string |     ✅    | `"This is the updated line of text."`    | The new text content for the block. Replaces existing text content entirely. ⚠️ CRITICAL: Notion API enforces a HARD LIMIT of 2000 characters per text.content field. Content exceeding 2000 chars will cause a validation error. For longer content, split across multiple blocks using append\_block\_children or add\_multiple\_page\_content.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `block_id`              | string |     ✅    | `"a1b2c3d4-e5f6-7890-1234-567890abcdef"` | Identifier of the Notion block to be updated. Must be a valid UUID (with or without dashes). To find a block's ID, other Notion actions that list or retrieve blocks can be used. For updating content within a page (which is also a block), its ID can be obtained using actions like `NOTION_FETCH_DATA` to get page IDs and titles.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `language`              | string |          | `"python"`                               | Programming language for code blocks. Required when block\_type='code'. Supported values include: 'abap', 'arduino', 'bash', 'basic', 'c', 'clojure', 'coffeescript', 'c++', 'c#', 'css', 'dart', 'diff', 'docker', 'elixir', 'elm', 'erlang', 'flow', 'fortran', 'f#', 'gherkin', 'glsl', 'go', 'graphql', 'groovy', 'haskell', 'html', 'java', 'javascript', 'json', 'julia', 'kotlin', 'latex', 'less', 'lisp', 'livescript', 'lua', 'makefile', 'markdown', 'markup', 'matlab', 'mermaid', 'nix', 'objective-c', 'ocaml', 'pascal', 'perl', 'php', 'plain text', 'powershell', 'prolog', 'protobuf', 'python', 'r', 'reason', 'ruby', 'rust', 'sass', 'scala', 'scheme', 'scss', 'shell', 'sql', 'swift', 'typescript', 'vb.net', 'verilog', 'vhdl', 'visual basic', 'webassembly', 'xml', 'yaml', 'java/c/c++/c#'. If not provided for a code block, the existing language will be preserved. |
| `block_type`            | string |          | `"paragraph"`                            | The type of the block being updated. If not provided, the action will automatically detect the block type by fetching the block first (adds 1 extra API call). If provided, it must match the EXISTING block's type - you cannot change a block's type. Supported types: 'paragraph', 'heading\_1', 'heading\_2', 'heading\_3', 'bulleted\_list\_item', 'numbered\_list\_item', 'to\_do', 'toggle', 'code', 'quote', 'callout'.                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `additional_properties` | object |          | `{"checked":true}`                       | Optional dictionary of type-specific properties. Common examples: 'checked' (boolean) for to\_do blocks to mark complete/incomplete, 'color' (string like 'blue\_background', 'gray', 'red') for text styling, 'is\_toggleable' (boolean) for heading blocks to make them collapsible, 'icon' (object with 'type' and 'emoji' fields) for callout blocks. NOTE: Cannot use 'archived' here - use NOTION\_DELETE\_BLOCK to remove blocks instead. NOTE: Null/None values are automatically filtered out (omitting a property preserves its existing value).                                                                                                                                                                                                                                                                                                                                         |

***

### `Notion Update Page`

Integration name: **NOTION\_UPDATE\_PAGE**

Update page properties, icon, cover, or archive status. IMPORTANT: Property names are workspace-specific and case-sensitive. Use NOTION\_FETCH\_ROW or NOTION\_FETCH\_DATABASE first to discover exact property names and valid select/status options. Common errors: - "X is not a property that exists": Discover properties with NOTION\_FETCH\_ROW - "Invalid status option": Check valid options with NOTION\_FETCH\_DATABASE - "should be defined": Wrap values: {'Field': {'type': value}} Property formats: title/rich\_text use {'text': {'content': 'value'}}, select/status use {'name': 'option'}

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter    | Type    | Required | Example                                                                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ------------ | ------- | :------: | ------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `icon`       | object  |          | `{"type":"emoji","emoji":"🎉"}`                                          | Page icon object. At least one of properties, archived, icon, or cover is required.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `cover`      | object  |          | `{"type":"external","external":{"url":"https://example.com/cover.png"}}` | Page cover image. Must contain either 'external' (with url) or 'file\_upload' key. Empty dicts are treated as no-op. At least one of properties, archived, icon, or cover is required.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `page_id`    | string  |     ✅    | `"59833787-2cf9-4fdf-8782-e53db20768a5"`                                 | Identifier for the Notion page to be updated. Use 'page\_id' as the parameter name (not 'id').                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `archived`   | boolean |          | —                                                                        | Set to true to archive (trash) the page, false to restore. Note: Workspace-level pages (pages in the sidebar that are not inside a database or another page) may not be archivable via the API depending on workspace configuration. Setting archived=true on an already-archived page or a page with an archived ancestor will be handled gracefully (returns current state without error). At least one of properties, archived, icon, or cover is required.                                                                                                                                                                                                                                                                                                                                              |
| `properties` | object  |          | `{"Name":{"title":[{"text":{"content":"New Title"}}]}}`                  | Dictionary mapping property names to property value objects. IMPORTANT: Property names are workspace-specific and case-sensitive. Before updating, use NOTION\_FETCH\_ROW (for database pages) or NOTION\_FETCH\_DATABASE to discover the exact property names available in your database. Common properties like 'Status', 'Name', or 'Tags' may have different names in your workspace (e.g., 'Task Name', 'Priority'). For status/select properties, valid option values also vary by workspace - check the database schema for available options. Values must be wrapped in property type objects - never send plain values. Example: {'Status': {'select': {'name': 'Done'}}} not {'Status': 'Done'}. For relation properties, IDs must be valid UUIDs (format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx). |

***

### `Notion Update Row Database`

Integration name: **NOTION\_UPDATE\_ROW\_DATABASE**

Updates a specific row/page within a Notion database by its page UUID (row\_id). IMPORTANT CLARIFICATION: This action updates INDIVIDUAL ROWS (pages) in a database, NOT the database structure. - To update a ROW/PAGE: Use THIS action with `row_id` (the page UUID) - To update DATABASE SCHEMA (columns, properties, title): Use NOTION\_UPDATE\_SCHEMA\_DATABASE with `database_id` REQUIRED: `row_id` is MANDATORY. This is the UUID of the specific page/row to update. Do NOT pass `database_id` to this action - that parameter does not exist here. Common issues: (1) Use UUID from page URL, not the full URL (2) Ensure page is shared with integration (3) Match property names exactly as in database (4) Use 'status' type for Status properties, not 'select' (5) Retry on 409 Conflict errors (concurrent updates) Supports updating properties, icon, cover, or archiving the row.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter    | Type    | Required | Example                                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ------------ | ------- | :------: | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `icon`       | string  |          | `"😻"`                                   | The emoji to be used as the icon for the page. Must be a single emoji character (e.g., '😻', '🤔'). Empty strings or whitespace-only values are ignored.                                                                                                                                                                                                                                                                                                                                                    |
| `cover`      | string  |          | `"https://google.com/image.png"`         | URL of an external image to be used as the cover for the page (e.g., '<https://google.com/image.png>'). Empty strings or whitespace-only values are ignored.                                                                                                                                                                                                                                                                                                                                                |
| `row_id`     | string  |     ✅    | `"59833787-2cf9-4fdf-8782-e53db20768a5"` | REQUIRED: The page UUID of the database row to update. This is a PAGE ID (not a database ID). A database row in Notion is actually a page - use the page's UUID here. Format: 32-character UUID with hyphens (e.g., '59833787-2cf9-4fdf-8782-e53db20768a5'). NOT a URL or page title. Find this ID in the page URL or via 'Copy link' in Notion. NOTE: To update DATABASE structure/schema, use NOTION\_UPDATE\_SCHEMA\_DATABASE instead. This action only updates individual rows/pages within a database. |
| `delete_row` | boolean |          | `true`                                   | If true, the row (page) will be archived, effectively deleting it from the active view. If the page is already archived, the action will return success with the current page state. If false, the row will be updated with other provided data.                                                                                                                                                                                                                                                            |
| `properties` | array   |          | —                                        | List of properties to update. Each property requires: (1) 'name' - exact property name as shown in Notion, (2) 'type' - the property type (title, rich\_text, number, select, status, multi\_select, date, people, relation, checkbox, url, email, phone\_number, files), (3) 'value' - formatted according to type. IMPORTANT: Verify property names exist in the database and match the exact case. Use 'status' type for Status properties, NOT 'select'. Properties not listed will remain unchanged.   |

***

### `Notion Update Schema Database`

Integration name: **NOTION\_UPDATE\_SCHEMA\_DATABASE**

Updates an existing Notion database's schema including title, description, and/or properties (columns). IMPORTANT NOTES: - At least one update (title, description, or properties) must be provided - The database must be shared with your integration - Property names are case-sensitive and must match exactly - When changing a property to 'relation' type, you MUST provide the database\_id of the target database - Removing properties will permanently delete that column and its data - Use NOTION\_FETCH\_DATA first to get the exact property names and database structure Common errors: - 'database\_id' missing: Ensure you're passing the database\_id parameter (not page\_id) - 'data\_source\_id' undefined: When changing to relation type, database\_id is required in PropertySchemaUpdate - Property name mismatch: Names must match exactly including case and special characters

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter     | Type   | Required | Example                                                                     | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ------------- | ------ | :------: | --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `title`       | string |          | —                                                                           | New title for the database. Leave as None or omit to keep the existing title unchanged. This updates the database name visible in Notion. At least one of (title, description, or properties) must be provided.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `properties`  | array  |          | `[{"name":"Status","new_type":"select"},{"name":"Priority","remove":true}]` | List of property (column) updates for the database schema. At least one of (title, description, or properties) must be provided. Each PropertySchemaUpdate must specify: 1) 'name': The EXACT case-sensitive name of the existing property 2) One of these actions: - 'rename': Change the property name - 'new\_type': Change the property type (see PropertySchemaUpdate for valid types) - 'remove': Set to true to delete the property IMPORTANT: When changing a property to 'relation' type, you MUST also provide 'database\_id' with the UUID of the target database to link to. Example: \[{'name': 'Status', 'new\_type': 'select'}, {'name': 'Tasks', 'new\_type': 'relation', 'database\_id': 'abc123...'}] |
| `database_id` | string |     ✅    | `"d9824bdc-8445-4327-be8b-554d41f30b60"`                                    | REQUIRED: The UUID identifier of the Notion database to update. IMPORTANT: This must be a DATABASE ID, not a page ID. Page IDs and database IDs are both UUIDs but they are NOT interchangeable - passing a page ID will result in an error. Use NOTION\_FETCH\_DATA with get\_databases=true to get available database IDs. Format: UUID with or without hyphens (e.g., 'd9824bdc-8445-4327-be8b-554d41f30b60'). The database must be shared with your integration. NOTE: At least one of (title, description, or properties) must also be provided to perform an update.                                                                                                                                              |
| `description` | string |          | —                                                                           | New description for the database. Leave as None or omit to keep the existing description unchanged. This updates the description text shown below the database title. At least one of (title, description, or properties) must be provided.                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |

***

### `Notion Upsert Row Database`

Integration name: **NOTION\_UPSERT\_ROW\_DATABASE**

Tool to upsert rows in a Notion database by querying for existing rows and creating or updating them. Use when you need to sync data to Notion without creating duplicates. Each item is matched by a filter, then either created (if no match) or updated (if match found). Supports bulk operations with per-item error handling.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter        | Type   | Required | Example                                  | Description                                                                                                                                                     |
| ---------------- | ------ | :------: | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `items`          | array  |     ✅    | —                                        | Array of items to upsert. Each item contains match criteria and create/update payloads.                                                                         |
| `options`        | object |          | —                                        | Options controlling upsert behavior.                                                                                                                            |
| `database_id`    | string |          | `"a12b3c4d-5e6f-7890-abcd-ef1234567890"` | UUID of the Notion database (legacy). If provided without data\_source\_id, will attempt to resolve to data\_source\_id. Only safe for single-source databases. |
| `data_source_id` | string |          | `"f47ac10b-58cc-4372-a567-0e02b2c3d479"` | UUID of the Notion data source (preferred). Required if database\_id is not provided.                                                                           |

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.toolhouse.ai/toolhouse/integrations/notion.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
