Ferrule

Notion

20 tools OpenAPI spec ↗

MCPREST
GETget_page/pages/:page_id

Retrieve a page by its ID. Returns page properties, parent, and metadata.

Request

Path Parameters

NameTypeRequiredDescription
page_idstringYesThe ID of the page to retrieve (UUID format, with or without dashes).

Response

objectstring
idstring
created_timeobject
last_edited_timeobject
created_byobject
last_edited_byobject
archivedobject
in_trashobject
iconobject
coverobject
propertiesobject
parentobject
urlobject
public_urlobject

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "get_page"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "get_page",
      "params": {
        "page_id": "<page_id>"
      }
    }
  }
}
POSTcreate_page/pages

Create a new page. The parent can be a database or another page. Properties must match the parent database schema if creating in a database.

Request

Query Parameters

NameTypeRequiredDescription
parentobjectNoParent of the page. Example: { "database_id": "..." } or { "page_id": "..." }.
propertiesobjectNoPage properties. When parent is a database, keys must match database property names.
childrenobjectNoArray of block objects to add as page content.
iconobjectNoPage icon. Example: { "emoji": "🎯" }.
coverobjectNoPage cover image as an external URL object.

Response

objectstring
idstring
created_timeobject
last_edited_timeobject
created_byobject
last_edited_byobject
archivedobject
in_trashobject
iconobject
coverobject
propertiesobject
parentobject
urlobject
public_urlobject

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "create_page"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "create_page",
      "params": {}
    }
  }
}
PATCHupdate_page/pages/:page_id

Update a page's properties, icon, cover, or archived status.

Request

Path Parameters

NameTypeRequiredDescription
page_idstringYesThe ID of the page to update.

Query Parameters

NameTypeRequiredDescription
propertiesobjectNoProperties to update. Keys must match existing property names.
iconobjectNoUpdated icon. Example: { "emoji": "✅" }.
coverobjectNoUpdated cover image.
archivedbooleanNoSet to true to archive the page, false to unarchive.
in_trashbooleanNoSet to true to move to trash.

Response

objectstring
idstring
created_timeobject
last_edited_timeobject
created_byobject
last_edited_byobject
archivedobject
in_trashobject
iconobject
coverobject
propertiesobject
parentobject
urlobject
public_urlobject

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "update_page"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "update_page",
      "params": {
        "page_id": "<page_id>"
      }
    }
  }
}
GETget_page_property/pages/:page_id/properties/:property_id

Retrieve a specific property value from a page. Useful for paginated properties like rich_text, title, relation, and rollup.

Request

Path Parameters

NameTypeRequiredDescription
page_idstringYesThe ID of the page.
property_idstringYesThe ID of the property to retrieve. Found in the page's properties object.

Query Parameters

NameTypeRequiredDescription
start_cursorstringNoCursor for paginated property values.

Pagination

NameTypeRequiredDescription
page_sizenumberNoNumber of property items to return (max 100).

Response

unknown

Runtime output is unvalidated JSON (raw passthrough).

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "get_page_property"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "get_page_property",
      "params": {
        "page_id": "<page_id>",
        "property_id": "<property_id>"
      }
    }
  }
}
GETlist_databases/databases

List all databases shared with the integration. Returns a paginated list. Deprecated by Notion in favor of search with database filter, but still functional.

Request

Query Parameters

NameTypeRequiredDescription
start_cursorstringNoCursor for pagination.

Pagination

NameTypeRequiredDescription
page_sizenumberNoNumber of results to return (max 100).

Response

objectstring
resultsarray
next_cursorobject
has_moreboolean
typeobject

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "list_databases"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "list_databases",
      "params": {}
    }
  }
}
GETget_database/databases/:database_id

Retrieve a database by its ID. Returns the database schema (properties), title, and metadata.

Request

Path Parameters

NameTypeRequiredDescription
database_idstringYesThe ID of the database to retrieve.

Response

objectstring
idstring
created_timeobject
last_edited_timeobject
created_byobject
last_edited_byobject
titleobject
descriptionobject
iconobject
coverobject
propertiesobject
parentobject
urlobject
public_urlobject
archivedobject
in_trashobject
is_inlineobject

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "get_database"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "get_database",
      "params": {
        "database_id": "<database_id>"
      }
    }
  }
}
POSTquery_database/databases/:database_id/query

Query a database to retrieve pages that match filter and sort criteria. Supports compound filters, sorting by properties, and pagination.

Request

Path Parameters

NameTypeRequiredDescription
database_idstringYesThe ID of the database to query.

Query Parameters

NameTypeRequiredDescription
filterobjectNoFilter criteria. Example: { "property": "Status", "select": { "equals": "Done" } }.
sortsobjectNoSort criteria array. Example: [{ "property": "Created", "direction": "descending" }].
start_cursorstringNoCursor for pagination.

Pagination

NameTypeRequiredDescription
page_sizenumberNoNumber of results to return (max 100).

Response

objectstring
resultsarray
next_cursorobject
has_moreboolean
typeobject

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "query_database"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "query_database",
      "params": {
        "database_id": "<database_id>"
      }
    }
  }
}
POSTcreate_database/databases

Create a new database as a child of a page. Define the schema via properties.

Request

Query Parameters

NameTypeRequiredDescription
parentobjectNoParent page. Example: { "page_id": "..." }.
titleobjectNoDatabase title as an array of rich text objects.
propertiesobjectNoDatabase property schema. Example: { "Name": { "title": {} }, "Tags": { "multi_select": { "options": [] } } }.
iconobjectNoDatabase icon.
coverobjectNoDatabase cover image.
is_inlinebooleanNoWhether the database is inline (true) or full page (false).

Response

objectstring
idstring
created_timeobject
last_edited_timeobject
created_byobject
last_edited_byobject
titleobject
descriptionobject
iconobject
coverobject
propertiesobject
parentobject
urlobject
public_urlobject
archivedobject
in_trashobject
is_inlineobject

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "create_database"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "create_database",
      "params": {}
    }
  }
}
PATCHupdate_database/databases/:database_id

Update a database's title, description, properties schema, or archived status.

Request

Path Parameters

NameTypeRequiredDescription
database_idstringYesThe ID of the database to update.

Query Parameters

NameTypeRequiredDescription
titleobjectNoUpdated title as an array of rich text objects.
descriptionobjectNoUpdated description as an array of rich text objects.
propertiesobjectNoProperty schema updates. Include only properties to add or modify. Set a property to null to delete it.
iconobjectNoUpdated icon.
coverobjectNoUpdated cover.
archivedbooleanNoSet to true to archive the database.
in_trashbooleanNoSet to true to move to trash.

Response

objectstring
idstring
created_timeobject
last_edited_timeobject
created_byobject
last_edited_byobject
titleobject
descriptionobject
iconobject
coverobject
propertiesobject
parentobject
urlobject
public_urlobject
archivedobject
in_trashobject
is_inlineobject

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "update_database"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "update_database",
      "params": {
        "database_id": "<database_id>"
      }
    }
  }
}
GETget_block/blocks/:block_id

Retrieve a block by its ID. Returns block type and content.

Request

Path Parameters

NameTypeRequiredDescription
block_idstringYesThe ID of the block to retrieve.

Response

objectstring
idstring
parentobject
typeobject
created_timeobject
last_edited_timeobject
created_byobject
last_edited_byobject
archivedobject
in_trashobject
has_childrenobject

Runtime output is unvalidated JSON (raw passthrough).

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "get_block"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "get_block",
      "params": {
        "block_id": "<block_id>"
      }
    }
  }
}
PATCHupdate_block/blocks/:block_id

Update a block's content or archived status. The update payload depends on the block type.

Request

Path Parameters

NameTypeRequiredDescription
block_idstringYesThe ID of the block to update.

Query Parameters

NameTypeRequiredDescription
block_contentobjectNoBlock type-specific content to update. Pass the block type key and its new value. Example: { "paragraph": { "rich_text": [...] } }.
archivedbooleanNoSet to true to archive the block.
in_trashbooleanNoSet to true to move to trash.

Response

objectstring
idstring
parentobject
typeobject
created_timeobject
last_edited_timeobject
created_byobject
last_edited_byobject
archivedobject
in_trashobject
has_childrenobject

Runtime output is unvalidated JSON (raw passthrough).

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "update_block"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "update_block",
      "params": {
        "block_id": "<block_id>"
      }
    }
  }
}
DELETEdelete_block/blocks/:block_id

Delete (archive) a block by its ID. The block can be a page, database, or any content block.

Request

Path Parameters

NameTypeRequiredDescription
block_idstringYesThe ID of the block to delete.

Response

objectstring
idstring
parentobject
typeobject
created_timeobject
last_edited_timeobject
created_byobject
last_edited_byobject
archivedobject
in_trashobject
has_childrenobject

Runtime output is unvalidated JSON (raw passthrough).

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "delete_block"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "delete_block",
      "params": {
        "block_id": "<block_id>"
      }
    }
  }
}
GETlist_block_children/blocks/:block_id/children

List the children blocks of a given block (page, database, or other block with children). Returns a paginated list.

Request

Path Parameters

NameTypeRequiredDescription
block_idstringYesThe ID of the parent block. Can be a page ID to get page content.

Query Parameters

NameTypeRequiredDescription
start_cursorstringNoCursor for pagination.

Pagination

NameTypeRequiredDescription
page_sizenumberNoNumber of blocks to return (max 100).

Response

objectstring
resultsarray
next_cursorobject
has_moreboolean
typeobject

Runtime output is unvalidated JSON (raw passthrough).

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "list_block_children"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "list_block_children",
      "params": {
        "block_id": "<block_id>"
      }
    }
  }
}
PATCHappend_block_children/blocks/:block_id/children

Append new children blocks to a parent block. Use this to add content to pages or nested blocks.

Request

Path Parameters

NameTypeRequiredDescription
block_idstringYesThe ID of the parent block to append children to.

Query Parameters

NameTypeRequiredDescription
childrenobjectNoArray of block objects to append. Example: [{ "paragraph": { "rich_text": [{ "text": { "content": "Hello" } }] } }].
afterstringNoID of an existing block to insert the new children after. If omitted, children are appended at the end.

Response

objectstring
resultsarray
next_cursorobject
has_moreboolean
typeobject

Runtime output is unvalidated JSON (raw passthrough).

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "append_block_children"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "append_block_children",
      "params": {
        "block_id": "<block_id>"
      }
    }
  }
}
GETlist_users/users

List all users in the workspace. Includes people and bots.

Request

Query Parameters

NameTypeRequiredDescription
start_cursorstringNoCursor for pagination.

Pagination

NameTypeRequiredDescription
page_sizenumberNoNumber of users to return (max 100).

Response

objectstring
resultsarray
next_cursorobject
has_moreboolean
typeobject

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "list_users"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "list_users",
      "params": {}
    }
  }
}
GETget_user/users/:user_id

Retrieve a user by their ID.

Request

Path Parameters

NameTypeRequiredDescription
user_idstringYesThe ID of the user to retrieve.

Response

objectstring
idstring
typeobject
nameobject
avatar_urlobject

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "get_user"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "get_user",
      "params": {
        "user_id": "<user_id>"
      }
    }
  }
}
GETget_me/users/me

Retrieve the bot user associated with the current integration token.

Request

No input parameters.

Response

objectstring
idstring
typeobject
nameobject
avatar_urlobject

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "get_me"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "get_me",
      "params": {}
    }
  }
}
GETlist_comments/comments

List comments on a block (page or other block). Requires the integration to have comment read capabilities.

Request

Query Parameters

NameTypeRequiredDescription
block_idstringNoThe ID of the block to list comments for.
start_cursorstringNoCursor for pagination.

Pagination

NameTypeRequiredDescription
page_sizenumberNoNumber of comments to return (max 100).

Response

objectstring
resultsarray
next_cursorobject
has_moreboolean
typeobject

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "list_comments"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "list_comments",
      "params": {}
    }
  }
}
POSTcreate_comment/comments

Create a comment on a page or in an existing discussion thread. Either parent (with page_id) or discussion_id must be provided.

Request

Query Parameters

NameTypeRequiredDescription
parentobjectNoParent page to create a top-level comment on. Example: { "page_id": "..." }.
discussion_idstringNoID of an existing discussion thread to reply to.
rich_textobjectNoComment body as an array of rich text objects. Example: [{ "text": { "content": "This is a comment" } }].

Response

objectstring
idstring
parentobject
discussion_idobject
created_timeobject
last_edited_timeobject
created_byobject
rich_textobject

Examples

1. Describe method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "describe_method",
    "arguments": {
      "service": "notion",
      "method": "create_comment"
    }
  }
}

2. Call method

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_notion",
    "arguments": {
      "method": "create_comment",
      "params": {}
    }
  }
}