← Back to Integrations
Notion

Notion

Server for interacting with Notion

Tools

  • List All Users

    List all users in the workspace (excludes guests)

  • List All Pages

    List all pages across all databases in the workspace

  • List All Blocks

    List all blocks from a specific page

  • Get User

    Retrieve a specific user by their ID

  • Get Current User

    Retrieve information about the current bot user

  • Search Pages

    Search pages by text

  • List Databases

    List all databases in the workspace. Use list_data_sources to inspect a specific database's data sources.

  • Get Database

    Retrieve a specific database by ID to get its schema/structure. Useful for understanding properties and types before using other database tools.

  • Query Database

    Query a Notion database with filtering, sorting, and pagination support

  • Get Page

    Retrieve a page by ID with its properties (not content). Note: Limited to 25 references per property - use get_page_property for properties with more references.

  • Get Block Children

    List content blocks of a page or block with pagination support. Returns only first level children.

  • Get Block

    Retrieve a single block by ID. Use get_block_children if the block has children.

  • Create Page

    Create a new Notion page as a child of a page or database. Provide either parent_page_id/parent_page_url (for sub-pages) or parent_database_id/parent_database_url (for database entries). For sub-pages, only 'title' is needed. For database entries, use 'properties' matching the database schema (use get_database first to see the schema). Page content can be set via 'markdown' (Notion-flavored Markdown string) or 'children' (array of block objects). These are mutually exclusive. Properties format — object keyed by property name, each value is a property-type object: Title: {"Title Prop": {"title": [{"text": {"content": "My Title"}}]}} Rich text: {"Desc": {"rich_text": [{"text": {"content": "text"}}]}} Number: {"Amount": {"number": 42}} Select: {"Status": {"select": {"name": "Option A"}}} Multi-select: {"Tags": {"multi_select": [{"name": "Tag1"}, {"name": "Tag2"}]}} Date: {"Due": {"date": {"start": "2024-01-15"}}} Checkbox: {"Done": {"checkbox": true}} URL: {"Link": {"url": "https://example.com"}} Email: {"Contact": {"email": "a@b.com"}} Phone: {"Phone": {"phone_number": "+1234567890"}} People: {"Assignee": {"people": [{"id": "user-id"}]}} Relation: {"Related": {"relation": [{"id": "page-id"}]}} Status: {"Progress": {"status": {"name": "In progress"}}} Files: {"Attach": {"files": [{"external": {"url": "https://..."}, "name": "file.pdf"}]}} Children format — array of block objects, e.g.: [{"paragraph": {"rich_text": [{"text": {"content": "Hello"}}]}}, {"heading_2": {"rich_text": [{"text": {"content": "Section"}}]}}]

  • Update Page

    Update a Notion page's properties, icon, cover, or archive/trash status. Cannot change a page's parent. Use get_database to check the schema before updating database page properties. Properties format — same as create_page, object keyed by property name: Title: {"Title Prop": {"title": [{"text": {"content": "New Title"}}]}} Rich text: {"Desc": {"rich_text": [{"text": {"content": "text"}}]}} Number: {"Amount": {"number": 42}} Select: {"Status": {"select": {"name": "Option A"}}} Multi-select: {"Tags": {"multi_select": [{"name": "Tag1"}, {"name": "Tag2"}]}} Date: {"Due": {"date": {"start": "2024-01-15"}}} Checkbox: {"Done": {"checkbox": true}} URL: {"Link": {"url": "https://example.com"}} Email: {"Contact": {"email": "a@b.com"}} Phone: {"Phone": {"phone_number": "+1234567890"}} People: {"Assignee": {"people": [{"id": "user-id"}]}} Relation: {"Related": {"relation": [{"id": "page-id"}]}} Status: {"Progress": {"status": {"name": "In progress"}}} Files: {"Attach": {"files": [{"external": {"url": "https://..."}, "name": "file.pdf"}]}} Set any property to null to clear it.

  • Create Database

    Create a new Notion database as a sub-page of an existing page. The database is created with an initial data source whose property schema you define via 'properties'. Note: creating 'status' properties is not supported by the API. Properties format — object keyed by property name, each value defines the column type: Title (required): {"Name": {"title": {}}} Rich text: {"Notes": {"rich_text": {}}} Number: {"Amount": {"number": {"format": "number"}}} Select: {"Priority": {"select": {"options": [{"name": "High", "color": "red"}, {"name": "Low", "color": "green"}]}}} Multi-select: {"Tags": {"multi_select": {"options": [{"name": "Bug"}, {"name": "Feature"}]}}} Date: {"Due": {"date": {}}} Checkbox: {"Done": {"checkbox": {}}} URL: {"Link": {"url": {}}} Email: {"Contact": {"email": {}}} Phone: {"Phone": {"phone_number": {}}} People: {"Assignee": {"people": {}}} Files: {"Attachments": {"files": {}}}

  • Update Database

    Update a Notion database's title, description, icon, cover, or trash/lock status. To update the property schema of a data source, use the Notion API directly.

  • List Data Sources

    List all data sources under a Notion database. Each data source has its own schema and properties. Use this for databases with multiple data sources.

  • Get Data Source

    Retrieve a specific data source by ID to get its schema/properties. Use get_database first to discover data source IDs.

  • Update Data Source

    Update a data source's property schema, title, description, icon, or trash status. Use this to add, modify, or remove columns in a database's data source. Can also move a data source to a different database via parent_database_id. Properties format — same as create_database, object keyed by property name: Add title column: {"Name": {"title": {}}} Add select: {"Priority": {"select": {"options": [{"name": "High", "color": "red"}]}}} Remove column: {"Old Column": null} Rename: {"Old Name": {"name": "New Name"}}

  • Create Comment

    Create a comment on a page, block, or reply to an existing discussion thread

  • List Comments

    List comments on a page or block

  • Append Blocks

    Append child blocks to a page or block. Supports up to 100 blocks and two levels of nesting per request

  • Update Block

    Update an existing block's content. Cannot update children — use append_blocks instead. block_data is the raw Notion API update payload with the block type as a top-level key. Examples: Paragraph: {"paragraph": {"rich_text": [{"type": "text", "text": {"content": "New text"}}]}, "type": "paragraph"} To-do: {"to_do": {"rich_text": [...], "checked": true}, "type": "to_do"} Callout: {"callout": {"rich_text": [...], "icon": {"type": "emoji", "emoji": "✅"}}, "type": "callout"}

  • Delete Block

    Archive (soft-delete) a block by ID. The block can be restored by updating it with archived=false via update_block

Installation Steps

Get StartedGet Started
1

Create a Gumloop Account

To use this MCP, you need a Gumloop account. If you don't have one yet, you can create one for free.

2

Copy Your Server URL

Copy your MCP server URL and add it to your client. You'll be prompted to authorize on first use.