Notion MCP Server for Cloudflare Workers
Test Notion tools directly in your browser. Select a tool and provide inputs to see the results.
Create a free account to test Notion tools interactively. No credit card required.
notion_get_blockRetrieve a Notion block by its ID. A block is any piece of content in Notion - paragraphs, headings, lists, etc. Pages and databases are also blocks. Args: - blockId: The block ID - format: Response format ('json' or 'markdown') Returns: The block object with its type-specific content.
notion_get_block_childrenGet the children blocks of a block or page. Use this to read the content of a page or the nested content of a block. Args: - blockId: The block ID (or page ID) to get children from - startCursor: Pagination cursor from previous response - pageSize: Number of blocks to return (1-100, default: 100) - format: Response format ('json' or 'markdown') Returns: Paginated list of child blocks.
notion_append_blocksAppend new blocks as children of an existing block or page. Use this to add content to a page or nest content inside a block. Args: - blockId: The block or page ID to append children to - children: Array of block objects to append. Common block types: - Paragraph: { "type": "paragraph", "paragraph": { "rich_text": [{ "type": "text", "text": { "content": "Hello" } }] } } - Heading 1: { "type": "heading_1", "heading_1": { "rich_text": [{ "type": "text", "text": { "content": "Title" } }] } } - Heading 2: { "type": "heading_2", "heading_2": { "rich_text": [...] } } - Heading 3: { "type": "heading_3", "heading_3": { "rich_text": [...] } } - Bulleted list: { "type": "bulleted_list_item", "bulleted_list_item": { "rich_text": [...] } } - Numbered list: { "type": "numbered_list_item", "numbered_list_item": { "rich_text": [...] } } - To-do: { "type": "to_do", "to_do": { "rich_text": [...], "checked": false } } - Toggle: { "type": "toggle", "toggle": { "rich_text": [...] } } - Quote: { "type": "quote", "quote": { "rich_text": [...] } } - Callout: { "type": "callout", "callout": { "rich_text": [...], "icon": { "emoji": "..." } } } - Code: { "type": "code", "code": { "rich_text": [...], "language": "javascript" } } - Divider: { "type": "divider", "divider": {} } - Image: { "type": "image", "image": { "type": "external", "external": { "url": "..." } } } - Bookmark: { "type": "bookmark", "bookmark": { "url": "..." } } Returns: The appended blocks.
notion_update_blockUpdate an existing block's content. Args: - blockId: The block ID to update - content: The block content to update. Must include the block type. Example for paragraph: { "paragraph": { "rich_text": [{ "type": "text", "text": { "content": "New text" } }] } } To archive a block: { "archived": true } Returns: The updated block object.
notion_delete_blockDelete (trash) a block. The block and all its children will be moved to trash. Args: - blockId: The block ID to delete Returns: The deleted block object (with archived: true).
notion_get_commentsRetrieve comments from a page or block. Gets all comments associated with a page or specific block. Args: - blockId: The page ID or block ID to get comments from - startCursor: Pagination cursor from previous response - pageSize: Number of comments to return (1-100, default: 100) - format: Response format ('json' or 'markdown') Returns: Paginated list of comments with their text, author, and timestamps.
notion_create_commentCreate a new comment on a page or in a discussion. Args: - parentId: Either a page_id to start a new comment thread, or a discussion_id to reply in an existing thread - parentType: Type of parent - 'page_id' for new threads, 'discussion_id' for replies - richText: Comment text as rich text array. Example: [{ "type": "text", "text": { "content": "This is a comment" } }] Can include mentions: [{ "type": "mention", "mention": { "type": "user", "user": { "id": "user-id" } } }] Returns: The created comment object.
notion_get_commentRetrieve a specific comment by its ID. Args: - commentId: The comment ID - format: Response format ('json' or 'markdown') Returns: The comment object with its text, author, and timestamps.
notion_get_databaseRetrieve a Notion database by its ID. Returns the database object with its schema (properties), title, and metadata. Args: - databaseId: The database ID - format: Response format ('json' or 'markdown') Returns: The database object with all properties and their configurations.
notion_query_databaseQuery a Notion database to retrieve pages that match filter criteria. Args: - databaseId: The database ID to query - filter: Optional filter object using Notion's filter syntax. Example: { "property": "Status", "status": { "equals": "Done" } } Compound filters use "and" or "or" arrays. - sorts: Optional array of sort objects. Example: [{ "property": "Created", "direction": "descending" }] Or use timestamp: [{ "timestamp": "last_edited_time", "direction": "descending" }] - startCursor: Pagination cursor from previous response - pageSize: Number of results to return (1-100, default: 100) - format: Response format ('json' or 'markdown') Returns: Paginated list of pages that match the query.
notion_create_databaseCreate a new Notion database as a child of a page. Args: - parentPageId: The ID of the parent page where the database will be created - title: Database title as rich text array. Simple example: [{ "type": "text", "text": { "content": "My Database" } }] - properties: Database schema defining the columns. Each property has a name and type config. Example: { "Name": { "title": {} }, "Status": { "select": { "options": [{ "name": "Todo" }, { "name": "Done" }] } }, "Date": { "date": {} } } - icon: Optional icon object - cover: Optional cover image object Returns: The created database object.
notion_update_databaseUpdate a Notion database's title, description, or properties. Args: - databaseId: The database ID to update - title: New title as rich text array - description: New description as rich text array - properties: Properties to add, update, or remove. To remove a property, set it to null. Example: { "New Column": { "checkbox": {} }, "Old Column": null } - icon: New icon object, or null to remove - cover: New cover object, or null to remove Returns: The updated database object.
notion_get_pageRetrieve a Notion page by its ID. Args: - pageId: The page ID (can be with or without hyphens) - format: Response format ('json' or 'markdown') Returns: The page object with all properties, metadata, and parent information.
notion_create_pageCreate a new Notion page. The page can be created as a child of a database (with database_id) or as a child of another page (with page_id). Args: - parentId: The ID of the parent (database or page) - parentType: Type of parent - 'database_id' for database pages, 'page_id' for child pages - properties: Page properties object. For database pages, must include properties matching the database schema. For child pages, typically just { "title": { "title": [{ "text": { "content": "Page Title" } }] } } - children: Optional array of block objects to add as page content - icon: Optional icon object { "type": "emoji", "emoji": "..." } or { "type": "external", "external": { "url": "..." } } - cover: Optional cover object { "type": "external", "external": { "url": "..." } } Returns: The created page object.
notion_update_pageUpdate an existing Notion page's properties. Args: - pageId: The page ID to update - properties: Properties to update (only include properties you want to change) - archived: Set to true to archive the page, false to unarchive - icon: New icon object, or null to remove - cover: New cover object, or null to remove Returns: The updated page object.
notion_trash_pageMove a Notion page to trash. This is equivalent to deleting the page. The page can be restored from trash within Notion. Args: - pageId: The page ID to trash Returns: The trashed page object.
notion_get_page_propertyRetrieve a specific property value from a page. This is useful for paginated properties like title, rich_text, relation, and people, where the full value may not be returned in the page object. Args: - pageId: The page ID - propertyId: The property ID (from the page's properties object) - startCursor: Pagination cursor for paginated properties - pageSize: Number of items to return (for paginated properties) Returns: The property value or paginated list of property items.
notion_searchSearch for pages and databases in Notion by title. Searches across all pages and databases that have been shared with the integration. Args: - query: Optional search query string. Searches by title match. If empty, returns all accessible pages/databases. - filter: Optional filter to search only pages or only databases. Example: { "value": "page", "property": "object" } Or: { "value": "database", "property": "object" } - sort: Optional sort configuration. Example: { "direction": "ascending", "timestamp": "last_edited_time" } Or: { "direction": "descending", "timestamp": "last_edited_time" } - startCursor: Pagination cursor from previous response - pageSize: Number of results to return (1-100, default: 100) - format: Response format ('json' or 'markdown') Returns: Paginated list of matching pages and/or databases.
notion_list_usersList all users in the Notion workspace. Returns a paginated list of all users (people and bots) that have access to the workspace. Args: - startCursor: Pagination cursor from previous response - pageSize: Number of users to return (1-100, default: 100) - format: Response format ('json' or 'markdown') Returns: List of users with their IDs, names, types, and email addresses.
notion_get_userGet a single user by their ID. Args: - userId: The user's Notion ID - format: Response format ('json' or 'markdown') Returns: The user object with all available details.
notion_get_meGet the current bot user (the integration making the API call). This is useful to verify the connection and see which bot/integration is being used. Args: - format: Response format ('json' or 'markdown') Returns: The bot user object for the current integration.
notion_get_block{
"format": "example_format",
"blockId": "example_blockId"
}notion_get_block_children{
"format": "example_format",
"blockId": "example_blockId",
"pageSize": true,
"startCursor": "example_startCursor"
}notion_append_blocks{
"blockId": "example_blockId",
"children": true
}