// connections

Notion

Search, read and write Notion pages (bodies as markdown), query and manage databases and data sources, and comment. Connects with OAuth.

12 mcp tools21 operations
rest
https://api.superagnt.com/v1/connections/notion plus the vendor's own path, with your superagnt_ API key as Authorization: Bearer.
mcp
Tools named connection_notion_* on https://mcp.superagnt.com/mcp, served once the account is connected.
billing
Notion bills your own account. Calls cost no superagnt_ data credits.
rate limit
3 requests a second, 180 a minute: the vendor's ceiling as the registry records it, for sizing bursts. Your plan's own limit is on Connections.

The Notion connection lets an agent work the pages and databases you share with it in your Notion workspace. It searches by title, reads and edits page bodies as markdown, creates and updates pages and database rows, appends blocks, queries and manages databases and their data sources, comments, and looks up users.

databases hold data sources

In Notion's current model a database is a container, and its columns and rows live in one or more data sources. Get the database to find its data_sources, read a data source for its column schema, then query its rows with POST /v1/connections/notion/v1/data_sources/{data_source_id}/query. To add a row, create a page whose parent is { "data_source_id": "..." }.

01

Setup

  1. Start the install. In the superagnt app open Integrations, pick Notion and click Connect with Notion.
  2. Share your pages. In the window Notion opens, choose the pages and databases to share with the connection and allow access.
  3. Call Notion. Notion moves to Enabled: its REST route answers and its tools appear on your MCP server.

There are no scopes to pick: the connection sees exactly what you share with it. To share more later, click Reconnect on the Notion connection page in the superagnt app and pick the pages.

02

Things to know

  • Access is share-scoped: a search or query that returns nothing usually means the content is not shared with the connection yet.
  • superagnt_ sends Notion-Version: 2026-03-11 on every call, so requests and responses follow that version of Notion's API.
  • Search's filter value is page or data_source; a database shows up through its data source. Search and data source queries page with page_size (up to 100) and start_cursor.
  • connection_notion_pages_write action update_markdown edits a page body by type: insert_content appends to the end, update_content replaces matching text, and replace_content overwrites the whole body.
  • To delete a page, set in_trash: true with connection_notion_pages_write action update. That moves it to Notion's trash, where it can be recovered for a while, but treat it as a delete. archived: true archives the page in place instead.
  • When Notion rate-limits the connection, calls come back as RATE_LIMITED (HTTP 429): back off and retry.
  • By default every Notion call runs without asking, writes included: creating and updating pages and databases, editing page bodies, appending blocks, commenting and moving a page to the trash. To have a person approve some of them, set those tools to ask (Permissions).

03

Examples

Search for a page

search by titlebash
curl -X POST "https://api.superagnt.com/v1/connections/notion/v1/search" \
  -H "Authorization: Bearer $AGNTDATA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"Roadmap","filter":{"value":"page","property":"object"}}'

Read a page as markdown

read a page bodybash
curl "https://api.superagnt.com/v1/connections/notion/v1/pages/$PAGE_ID/markdown" \
  -H "Authorization: Bearer $AGNTDATA_API_KEY"

Create a page and write its body

create a page, then append markdownbash
# 1. create the page under a parent page
curl -X POST "https://api.superagnt.com/v1/connections/notion/v1/pages" \
  -H "Authorization: Bearer $AGNTDATA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parent":{"page_id":"'"$PARENT_PAGE_ID"'"},"properties":{"title":[{"text":{"content":"Weekly update"}}]}}'

# 2. append its body as markdown, with the page id the first call returned
curl -X PATCH "https://api.superagnt.com/v1/connections/notion/v1/pages/$PAGE_ID/markdown" \
  -H "Authorization: Bearer $AGNTDATA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type":"insert_content","insert_content":{"content":"## This week\n\n- Shipped the Notion connection\n- Next: calendar"}}'

Query rows in a database

get the data source, then query itbash
# 1. get the database to find its data source ids
curl "https://api.superagnt.com/v1/connections/notion/v1/databases/$DATABASE_ID" \
  -H "Authorization: Bearer $AGNTDATA_API_KEY"

# 2. query the rows of one data source
curl -X POST "https://api.superagnt.com/v1/connections/notion/v1/data_sources/$DATA_SOURCE_ID/query" \
  -H "Authorization: Bearer $AGNTDATA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filter":{"property":"Status","select":{"equals":"Done"}},"page_size":25}'
04// mcp tools

12 tools, one per resource and risk

MCP servers and agents on the grouped surface list Notion as these tools. Each takes an action, and the ones that work across record types an object. Every operation also keeps its own per-operation name, in the next table, which works on every server. How grouping works: Grouped tools.

ToolRiskActions
connection_notion_search_read

Search Notion

Find the pages and data sources shared with the integration by title; omit query to list everything shared.

read
search
connection_notion_users_read

Read Notion users

List the workspace users, get one, or get the bot user the connection runs as.

read
listgetme
connection_notion_pages_read

Read Notion pages

Read a page's properties, or its body as markdown (usually the easiest way to read a page).

read
getget_markdown
connection_notion_pages_write

Write Notion pages

Create a page (under a data source parent, this adds a database row), update its properties or move it to the trash, or edit its body with markdown.

write
createupdateupdate_markdown
connection_notion_blocks_read

Read Notion blocks

List the child blocks of a page or block.

read
list_children
connection_notion_blocks_write

Append Notion blocks

Append blocks to a page or block.

write
append
connection_notion_comments_read

Read Notion comments

List the open comments on a page or block.

read
list
connection_notion_comments_write

Comment in Notion

Comment on a page or in a discussion.

write
create
connection_notion_databases_read

Read Notion databases

Get a database to find its data sources.

read
get
connection_notion_databases_write

Write Notion databases

Create a database under a page, or update a database's title, icon or trash state.

write
createupdate
connection_notion_data_sources_read

Read and query Notion data sources

Read a data source's column schema, query its rows with filters and sorts, or list its page templates. Rows are pages: read and edit one with the pages tools.

read
getquerylist_templates
connection_notion_data_sources_write

Write Notion data sources

Add a data source (a new table) to a database, or change a data source's title and column schema. To add a row, create a page.

write
createupdate
05// operations

All 21 operations

Each operation is a REST path under https://api.superagnt.com/v1/connections/notion and an MCP tool. The per-operation tool name is the one permissions, approvals and usage records use.

OperationMCP tool
POST/v1/search

Search by title

connection_notion_searchgrouped: connection_notion_search_read, action search
GET/v1/users

List all users

connection_notion_list_usersgrouped: connection_notion_users_read, action list
GET/v1/users/{user_id}

Retrieve a user

connection_notion_get_usergrouped: connection_notion_users_read, action get
GET/v1/users/me

Retrieve the bot user

connection_notion_get_bot_usergrouped: connection_notion_users_read, action me
POST/v1/pages

Create a page

connection_notion_create_pagegrouped: connection_notion_pages_write, action create
GET/v1/pages/{page_id}

Retrieve a page

connection_notion_get_pagegrouped: connection_notion_pages_read, action get
PATCH/v1/pages/{page_id}

Update page properties

connection_notion_update_pagegrouped: connection_notion_pages_write, action update
GET/v1/pages/{page_id}/markdown

Retrieve page content as markdown

connection_notion_get_page_markdowngrouped: connection_notion_pages_read, action get_markdown
PATCH/v1/pages/{page_id}/markdown

Update page content as markdown

connection_notion_update_page_markdowngrouped: connection_notion_pages_write, action update_markdown
GET/v1/blocks/{block_id}/children

Retrieve block children

connection_notion_get_block_childrengrouped: connection_notion_blocks_read, action list_children
PATCH/v1/blocks/{block_id}/children

Append block children

connection_notion_append_block_childrengrouped: connection_notion_blocks_write, action append
POST/v1/databases

Create a database

connection_notion_create_databasegrouped: connection_notion_databases_write, action create
GET/v1/databases/{database_id}

Retrieve a database

connection_notion_get_databasegrouped: connection_notion_databases_read, action get
PATCH/v1/databases/{database_id}

Update a database

connection_notion_update_databasegrouped: connection_notion_databases_write, action update
POST/v1/data_sources

Create a data source

connection_notion_create_data_sourcegrouped: connection_notion_data_sources_write, action create
GET/v1/data_sources/{data_source_id}

Retrieve a data source

connection_notion_get_data_sourcegrouped: connection_notion_data_sources_read, action get
PATCH/v1/data_sources/{data_source_id}

Update a data source

connection_notion_update_data_sourcegrouped: connection_notion_data_sources_write, action update
POST/v1/data_sources/{data_source_id}/query

Query a data source

connection_notion_query_data_sourcegrouped: connection_notion_data_sources_read, action query
GET/v1/data_sources/{data_source_id}/templates

List data source templates

connection_notion_list_data_source_templatesgrouped: connection_notion_data_sources_read, action list_templates
GET/v1/comments

List comments

connection_notion_list_commentsgrouped: connection_notion_comments_read, action list
POST/v1/comments

Create a comment

connection_notion_create_commentgrouped: connection_notion_comments_write, action create