> ## Documentation Index
> Fetch the complete documentation index at: https://squad.so/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Notion

> What agents can do in Notion at each access level, and how to connect, limit, and disconnect Notion.

Connect Notion so your agents can work in your Notion account. You choose an access level for each account, and Squad refuses any agent action outside that level.

## Access levels

Each Notion account has an access level: **Read-only**, **Read + comment**, **Read + write**, and **Full access**. Squad refuses any agent action outside that level. You can also narrow or block single agents under **Per-agent access**.

| Level                          | The connect window describes this level as                   | Actions agents can use |
| ------------------------------ | ------------------------------------------------------------ | ---------------------- |
| **Read-only**                  | "Read pages and databases you share. Cannot create or edit." | 26 of 57               |
| **Read + comment**             | "Read shared pages and leave comments."                      | 27 of 57               |
| **Read + write** (recommended) | "Read, create, and edit shared pages and databases."         | 53 of 57               |
| **Full access**                | "All above including delete."                                | 57 of 57               |

**Read + write** is the recommended level. The connect window selects it for you, and you can choose another level.

The Notion sign-in page asks you to approve full access to your account. This is expected. Squad does not narrow the sign-in. It checks every agent action against the level you chose, and it refuses actions outside that level.

## What agents can do at each level

Each level opens with a short summary in plain tasks, then lists every action it adds, grouped by what the action works on. You do not need to name actions. Ask in plain words, and the agent searches for the matching action.

<Tip>**Find an action.** Open a level and use your browser's find (Ctrl+F, or Cmd+F on a Mac) with a word from the task or part of a slug. Or ask your agent in plain words, for example "What can you do in my Notion account?" The agent can search the Notion actions for you.</Tip>

Each action shows its name, a one-line description where the Notion action catalog has one, and its slug. The slug is the ID that agents use when they call the action.

<AccordionGroup>
  <Accordion title="Read-only">
    Agents can use 26 of the 57 Notion actions at this level:

    * View and search databases
    * View comments
    * View content
    * View files
    * View and search pages
    * View views
    * View blocks
    * View properties
    * View queries
    * View rows
    * View templates
    * View users

    All 26 actions at this level:

    | Works on          | Action                     | What it does                                                                                                                                                                                              | Slug                                |
    | ----------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- |
    | **Blocks**        | Fetch block metadata       | Fetches metadata for a Notion block (including pages, which are special blocks) using its UUID.                                                                                                           | `NOTION_FETCH_BLOCK_METADATA`       |
    | **Comments**      | Fetch comments             | Fetches unresolved comments for a specified Notion block or page ID.                                                                                                                                      | `NOTION_FETCH_COMMENTS`             |
    |                   | Retrieve comment           | Retrieve a specific comment by its ID.                                                                                                                                                                    | `NOTION_RETRIEVE_COMMENT`           |
    | **Content**       | Fetch all block contents   | Fetch all child blocks for a given Notion block.                                                                                                                                                          | `NOTION_FETCH_ALL_BLOCK_CONTENTS`   |
    |                   | 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.                                                                     | `NOTION_FETCH_BLOCK_CONTENTS`       |
    | **Databases**     | Fetch database             | Fetches a Notion database's structural metadata (properties, title, etc.) via its database\_id, not the data entries.                                                                                     | `NOTION_FETCH_DATABASE`             |
    |                   | Query database             | Queries a Notion database to retrieve pages (rows).                                                                                                                                                       | `NOTION_QUERY_DATABASE`             |
    |                   | Query database with filter | Query a Notion database with server-side filtering, sorting, and pagination.                                                                                                                              | `NOTION_QUERY_DATABASE_WITH_FILTER` |
    | **Files**         | List file uploads          | Retrieve file uploads for the current bot integration, sorted by most recent first.                                                                                                                       | `NOTION_LIST_FILE_UPLOADS`          |
    |                   | Retrieve file upload       | Retrieve details of a Notion File Upload object by its identifier.                                                                                                                                        | `NOTION_RETRIEVE_FILE_UPLOAD`       |
    | **Pages**         | Get page markdown          | Retrieve a Notion page's full content rendered as Notion-flavored Markdown in a single API call.                                                                                                          | `NOTION_GET_PAGE_MARKDOWN`          |
    |                   | Retrieve page              | Retrieve a Notion page's properties/metadata (not block content) by page\_id.                                                                                                                             | `NOTION_RETRIEVE_PAGE`              |
    |                   | Search Notion page         | Searches Notion pages and databases by title.                                                                                                                                                             | `NOTION_SEARCH_NOTION_PAGE`         |
    | **Properties**    | Get page property action   | Get a specific property from a Notion page when you have a valid page\_id and property\_id.                                                                                                               | `NOTION_GET_PAGE_PROPERTY_ACTION`   |
    |                   | Retrieve database property | Retrieve a specific property object of a Notion database.                                                                                                                                                 | `NOTION_RETRIEVE_DATABASE_PROPERTY` |
    | **Queries**       | Create view query          |                                                                                                                                                                                                           | `NOTION_CREATE_VIEW_QUERY`          |
    |                   | Get view query results     |                                                                                                                                                                                                           | `NOTION_GET_VIEW_QUERY_RESULTS`     |
    | **Rows**          | Fetch row                  | Retrieves a Notion database row's properties and metadata.                                                                                                                                                | `NOTION_FETCH_ROW`                  |
    | **Templates**     | List data source templates | List all templates for a Notion data source.                                                                                                                                                              | `NOTION_LIST_DATA_SOURCE_TEMPLATES` |
    | **Users**         | Get about user             | Retrieves detailed information about a specific Notion user, such as their name, avatar, and email, based on their unique user ID.                                                                        | `NOTION_GET_ABOUT_USER`             |
    |                   | List users                 | Retrieves a paginated list of users (excluding guests) from the Notion workspace.                                                                                                                         | `NOTION_LIST_USERS`                 |
    | **Views**         | List views                 |                                                                                                                                                                                                           | `NOTION_LIST_VIEWS`                 |
    |                   | Retrieve view              |                                                                                                                                                                                                           | `NOTION_RETRIEVE_VIEW`              |
    | **Other actions** | 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. | `NOTION_FETCH_DATA`                 |
    |                   | Get about me               | DEPRECATED: Use GetAboutUser instead.                                                                                                                                                                     | `NOTION_GET_ABOUT_ME`               |
    |                   | Query data source          | Query a Notion data source.                                                                                                                                                                               | `NOTION_QUERY_DATA_SOURCE`          |
  </Accordion>

  <Accordion title="Read + comment">
    Agents can use 27 of the 57 Notion actions at this level: everything in **Read-only**, plus:

    * Create comments

    The action that this level adds to **Read-only**:

    | Works on     | Action         | What it does                                                                                                     | Slug                    |
    | ------------ | -------------- | ---------------------------------------------------------------------------------------------------------------- | ----------------------- |
    | **Comments** | Create comment | Adds a comment to a Notion page (via parent\_page\_id) OR to an existing discussion thread (via discussion\_id). | `NOTION_CREATE_COMMENT` |
  </Accordion>

  <Accordion title="Read + write (recommended)">
    Agents can use 53 of the 57 Notion actions at this level: everything in **Read + comment**, plus:

    * Update blocks
    * Create and update databases
    * Create and update pages
    * Create and update content
    * Create and send files
    * Create and update views
    * View account details
    * Create rows

    The 26 actions that this level adds to **Read + comment**:

    | Works on            | Action                    | What it does                                                                                                                                                                                                       | Slug                               |
    | ------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------- |
    | **Account details** | Who am I                  |                                                                                                                                                                                                                    | `NOTION_WHO_AM_I`                  |
    | **Blocks**          | 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. | `NOTION_APPEND_BLOCK_CHILDREN`     |
    |                     | Append code blocks        | Append code and technical blocks (code, quote, equation) to a Notion page.                                                                                                                                         | `NOTION_APPEND_CODE_BLOCKS`        |
    |                     | Append layout blocks      | Append layout blocks (divider, TOC, breadcrumb, columns) to a Notion page.                                                                                                                                         | `NOTION_APPEND_LAYOUT_BLOCKS`      |
    |                     | Append media blocks       | Append media blocks (image, video, audio, file, pdf, embed, bookmark) to a Notion page.                                                                                                                            | `NOTION_APPEND_MEDIA_BLOCKS`       |
    |                     | Append table blocks       | Append table blocks to a Notion page.                                                                                                                                                                              | `NOTION_APPEND_TABLE_BLOCKS`       |
    |                     | Append task blocks        | Append task blocks (to-do, toggle, callout) to a Notion page or block.                                                                                                                                             | `NOTION_APPEND_TASK_BLOCKS`        |
    |                     | Append text blocks        | Append text blocks (paragraphs, headings, lists) to a Notion page.                                                                                                                                                 | `NOTION_APPEND_TEXT_BLOCKS`        |
    |                     | Update block              | Updates existing Notion block's text content.                                                                                                                                                                      | `NOTION_UPDATE_BLOCK`              |
    | **Content**         | Add multiple page content | Bulk-add content blocks to Notion.                                                                                                                                                                                 | `NOTION_ADD_MULTIPLE_PAGE_CONTENT` |
    |                     | Add page content          | DEPRECATED: Use 'add\_multiple\_page\_content' for better performance.                                                                                                                                             | `NOTION_ADD_PAGE_CONTENT`          |
    |                     | 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.                                                                | `NOTION_REPLACE_PAGE_CONTENT`      |
    | **Databases**       | Create database           | Creates a new Notion database as a subpage under a specified parent page with a defined properties schema.                                                                                                         | `NOTION_CREATE_DATABASE`           |
    |                     | Insert row database       | Creates a new page (row) in a specified Notion database.                                                                                                                                                           | `NOTION_INSERT_ROW_DATABASE`       |
    |                     | Update row database       | Updates a specific row/page within a Notion database by its page UUID (row\_id).                                                                                                                                   | `NOTION_UPDATE_ROW_DATABASE`       |
    |                     | Update schema database    | Updates an existing Notion database's schema including title, description, and/or properties (columns).                                                                                                            | `NOTION_UPDATE_SCHEMA_DATABASE`    |
    |                     | Upsert row database       | Upsert rows in a Notion database by querying for existing rows and creating or updating them.                                                                                                                      | `NOTION_UPSERT_ROW_DATABASE`       |
    | **Files**           | Create file upload        | Create a Notion FileUpload object and retrieve an upload URL.                                                                                                                                                      | `NOTION_CREATE_FILE_UPLOAD`        |
    |                     | Send file upload          | Transmit file contents to Notion for a file upload object.                                                                                                                                                         | `NOTION_SEND_FILE_UPLOAD`          |
    | **Pages**           | Create Notion page        | Creates a new page in a Notion workspace under a specified parent page or database.                                                                                                                                | `NOTION_CREATE_NOTION_PAGE`        |
    |                     | Duplicate page            | Duplicates a Notion page, including all its content, properties, and nested blocks, under a specified parent page or workspace.                                                                                    | `NOTION_DUPLICATE_PAGE`            |
    |                     | Move page                 | Move a Notion page to a new parent (page or database).                                                                                                                                                             | `NOTION_MOVE_PAGE`                 |
    |                     | Update page               | Update page properties, icon, cover, or archive status.                                                                                                                                                            | `NOTION_UPDATE_PAGE`               |
    | **Rows**            | Insert row from nl        | Creates a new row (page) in a Notion database from a natural language description.                                                                                                                                 | `NOTION_INSERT_ROW_FROM_NL`        |
    | **Views**           | Create view               |                                                                                                                                                                                                                    | `NOTION_CREATE_VIEW`               |
    |                     | Update view               |                                                                                                                                                                                                                    | `NOTION_UPDATE_VIEW`               |
  </Accordion>

  <Accordion title="Full access">
    Agents can use 57 of the 57 Notion actions at this level: everything in **Read + write**, plus:

    * Delete blocks
    * Archive pages
    * Delete queries
    * Delete views

    The 4 actions that this level adds to **Read + write**:

    | Works on    | Action              | What it does                                                                                                                                                               | Slug                         |
    | ----------- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
    | **Blocks**  | 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. | `NOTION_DELETE_BLOCK`        |
    | **Pages**   | Archive Notion page | Archives (moves to trash) or unarchives (restores from trash) a specified Notion page.                                                                                     | `NOTION_ARCHIVE_NOTION_PAGE` |
    | **Queries** | Delete view query   |                                                                                                                                                                            | `NOTION_DELETE_VIEW_QUERY`   |
    | **Views**   | Delete view         |                                                                                                                                                                            | `NOTION_DELETE_VIEW`         |
  </Accordion>
</AccordionGroup>

## Connect Notion

Before you start:

* You need a Notion account that you can sign in to.
* Your Squad subscription must be active. Squad does not connect apps while the subscription is not active.

<Steps>
  <Step title="Open Integrations">
    Open **Settings** > **Integrations**.
  </Step>

  <Step title="Add an integration">
    On the **Connected apps** tab, click **+ Add integration**.
  </Step>

  <Step title="Find Notion">
    Find **Notion** in the catalog and click it. You can type the name in **Search the catalog…**.
  </Step>

  <Step title="Choose an access level">
    Under **Default scope**, choose an access level. This level applies to every agent.
  </Step>

  <Step title="Click Connect Notion">
    Click **Connect Notion**. The Notion sign-in page opens in a new tab.
  </Step>

  <Step title="Sign in to Notion">
    Sign in to Notion and approve the request.
  </Step>
</Steps>

Check that it works: Notion shows under **YOUR CONNECTIONS**, with a row for the account and its access level.

## Change the access level

1. Under **YOUR CONNECTIONS**, find the Notion account.
2. Open the account menu (⋯) and click **Manage scope**.
3. Under **Default scope**, choose the new level.
4. Click **Save access**.

The change does not need a new sign-in. Agents get the new level from their next call.

## Set access for one agent

Every agent uses the account's level unless you set something else for it. You can narrow one agent to a lower level, or block it.

1. Under **YOUR CONNECTIONS**, open the account menu (⋯) on the Notion account.
2. Click **Manage scope**.
3. Under **Per-agent access**, find the agent.
4. Choose the **Default** option to follow the account's level, choose a lower level, or choose **No access**.
5. Click **Save access**.

An agent never gets more than the account's level, even if you choose a higher level for it. Changes apply from the agent's next call. An agent with **No access** does not see the account.

## Use more than one Notion account

Click **+ Account** on the Notion card to connect another account. Agents use the primary account unless they are asked to use a specific one.

* After you click **+ Account**, follow the connect steps above.
* Each account has its own access level.
* The first account you connect becomes the primary account. It shows **★ PRIMARY**.
* To change the primary account, open the account menu (⋯) and click **Make primary**.
* To tell accounts apart, open the account menu (⋯) and click **Rename**.

## Reconnect or disconnect

Reconnect when the connection has expired, or when you need to change what the account can reach on the Notion side:

1. Open the account menu (⋯) and click **Reconnect**.
2. Click **Reauthorize on Notion**.
3. Sign in to Notion and approve the request.

Reconnect signs in to the same account again. It does not add a second connection.

Open the account menu (⋯) on the Notion account and click **Disconnect**. Agents lose access to that account at once.

<Warning>**Disconnect** acts at once, with no confirmation step. If it was the primary account, another connected Notion account becomes primary.</Warning>

## Costs

Notion actions do not use Squad credits. Connected apps never use credits. For what does use credits, see [What Squad costs](/docs/costs).

## Troubleshooting

An agent reports that an action is not allowed on this account.

* Cause: the action is outside the account's access level, or outside the level you set for that agent.
* Fix: choose a higher level in **Manage scope**, or change the agent's row under **Per-agent access**.

An agent says it has no access to Notion, or it does not see the account.

* Cause: the agent is set to **No access** under **Per-agent access**, or the account is not connected.
* Fix: open **Manage scope** and change the agent's row. If the account is missing, connect it again.

Connecting or saving fails with "Your subscription isn't active."

* Cause: your Squad subscription is not active.
* Fix: resubscribe. See [Manage your subscription](/docs/billing).

An agent says the Notion connection has expired.

* Cause: the sign-in for that account is no longer valid.
* Fix: use **Reconnect** on the account.

## Common questions

<AccordionGroup>
  <Accordion title="Can I limit what agents can do in Notion?">
    Each Notion account has an access level: **Read-only**, **Read + comment**, **Read + write**, and **Full access**. Squad refuses any agent action outside that level. You can also narrow or block single agents under **Per-agent access**.
  </Accordion>

  <Accordion title="Can I connect more than one Notion account?">
    Click **+ Account** on the Notion card to connect another account. Agents use the primary account unless they are asked to use a specific one.
  </Accordion>

  <Accordion title="How do I disconnect Notion?">
    Open the account menu (⋯) on the Notion account and click **Disconnect**. Agents lose access to that account at once.
  </Accordion>
</AccordionGroup>

## Related pages

<CardGroup cols={2}>
  <Card title="Connect apps" icon="plug" href="/docs/integrations" />

  <Card title="Add an MCP server or an API key" icon="server" href="/docs/custom-integrations">
    Use this when an action you need is not in this app.
  </Card>
</CardGroup>
