Email & Productivity
🗂️ Notion integration
Access levels: Read-only · Read + comment · Read + write · Full access · Verified
Email & Productivity
Access levels: Read-only · Read + comment · Read + write · Full access · Verified
Connect Notion once and every agent in your squad can work in it for you, with exactly as much access as you decide to give, and a receipt for every call it makes.
You can change an account's access level any time under Manage. It applies instantly, no re-authorization. If the connection ever expires, the card shows Reconnect; one click re-authorizes the same account with the same settings.
Multiple accounts: connect as many as you need (say, yours and a client's). One is primary. Agents use it unless a mission says otherwise.
The level you pick at connect time is enforced on our side for every agent call: an agent can never do more than the level allows, no matter what it's asked.
| Level | What it allows | |
|---|---|---|
| Read-only | Read pages and databases you share. Cannot create or edit. | |
| Read + comment | Read shared pages and leave comments. | |
| Read + write | Read, create, and edit shared pages and databases. | Recommended |
| Full access | All above including delete. |
On top of the connection's level, every agent can be individually allowed, scoped down, or denied for this app from the Integrations page. Deny an agent and it doesn't even see the connection.
The 48 tools agents use in Notion through Mission Control, and the lowest access level that includes each. Agents discover these themselves. You never have to name a tool; asking in plain language is enough.
| Tool | What it does | Access level |
|---|---|---|
Add multiple page contentNOTION_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 paren… | Read + write, Full access |
Add page contentNOTION_ADD_PAGE_CONTENT | DEPRECATED: Use 'add_multiple_page_content' for better performance. | Read + write, Full access |
Append block childrenNOTION_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. | Read + write, Full access |
Append code blocksNOTION_APPEND_CODE_BLOCKS | Append code and technical blocks (code, quote, equation) to a Notion page. | Read + write, Full access |
Append layout blocksNOTION_APPEND_LAYOUT_BLOCKS | Append layout blocks (divider, TOC, breadcrumb, columns) to a Notion page. | Read + write, Full access |
Append media blocksNOTION_APPEND_MEDIA_BLOCKS | Append media blocks (image, video, audio, file, pdf, embed, bookmark) to a Notion page. | Read + write, Full access |
Append table blocksNOTION_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": "te… | Read + write, Full access |
Append task blocksNOTION_APPEND_TASK_BLOCKS | Append task blocks (to-do, toggle, callout) to a Notion page or block. | Read + write, Full access |
Append text blocksNOTION_APPEND_TEXT_BLOCKS | Append text blocks (paragraphs, headings, lists) to a Notion page. | Read + write, Full access |
Archive notion pageNOTION_ARCHIVE_NOTION_PAGE | Archives (moves to trash) or unarchives (restores from trash) a specified Notion page. | Full access |
Create commentNOTION_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). | Read + comment, Read + write, Full access |
Create databaseNOTION_CREATE_DATABASE | Creates a new Notion database as a subpage under a specified parent page with a defined properties schema. | Read + write, Full access |
Create file uploadNOTION_CREATE_FILE_UPLOAD | Create a Notion FileUpload object and retrieve an upload URL. | Read + write, Full access |
Create notion pageNOTION_CREATE_NOTION_PAGE | Creates a new page in a Notion workspace under a specified parent page or database. | Read + write, Full access |
Delete blockNOTION_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. | Full access |
Duplicate pageNOTION_DUPLICATE_PAGE | Duplicates a Notion page, including all its content, properties, and nested blocks, under a specified parent page or workspace. | Read + write, Full access |
Fetch all block contentsNOTION_FETCH_ALL_BLOCK_CONTENTS | Fetch all child blocks for a given Notion block. | All levels |
Fetch block contentsNOTION_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. | All levels |
Fetch block metadataNOTION_FETCH_BLOCK_METADATA | Fetches metadata for a Notion block (including pages, which are special blocks) using its UUID. | All levels |
Fetch commentsNOTION_FETCH_COMMENTS | Fetches unresolved comments for a specified Notion block or page ID. | All levels |
Fetch dataNOTION_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 | All levels |
Fetch databaseNOTION_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. | All levels |
Fetch rowNOTION_FETCH_ROW | Retrieves a Notion database row's properties and metadata; use fetch_block_contents for page content blocks. | All levels |
Get about meNOTION_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. | All levels |
Get about userNOTION_GET_ABOUT_USER | Retrieves detailed information about a specific Notion user, such as their name, avatar, and email, based on their unique user ID. | All levels |
Get page markdownNOTION_GET_PAGE_MARKDOWN | Retrieve a Notion page's full content rendered as Notion-flavored Markdown in a single API call. | All levels |
Get page property actionNOTION_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. | All levels |
Insert row databaseNOTION_INSERT_ROW_DATABASE | Creates a new page (row) in a specified Notion database. | Read + write, Full access |
Insert row from nlNOTION_INSERT_ROW_FROM_NL | Creates a new row (page) in a Notion database from a natural language description. | Read + write, Full access |
List data source templatesNOTION_LIST_DATA_SOURCE_TEMPLATES | List all templates for a Notion data source. | All levels |
List file uploadsNOTION_LIST_FILE_UPLOADS | Retrieve file uploads for the current bot integration, sorted by most recent first. | All levels |
List usersNOTION_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. | All levels |
Move pageNOTION_MOVE_PAGE | Move a Notion page to a new parent (page or database). | Read + write, Full access |
Query databaseNOTION_QUERY_DATABASE | Queries a Notion database to retrieve pages (rows). | All levels |
Query database with filterNOTION_QUERY_DATABASE_WITH_FILTER | Query a Notion database with server-side filtering, sorting, and pagination. | All levels |
Query data sourceNOTION_QUERY_DATA_SOURCE | 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. | All levels |
Replace page contentNOTION_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. | Full access |
Retrieve commentNOTION_RETRIEVE_COMMENT | Retrieve a specific comment by its ID. Use when you have a comment ID and need to fetch its details. | All levels |
Retrieve database propertyNOTION_RETRIEVE_DATABASE_PROPERTY | Retrieve a specific property object of a Notion database. | All levels |
Retrieve file uploadNOTION_RETRIEVE_FILE_UPLOAD | Retrieve details of a Notion File Upload object by its identifier. | All levels |
Retrieve pageNOTION_RETRIEVE_PAGE | Retrieve a Notion page's properties/metadata (not block content) by page_id. | All levels |
Search notion pageNOTION_SEARCH_NOTION_PAGE | Searches Notion pages and databases by title. | All levels |
Send file uploadNOTION_SEND_FILE_UPLOAD | Transmit file contents to Notion for a file upload object. | Read + write, Full access |
Update blockNOTION_UPDATE_BLOCK | Updates existing Notion block's text content. | Read + write, Full access |
Update pageNOTION_UPDATE_PAGE | Update page properties, icon, cover, or archive status. | Read + write, Full access |
Update row databaseNOTION_UPDATE_ROW_DATABASE | Updates a specific row/page within a Notion database by its page UUID (row_id). | Full access |
Update schema databaseNOTION_UPDATE_SCHEMA_DATABASE | Updates an existing Notion database's schema including title, description, and/or properties (columns). | Read + write, Full access |
Upsert row databaseNOTION_UPSERT_ROW_DATABASE | Upsert rows in a Notion database by querying for existing rows and creating or updating them. | Read + write, Full access |
Just ask in plain language: “check Notion for …”, “create … in Notion”, “every Monday, … ”, and the agent finds the right tool, runs it, and reports back with a receipt in your Runs ledger. Anything outward-facing (sending, posting, publishing) that a mission didn't clearly authorize comes back to you as a ticket first.
| Agent says | What's happening | Fix |
|---|---|---|
| "Notion isn't connected" | No active connection (or this agent is denied) | Connect on the Integrations page; check the agent's per-app policy |
| "The connection has expired" | Notion ended the authorization (they all do periodically) | Click Reconnect on the account, same settings, one click |
| "I'm not allowed to do that" | The action is above the account's access level, or the agent is scoped down | Raise the level under Manage, or adjust that agent's policy |
| It did something unexpected | The ask was ambiguous (e.g. matched an existing item) | Be explicit, "create a NEW …", and give agents a working folder where relevant |