Notion
Unverified verified 13 jun 2026TL;DR
Notion is an all-in-one productivity platform that combines notes, tasks, wikis, and databases into a highly customizable block-based workspace. It is designed for individuals and teams looking to consolidate fragmented tools into a single source of truth. Its key differentiator is its unique database-meets-document architecture, allowing users to build bespoke workflows from scratch.
What Users Actually Pay
No user-reported pricing yet.
Our Take
Notion has redefined the 'productivity suite' by moving away from rigid structures and embracing a modular 'Lego-like' approach. It occupies a dominant market position as a hybrid between document editors like Google Docs and database tools like Airtable. Its greatest strength is its versatility; a single workspace can act as a company wiki, a CRM, and a project management board simultaneously. However, this flexibility is a double-edged sword, often leading to a 'blank page' problem where users struggle to architect effective systems without pre-made templates. While it excels at knowledge management and collaboration, Notion can feel slower than specialized tools for high-intensity task management or data-heavy spreadsheets. Performance issues on massive databases and a historically weak offline mode remain recurring pain points for power users. Despite these technical hurdles, its community-driven template ecosystem and rapid integration of AI features make it a formidable central hub for modern knowledge work. Best suited for tech-forward startups, creative agencies, and students who value customization and visual organization. It is less ideal for industries with strict compliance needs or teams that prefer out-of-the-box rigid structures like Jira or Trello.
Similar Products
Pros
- + Unmatched flexibility with a block-based system that allows for infinite customization of pages and workflows.
- + Powerful relational databases with multiple views (Gallery, Board, Timeline) that link information across the entire workspace.
- + A massive library of community and official templates that accelerate the setup process for new users.
- + Seamless real-time collaboration features, including mentions, comments, and granular sharing permissions.
- + Integrated Notion AI that assists with summarizing documents, brainstorming, and querying workspace data.
Cons
- - Steep learning curve for advanced features like database relations, rollups, and complex formulas.
- - Mobile application performance is notably inferior to the desktop experience, especially for larger pages.
- - Lack of a robust offline mode remains a significant limitation for users who travel or have unstable internet.
- - Performance can degrade significantly ('lag') when databases contain thousands of entries or complex nested blocks.
- - Standard project management features (like native time tracking) are often missing and require manual workarounds.
Sentiment Analysis
General sentiment is highly positive regarding versatility and knowledge organization, but tempered by persistent technical complaints regarding mobile performance, API rate limits, and the lack of a true offline mode.
Sentiment Over Time
By Source
5000 mentions
Sample quotes (1)
- "Notion is the best in class for the block system, allowing everything to be written in the best way possible for all doc needs. It's a perfect Jira alternative for small companies."
2725 mentions
Sample quotes (1)
- "It is an excellent application for achieving optimal collaborative work... though the mobile app is less intuitive than the desktop version and performance lags with large databases."
1000 mentions
Sample quotes (1)
- "The API rate limits are frustrating for personal automation. It's great for document workflows but breaks down for high-frequency data syncing."
500 mentions
Sample quotes (1)
- "We moved everything into Notion making it easier to find and update content. It's almost too flexible at times, requiring more controls to restrict structure."
Agent Readiness
81/100Notion is highly 'agent-ready' due to its structured block-based API and recent addition of native webhooks. The REST API is well-documented with a high-quality SDK, making it easy for AI agents to read, write, and search across workspace content. However, the 3-request-per-second rate limit can be a bottleneck for agents performing massive data migrations or high-frequency updates, and the complex nested structure of blocks requires sophisticated parsing logic from LLM agents to accurately interpret page layouts.
Last checked May 9, 2026
MCP Integrations
13 servers45 tools3,372 total usesSearch across your Notion workspace and connected sources to quickly find pages, databases, and users. View full page and database details for deeper context. Create and update pages, manage databases, move or duplicate content, and add comments to keep work organized.
14 tools
notion-searchPerform a search over: - "internal": Semantic search over Notion workspace and connected sources (Slack, Google Drive, Github, Jira, Microsoft Teams, Sharepoint, OneDrive, Linear). Supports filtering by creation date and creator. - "user": Search for users by name or email. Auto-selects AI search (with connected sources) or workspace search (workspace-only, faster) based on user's access to Notion AI. Use content_search_mode to override. Use "fetch" tool for full page/database contents after getting search results. Each result's "url" field contains a page ID for Notion results (pass directly to fetch tool's "id" param) or a full URL for external connector results (Slack, Google Drive, etc.). Set page_size (default 10, max 25) and max_highlight_length (default 200, 0 to omit) as low as possible to minimize response size. To search within a database: First fetch the database to get the data source URL (collection://...) from <data-source url="..."> tags, then use that as data_source_url. For multi-source databases, match by view ID (?v=...) in URL or search all sources separately. Don't combine database URL/ID with collection:// prefix for data_source_url. Don't use database URL as page_url. <example description="Search with date range filter (only documents created in 2024)"> { "query": "quarterly revenue report", "query_type": "internal", "filters": { "created_date_range": { "start_date": "2024-01-01", "end_date": "2025-01-01" } } } </example> <example description="Teamspace + creator filter"> {"query": "project updates", "query_type": "internal", "teamspace_id": "f336d0bc-b841-465b-8045-024475c079dd", "filters": {"created_by_user_ids": ["a1b2c3d4-e5f6-7890-abcd-ef1234567890"]}} </example> <example description="Database with date + creator filters"> {"query": "design review", "data_source_url": "collection://f336d0bc-b841-465b-8045-024475c079dd", "filters": {"created_date_range": {"start_date": "2024-10-01"}, "created_by_user_ids": ["a1b2c3d4-e5f6-7890-abcd-ef1234567890", "b2c3d4e5-f6a7-8901-bcde-f12345678901"]}} </example> <example description="User search"> {"query": "[email protected]", "query_type": "user"} </example>notion-fetchRetrieves details about a Notion entity (page, database, or data source) by URL or ID. Provide URL or ID in `id` parameter. Make multiple calls to fetch multiple entities. Pages use enhanced Markdown format. For the complete specification, fetch the MCP resource at `notion://docs/enhanced-markdown-spec`. Databases return all data sources (collections). Each data source has a unique ID shown in `<data-source url="collection://...">` tags. You can pass a data source ID directly to this tool to fetch details about that specific data source, including its schema and properties. Use data source IDs with update_data_source and query_data_sources tools. Multi-source databases (e.g., with linked sources) will show multiple data sources. Set `include_discussions` to true to see discussion counts and inline discussion markers that correlate with the `get_comments` tool. The page output will include a `<page-discussions>` summary tag with discussion count, preview snippets, and `discussion://` URLs that match the discussion IDs returned by `get_comments`. <example>{"id": "https://notion.so/workspace/Page-a1b2c3d4e5f67890"}</example> <example>{"id": "12345678-90ab-cdef-1234-567890abcdef"}</example> <example>{"id": "https://myspace.notion.site/Page-Title-abc123def456"}</example> <example>{"id": "page-uuid", "include_discussions": true}</example> <example>{"id": "collection://12345678-90ab-cdef-1234-567890abcdef"}</example>notion-create-pages## Overview Creates one or more Notion pages, with the specified properties and content. ## Parent All pages created with a single call to this tool will have the same parent. The parent can be a Notion page ("page_id") or data source ("data_source_id"). If the parent is omitted, the pages are created as standalone, workspace-level private pages, and the person that created them can organize them later as they see fit. If you have a database URL, ALWAYS pass it to the "fetch" tool first to get the schema and URLs of each data source under the database. You can't use the "database_id" parent type if the database has more than one data source, so you'll need to identify which "data_source_id" to use based on the situation and the results from the fetch tool (data source URLs look like collection://<data_source_id>). If you know the pages should be created under a data source, do NOT use the database ID or URL under the "page_id" parameter; "page_id" is only for regular, non-database pages. ## Content Notion page content is a string in Notion-flavored Markdown format. Don't include the page title at the top of the page's content. Only include it under "properties". **IMPORTANT**: For the complete Markdown specification, always first fetch the MCP resource at `notion://docs/enhanced-markdown-spec`. Do NOT guess or hallucinate Markdown syntax. This spec is also applicable to other tools like update-page and fetch. ## Properties Notion page properties are a JSON map of property names to SQLite values. When creating pages in a database: - Use the correct property names from the data source schema shown in the fetch tool results. - Always include a title property. Data sources always have exactly one title property, but it may not be named "title", so, again, rely on the fetched data source schema. For pages outside of a database: - The only allowed property is "title", which is the title of the page in inline markdown format. Always include a "title" property. **IMPORTANT**: Some property types require expanded formats: - Date properties: Split into "date:{property}:start", "date:{property}:end" (optional), and "date:{property}:is_datetime" (0 or 1) - Place properties: Split into "place:{property}:name", "place:{property}:address", "place:{property}:latitude", "place:{property}:longitude", and "place:{property}:google_place_id" (optional) - Number properties: Use JavaScript numbers (not strings) - Checkbox properties: Use "__YES__" for checked, "__NO__" for unchecked **Special property naming**: Properties named "id" or "url" (case insensitive) must be prefixed with "userDefined:" (e.g., "userDefined:URL", "userDefined:id") ## Templates When creating a page in a database, you can apply a template to pre-populate it with content and property values. Use the "fetch" tool on a database to see available templates in the <templates> section of each data source. When using a template: - Pass the template's ID as "template_id" in the page object. - Do NOT include "content" when using a template, as the template provides it. - You can still set "properties" alongside the template to override template defaults. - Template application is asynchronous. The page is created immediately but starts blank; the template content will appear shortly after. ## Icon and Cover Each page can optionally have an icon and a cover image. - "icon": An emoji character (e.g. "🚀"), a custom emoji by name (e.g. ":rocket_ship:"), or an external image URL. Use "none" to remove. Omit to leave unchanged. - "cover": An external image URL. Use "none" to remove. Omit to leave unchanged. ## Examples <example description="Create a page with an icon and cover"> { "pages": [ { "properties": {"title": "My Page"}, "icon": "🚀", "cover": "https://example.com/cover.jpg" } ] } </example> <example description="Create a page from a database template"> { "parent": {"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd"}, "pages": [ { "template_id": "a5da15f6-b853-455d-8827-f906fb52db2b", "properties": { "Task Name": "New urgent bug" } } ] } </example> <example description="Create a standalone page with a title and content"> { "pages": [ { "properties": {"title": "Page title"}, "content": "# Section 1 {color="blue"} Section 1 content <details> <summary>Toggle block</summary> Hidden content inside toggle </details>" } ] } </example> <example description="Create a page under a database's data source"> { "parent": {"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd"}, "pages": [ { "properties": { "Task Name": "Task 123", "Status": "In Progress", "Priority": 5, "Is Complete": "__YES__", "date:Due Date:start": "2024-12-25", "date:Due Date:is_datetime": 0 } } ] } </example> <example description="Create a page with an existing page as a parent"> { "parent": {"page_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"}, "pages": [ { "properties": {"title": "Page title"}, "content": "# Section 1 Section 1 content # Section 2 Section 2 content" } ] } </example>notion-update-page## Overview Update a Notion page's properties or content. ## Properties Notion page properties are a JSON map of property names to SQLite values. For pages in a database: - ALWAYS use the "fetch" tool first to get the data source schema and the exact property names. - Provide a non-null value to update a property's value. - Omitted properties are left unchanged. **IMPORTANT**: Some property types require expanded formats: - Date properties: Split into "date:{property}:start", "date:{property}:end" (optional), and "date:{property}:is_datetime" (0 or 1) - Place properties: Split into "place:{property}:name", "place:{property}:address", "place:{property}:latitude", "place:{property}:longitude", and "place:{property}:google_place_id" (optional) - Number properties: Use JavaScript numbers (not strings) - Checkbox properties: Use "__YES__" for checked, "__NO__" for unchecked **Special property naming**: Properties named "id" or "url" (case insensitive) must be prefixed with "userDefined:" (e.g., "userDefined:URL", "userDefined:id") For pages outside of a database: - The only allowed property is "title", which is the title of the page in inline markdown format. ## Content Notion page content is a string in Notion-flavored Markdown format. **IMPORTANT**: For the complete Markdown specification, first fetch the MCP resource at `notion://docs/enhanced-markdown-spec`. Do NOT guess or hallucinate Markdown syntax. Before updating a page's content with this tool, use the "fetch" tool first to get the existing content to find out the Markdown snippets to use in the "update_content" command's old_str fields. ### Preserving Child Pages and Databases When using "replace_content", the operation will check if any child pages or databases would be deleted. If so, it will fail with an error listing the affected items. To preserve child pages/databases, include them in new_str using `<page url="...">` or `<database url="...">` tags. Get the exact URLs from the "fetch" tool output. **CRITICAL**: To intentionally delete child content: if the call failed with validation and requires `allow_deleting_content` to be true, DO NOT automatically assume the content should be deleted. ALWAYS show the list of pages to be deleted and ask for user confirmation before proceeding. ## Icon and Cover You can set or remove a page's icon and cover alongside any command. - "icon": An emoji character (e.g. "🚀"), a custom emoji by name (e.g. ":rocket_ship:"), or an external image URL. Use "none" to remove. Omit to leave unchanged. - "cover": An external image URL. Use "none" to remove. Omit to leave unchanged. ## Examples <example description="Update page icon and cover"> { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "update_properties", "properties": {"title": "My Page"}, "icon": "🚀", "cover": "https://example.com/cover.jpg" } </example> <example description="Update page properties"> { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "update_properties", "properties": { "title": "New Page Title", "status": "In Progress", "priority": 5, "checkbox": "__YES__", "date:deadline:start": "2024-12-25", "date:deadline:is_datetime": 0, "place:office:name": "HQ", "place:office:latitude": 37.7749, "place:office:longitude": -122.4194 } } </example> <example description="Replace the entire content of a page"> { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "replace_content", "new_str": "# New Section Updated content goes here" } </example> <example description="Update specific content in a page (search-and-replace)"> { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "update_content", "content_updates": [ { "old_str": "# Old Section Old content here", "new_str": "# New Section Updated content goes here" } ] } </example> <example description="Insert content after a specific location"> { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "update_content", "content_updates": [ { "old_str": "## Previous section Existing content", "new_str": "## Previous section Existing content ## New Section Content to insert goes here" } ] } </example> <example description="Multiple content updates in a single call"> { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "update_content", "content_updates": [ { "old_str": "Old text 1", "new_str": "New text 1" }, { "old_str": "Old text 2", "new_str": "New text 2" } ] } </example> ## Templates You can apply a template to an existing page using the "apply_template" command. The template content is appended to the page asynchronously. Get template IDs from the <templates> section in the fetch tool results for a database, or use any page ID as a template. <example description="Apply a template to an existing page"> { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "apply_template", "template_id": "a5da15f6-b853-455d-8827-f906fb52db2b" } </example> ## Verification You can verify or unverify a page using the "update_verification" command. Verification marks a page as reviewed and up-to-date. Requires a Business or Enterprise plan (or the page must be in a wiki). <example description="Verify a page for 90 days"> { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "update_verification", "verification_status": "verified", "verification_expiry_days": 90 } </example> <example description="Verify a page indefinitely"> { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "update_verification", "verification_status": "verified" } </example> <example description="Remove verification from a page"> { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "update_verification", "verification_status": "unverified" } </example>notion-move-pagesMove one or more Notion pages or databases to a new parent.notion-duplicate-pageDuplicate a Notion page. The page must be within the current workspace, and you must have permission to access it. The duplication completes asynchronously, so do not rely on the new page identified by the returned ID or URL to be populated immediately. Let the user know that the duplication is in progress and that they can check back later using the 'fetch' tool or by clicking the returned URL and viewing it in the Notion app.notion-create-databaseCreates a new Notion database using SQL DDL syntax. If no title property provided, "Name" is auto-added. Returns Markdown with schema, SQLite definition, and data source ID in <data-source> tag for use with update_data_source and query_data_sources tools. The schema param accepts a CREATE TABLE statement defining columns. Type syntax: - Simple: TITLE, RICH_TEXT, DATE, PEOPLE, CHECKBOX, URL, EMAIL, PHONE_NUMBER, STATUS, FILES - SELECT('opt':color, ...) / MULTI_SELECT('opt':color, ...) - NUMBER [FORMAT 'dollar'] / FORMULA('expression') - RELATION('data_source_id') — one-way relation - RELATION('data_source_id', DUAL) — two-way relation - RELATION('data_source_id', DUAL 'synced_name') — two-way with synced property name - RELATION('data_source_id', DUAL 'synced_name' 'synced_id') — two-way with synced name and ID (for self-relations) - ROLLUP('rel_prop', 'target_prop', 'function') - UNIQUE_ID [PREFIX 'X'] / CREATED_TIME / LAST_EDITED_TIME - Any column: COMMENT 'description text' Colors: default, gray, brown, orange, yellow, green, blue, purple, pink, red <example description="Minimal">{"schema": "CREATE TABLE ("Name" TITLE)"}</example> <example description="Task DB">{"title": "Tasks", "schema": "CREATE TABLE ("Task Name" TITLE, "Status" SELECT('To Do':red, 'Done':green), "Due Date" DATE)"}</example> <example description="With parent and options">{"parent": {"page_id": "f336d0bc-b841-465b-8045-024475c079dd"}, "title": "Projects", "schema": "CREATE TABLE ("Name" TITLE, "Budget" NUMBER FORMAT 'dollar', "Tags" MULTI_SELECT('eng':blue, 'design':pink), "Task ID" UNIQUE_ID PREFIX 'PRJ')"}</example> <example description="Self-relation (two-step: create database first, then use its data source ID with update_data_source to add self-relations)">{"title": "Tasks", "schema": "CREATE TABLE ("Name" TITLE, "Parent" RELATION('ds_id', DUAL 'Children' 'children'), "Children" RELATION('ds_id', DUAL 'Parent' 'parent'))"}</example>notion-update-data-sourceUpdate a Notion data source's schema, title, or attributes using SQL DDL statements. Returns Markdown showing updated structure and schema. Accepts a data source ID (collection ID from fetch response's <data-source> tag) or a single-source database ID. Multi-source databases require the specific data source ID. The statements param accepts semicolon-separated DDL statements: - ADD COLUMN "Name" <type> - add a new property - DROP COLUMN "Name" - remove a property - RENAME COLUMN "Old" TO "New" - rename a property - ALTER COLUMN "Name" SET <type> - change type/options Same type syntax as create_database. Key types: - SELECT('opt':color, ...) / MULTI_SELECT('opt':color, ...) - NUMBER [FORMAT 'dollar'] / FORMULA('expression') - RELATION('ds_id') / RELATION('ds_id', DUAL) / RELATION('ds_id', DUAL 'synced_name' 'synced_id') - ROLLUP('rel_prop', 'target_prop', 'function') / UNIQUE_ID [PREFIX 'X'] - Simple: TITLE, RICH_TEXT, DATE, PEOPLE, CHECKBOX, URL, EMAIL, PHONE_NUMBER, STATUS, FILES <example description="Add properties">{"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd", "statements": "ADD COLUMN "Priority" SELECT('High':red, 'Medium':yellow, 'Low':green); ADD COLUMN "Due Date" DATE"}</example> <example description="Rename property">{"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd", "statements": "RENAME COLUMN "Status" TO "Project Status""}</example> <example description="Remove property">{"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd", "statements": "DROP COLUMN "Old Property""}</example> <example description="Add self-relation">{"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd", "statements": "ADD COLUMN "Parent" RELATION('f336d0bc-b841-465b-8045-024475c079dd', DUAL 'Children' 'children'); ADD COLUMN "Children" RELATION('f336d0bc-b841-465b-8045-024475c079dd', DUAL 'Parent' 'parent')"}</example> <example description="Update title">{"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd", "title": "Project Tracker 2024"}</example> <example description="Trash data source">{"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd", "in_trash": true}</example> Notes: Cannot delete/create title properties. Max one unique_id property. Cannot update synced databases. Use "fetch" first to see current schema and get the data source ID from <data-source url="collection://..."> tags.notion-create-commentAdd a comment to a page or specific content. Creates a new comment. Provide `page_id` to identify the page, then choose ONE targeting mode: - `page_id` alone: Page-level comment on the entire page - `page_id` + `selection_with_ellipsis`: Comment on specific block content - `discussion_id`: Reply to an existing discussion thread (page_id is still required) For content targeting, use `selection_with_ellipsis` with ~10 chars from start and end: "# Section Ti...tle content" <example description="Page-level comment"> {"page_id": "uuid", "rich_text": [{"text": {"content": "Comment"}}]} </example> <example description="Comment on specific content"> {"page_id": "uuid", "selection_with_ellipsis": "# Meeting No...es heading", "rich_text": [{"text": {"content": "Comment on this section"}}]} </example> <example description="Reply to discussion"> {"page_id": "uuid", "discussion_id": "discussion://pageId/blockId/discussionId", "rich_text": [{"text": {"content": "Reply"}}]} </example>notion-get-commentsGet comments and discussions from a Notion page. Returns discussions with full comment content in XML format. By default, returns page-level discussions only. Tip: Use the `fetch` tool with `include_discussions: true` first to see where discussions are anchored in the page content, then use this tool to retrieve full discussion threads. The `discussion://` URLs in the fetch output match the discussion IDs returned here. Parameters: - `include_all_blocks`: Include discussions on child blocks (default: false) - `include_resolved`: Include resolved discussions (default: false) - `discussion_id`: Fetch a specific discussion by ID or URL <example>{"page_id": "page-uuid"}</example> <example>{"page_id": "page-uuid", "include_all_blocks": true}</example> <example>{"page_id": "page-uuid", "discussion_id": "discussion://pageId/blockId/discussionId"}</example>notion-get-teamsRetrieves a list of teams (teamspaces) in the current workspace. Shows which teams exist, user membership status, IDs, names, and roles. Teams are returned split by membership status and limited to a maximum of 10 results. <examples> 1. List all teams (up to the limit of each type): {} 2. Search for teams by name: {"query": "engineering"} 3. Find a specific team: {"query": "Product Design"} </examples>notion-get-usersRetrieves a list of users in the current workspace. Shows workspace members and guests with their IDs, names, emails (if available), and types (person or bot). Supports cursor-based pagination to iterate through all users in the workspace. <examples> 1. List all users (first page): {} 2. Search for users by name or email: {"query": "john"} 3. Get next page of results: {"start_cursor": "abc123"} 4. Set custom page size: {"page_size": 20} 5. Fetch a specific user by ID: {"user_id": "00000000-0000-4000-8000-000000000000"} 6. Fetch the current user: {"user_id": "self"} </examples>notion-create-viewCreate a new view on a Notion database. Exactly one of "database_id" or "parent_page_id" must be provided: - "database_id": add a new view tab to an existing database. - "parent_page_id": create an inline linked database view on a page that references the existing "data_source_id" (like the UI "/linked" command). The linked view block is appended to the end of the parent page. Use "fetch" first to get the database_id, parent_page_id, and data_source_id (from <data-source> tags in the response). The caller must have edit access to the database (or parent page) and access to the data source. Supported types: table, board, list, calendar, timeline, gallery, form, chart, map, dashboard. The optional "configure" param accepts a DSL for filters, sorts, grouping, and display options. See the notion://docs/view-dsl-spec resource for full syntax. Key directives: - FILTER "Property" = "value" — filter rows - SORT BY "Property" ASC — sort rows - GROUP BY "Property" — group by property (required for board views) - CALENDAR BY "Property" — date property (required for calendar views) - TIMELINE BY "Start" TO "End" — date range (required for timeline views) - MAP BY "Property" — location property (required for map views) - CHART column|bar|line|donut|number — chart type with optional AGGREGATE, COLOR, HEIGHT, SORT, STACK BY, CAPTION - FORM CLOSE|OPEN — close/open form submissions - FORM ANONYMOUS true|false — toggle anonymous submissions - FORM PERMISSIONS none|reader|editor — set submission permissions - SHOW "Prop1", "Prop2" — set visible properties - COVER "Property" — cover image property <example description="Table view on existing database">{"database_id": "abc123", "data_source_id": "def456", "name": "All Tasks", "type": "table"}</example> <example description="Board grouped by Status">{"database_id": "abc123", "data_source_id": "def456", "name": "Task Board", "type": "board", "configure": "GROUP BY "Status""}</example> <example description="Filtered + sorted table">{"database_id": "abc123", "data_source_id": "def456", "name": "Active", "type": "table", "configure": "FILTER "Status" = "In Progress"; SORT BY "Due Date" ASC"}</example> <example description="Calendar view">{"database_id": "abc123", "data_source_id": "def456", "name": "Calendar", "type": "calendar", "configure": "CALENDAR BY "Due Date""}</example> <example description="Dashboard">{"database_id": "abc123", "data_source_id": "def456", "name": "Overview", "type": "dashboard"}</example> <example description="Linked view on a page">{"parent_page_id": "ghi789", "data_source_id": "def456", "name": "Company tasks", "type": "table", "configure": "FILTER "Company" = "Acme""}</example>notion-update-viewUpdate a view's name, filters, sorts, or display configuration. Use "fetch" to get view IDs from database responses. Only include fields you want to change. The "configure" param uses the same DSL as create_view. Use CLEAR to remove settings: - CLEAR FILTER — remove all filters - CLEAR SORT — remove all sorts - CLEAR GROUP BY — remove grouping See notion://docs/view-dsl-spec resource for full syntax. <example description="Rename">{"view_id": "abc123", "name": "Sprint Board"}</example> <example description="Update filter">{"view_id": "abc123", "configure": "FILTER "Status" = "Done""}</example> <example description="Clear filter, add sort">{"view_id": "abc123", "configure": "CLEAR FILTER; SORT BY "Created" DESC"}</example> <example description="Update grouping">{"view_id": "abc123", "configure": "GROUP BY "Priority"; SHOW "Name", "Status""}</example>
MCP server for Notion API — manage pages, blocks, databases, data sources, comments, and users. ## Features - Search pages and databases - Full CRUD for pages, blocks, and comments - Database queries with filters and sorts - Data source management (new Notion API) - User and bot information ## 25 Tools **Search**: search workspace **Pages**: create, get, update, move, get property **Blocks**: get, get children, append, update, delete **Data Sources**: create, get, update, query, list templates **Databases**: get, query, create databases **Comments**: create, get, list comments **Users**: list, get user, get bot info ## Configuration - NOTION_API_KEY — Internal Integration Token from https://www.notion.so/my-integrations
25 tools
notion_searchSearch pages and databases in your Notion workspace by title. Filter by object type and sort by last edited time.notion_create_pageCreate a new page in Notion. Set parent as a data source (data_source_id) or another page (page_id). Provide properties matching the parent schema. Optionally include initial content blocks.notion_get_pageRetrieve a Notion page by ID. Returns properties, parent, timestamps, and URL. Use notion_get_block_children to read the page content.notion_update_pageUpdate a Notion page. Change properties, icon, cover, or archive/trash status. Use block tools to update page content.notion_move_pageMove a page to a new parent page or data source.notion_get_page_propertyRetrieve a specific property value from a page. Useful for paginated properties like relations or rollups.notion_get_blockRetrieve a single block by ID. Returns block type, content, and whether it has children.notion_get_block_childrenGet child blocks of a page or block. This is how you read page content. Returns a paginated list of blocks.notion_append_blocksAppend content blocks to a page or block. Max 100 blocks, 2 levels of nesting. Common types: paragraph, heading_1/2/3, bulleted_list_item, numbered_list_item, to_do, code, quote, callout, divider, table.notion_update_blockUpdate a block's content. Send the block type key with updated data, e.g. { "paragraph": { "rich_text": [...] } }.notion_delete_blockDelete (archive) a block. The block is moved to trash.notion_create_data_sourceCreate a new data source (table) under an existing database. Data sources are individual tables within a database (API 2025-09-03).notion_get_data_sourceRetrieve a data source by ID. Returns title, property schema, and timestamps.notion_update_data_sourceUpdate a data source title or property schema.notion_query_data_sourceQuery pages in a data source with filters and sorts. For new API (2025-09-03). For legacy databases use notion_query_database.notion_list_data_source_templatesList page templates available in a data source.notion_get_databaseGet a database by ID (legacy endpoint). Returns schema with properties and title. For new integrations prefer data source endpoints.notion_query_databaseQuery a database with filters and sorts (legacy endpoint). For new integrations prefer notion_query_data_source.notion_create_databaseCreate a new inline database inside a page (legacy). Must include at least one title property in the schema.notion_create_commentCreate a comment on a page or reply in a discussion thread. Integration must have comment capabilities enabled.notion_get_commentsList unresolved comments on a page or block.notion_get_commentRetrieve a single comment by ID.notion_list_usersList all users in the workspace. Returns names, types (person/bot), and avatars.notion_get_userGet a user by ID.notion_get_bot_userGet the bot user info for this integration. Useful for checking identity and permissions.
Create, update, and manage pages, databases, and workspace users
Official Notion MCP server
Submit podcast orders, check status, and manage webhooks via Barevalue editing API.
Convert markdown into polished Notion pages while preserving structure and formatting. Streamline migrations and publishing workflows by turning existing docs into ready-to-use Notion content. Save time and avoid manual copy-paste by automating the transformation from files to pages.
1 tool
markdown-to-notionConvert markdown content to notion json page content
Search your Notion workspace to quickly find pages, databases, and people. Retrieve full content, then create, update, move, or duplicate pages and databases to keep work organized. Add comments and manage users to streamline collaboration.
13 tools
searchPerform a search over: - "internal": Perform a semantic search over your entire Notion workspace and connected sources (Slack, Google Drive, Github, Jira, Microsoft Teams, Sharepoint, OneDrive, or Linear). - "users": Perform a search over the Notion users in the current workspace. You can use search when you need to find information which is not already available via other tools, and you don't know where it's located. If the user doesn't have access to Notion AI features, the search will automatically fall back to a workspace search that doesn't use AI or include connected sources. This will be indicated by the "type" field in the response being "workspace_search" instead of "ai_search". Do NOT use search to get information about a Database's integrations, views, or other components. If initial results do not contain all the information you need, you can try more specific queries. After obtaining internal search results, if the user asks for the full contents of a page or database, use the "fetch" tool. This tool only shows some details like a highlight and the URL and title of each search result. To find pages under a Notion database, use this tool and supply the database's URL as the data_source_url parameter. These look like "collection://f336d0bc-b841-465b-8045-024475c079dd". You can get this URL by using the "fetch" tool to view the database and copying the URL from the <data-source url="..."> block. Keep in mind that Notion-flavored Markdown has this concept of a hierarchy of <database> blocks that contain <data-source> blocks, but users aren't familiar with the Notion "Data Source" terminology or product. Prefer to refer to both of them as "databases" in your response to humans to avoid confusion. Examples of searches: 1. Search for information across the workspace: { "query": "quarterly revenue report", "query_type": "internal" } 2. Search within a specific page and its children: { "query": "meeting notes action items", "query_type": "internal", "page_url": "https://www.notion.so/workspace/Team-Hub-1234567890abcdef" } 3. Search within a database's pages: { "query": "design review feedback", "query_type": "internal", "data_source_url": "collection://f336d0bc-b841-465b-8045-024475c079dd" } 4. Search within a specific teamspace: { "query": "project updates", "query_type": "internal", "teamspace_id": "f336d0bc-b841-465b-8045-024475c079dd" } 5. Search for users: { "query": "[email protected]", "query_type": "user" } 6. Find users by partial name: { "query": "sarah", "query_type": "user" } Common use cases: - "What does the sales team require from the product team in the next quarter?" - "Find all meeting notes that mention the new pricing strategy" - "Which pages discuss the API migration project?" - "Find all team members with email addresses ending in @design.company.com" - "What are the latest updates on the mobile app redesign?"fetchRetrieves details about a Notion entity by its URL or ID. You can fetch the following types of entities: - Page, i.e. from a <page> block or a <mention-page> mention - Database, i.e. from a <database> block or a <mention-database> mention Use the "fetch" tool when you need to see the details of a Notion entity you already know exists and have its URL or ID. Provide the Notion entity's URL or ID in the `id` parameter. You must make multiple calls to the "fetch" tool if you want to fetch multiple entities. Content for pages that are returned use the enhanced Markdown format, which is a superset of the standard Markdown syntax. See the full spec in the description of the "create-pages" tool. Databases can have multiple data sources, which are collections of pages with the same schema. When fetching a database, the tool will return information about all its data sources. Examples of fetching entities: 1. Fetch a page by URL: { "id": "https://www.notion.so/workspace/Product-Requirements-1234567890abcdef" } 2. Fetch a page by ID (UUIDv4 with dashes): { "id": "12345678-90ab-cdef-1234-567890abcdef" } 3. Fetch a page by ID (UUIDv4 without dashes): { "id": "1234567890abcdef1234567890abcdef" } 4. Fetch a database: { "id": "https://www.notion.so/workspace/Projects-Database-abcdef1234567890" } Common use cases: - "What are the product requirements still need to be implemented from this ticket https://notion.so/page-url?" - "Show me the details of the project database at this URL" - "Get the content of page 12345678-90ab-cdef-1234-567890abcdef"notion-create-pagesCreates one or more Notion pages with specified properties and content. Use "create-pages" when you need to create one or more new pages that don't exist yet. Always include a title property under `properties` in each entry of the `pages` array. Otherwise, the page title will appear blank even if the page content is populated. Don't duplicate the page title at the top of the page's `content`. When creating pages under a Notion database, the property names must match the database's schema. Use the "fetch" tool with a Notion database URL to get the database schema. Or, look for existing pages under the database using the "search" tool then use the "fetch" tool to see the names of the property keys. One exception is the "title" property, which all pages have, but can be named differently in the schema of a database. For convenience, you can use the generic property name "title" in the "properties" object, and it will automatically be re-mapped to the actual name of the title property in the database schema when creating the page. All pages created with a single call to this tool will have the same parent. The parent can be a Notion page or database. If the parent is omitted, the pages will be created as standalone, workspace-level private pages and the person that created them can organize them as they see fit later. IMPORTANT: When specifying a parent database, use the appropriate ID format: - Use "data_source_id" when you have a collection:// URL from the fetch tool (this is the most common case) - Use "database_id" when you have a page URL for a database view (less common) - Use "page_id" when the parent is a regular page Examples of creating pages: 1. Create a standalone page with a title and content: { "pages": [ { "properties": {"title":"Page title"}, "content": "# Section 1 Section 1 content # Section 2 Section 2 content" } ] } 2. Create a page under a database's data source (collection), e.g. using an ID from a collection:// URL provided by the fetch tool: { "parent": {"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd"}, "pages": [ { "properties": { "Task Name": "Task 123", "Status": "In Progress", }, }, ], } 3. Create a page with an existing page as a parent: { "parent": {"page_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"}, "pages": [ { "properties": {"title": "Page title"}, "content": "# Section 1 Section 1 content # Section 2 Section 2 content" } ] } The enhanced Markdown format used for page content is a superset of the standard Markdown syntax. Here is the full spec, but please note that Notion does not yet use the Data Source terminology, and only supports Databases. Ignore anything related to "data sources" and assume databases can only define one schema for now. ### Notion-flavored Markdown Notion-flavored Markdown is a variant of standard Markdown with additional features to support all Block and Rich text types. Use tabs for indentation. Use backslashes to escape characters. For example, * will render as * and not as a bold delimiter. Block types: Markdown blocks use a {color="Color"} attribute list to set a block color. Text: Rich text {color="Color"} Children Headings: # Rich text {color="Color"} ## Rich text {color="Color"} ### Rich text {color="Color"} (Headings 4, 5, and 6 are not supported in Notion and will be converted to heading 3.) Bulleted list: - Rich text {color="Color"} Children Numbered list: 1. Rich text {color="Color"} Children Rich text types: Bold: **Rich text** Italic: *Rich text* Strikethrough: ~~Rich text~~ Underline: <span underline="true">Rich text</span> Inline code: `Code` Link: [Link text](URL) Citation: [^URL] To create a citation, you can either reference a compressed URL like [^{{1}}], or a full URL like [^https://example.com]. Colors: <span color?="Color">Rich text</span> Inline math: $Equation$ or $`Equation`$ if you want to use markdown delimiters within the equation. There must be whitespace before the starting $ symbol and after the ending $ symbol. There must not be whitespace right after the starting $ symbol or before the ending $ symbol. Inline line breaks within rich text: <br> Mentions: User: <mention-user url="{{URL}}">User name</mention-user> The URL must always be provided, and refer to an existing User. But Providing the user name is optional. In the UI, the name will always be displayed. So an alternative self-closing format is also supported: <mention-user url="{{URL}}"/> Page: <mention-page url="{{URL}}">Page title</mention-page> The URL must always be provided, and refer to an existing Page. Providing the page title is optional. In the UI, the title will always be displayed. Mentioned pages can be viewed using the "view" tool. Database: <mention-database url="{{URL}}">Database name</mention-database> The URL must always be provided, and refer to an existing Database. Providing the database name is optional. In the UI, the name will always be displayed. Mentioned databases can be viewed using the "view" tool. Date: <mention-date start="YYYY-MM-DD" end="YYYY-MM-DD"/> Datetime: <mention-date start="YYYY-MM-DDThh:mm:ssZ" end="YYYY-MM-DDThh:mm:ssZ"/> Custom emoji: :emoji_name: Custom emoji are rendered as the emoji name surrounded by colons. Colors: Text colors (colored text with transparent background): gray, brown, orange, yellow, green, blue, purple, pink, red Background colors (colored background with contrasting text): gray_bg, brown_bg, orange_bg, yellow_bg, green_bg, blue_bg, purple_bg, pink_bg, red_bg Usage: - Block colors: Add color="Color" to the first line of any block - Rich text colors (text colors and background colors are both supported): Use <span color="Color">Rich text</span> #### Advanced Block types for Page content The following block types may only be used in page content. <advanced-blocks> Quote: > Rich text {color="Color"} Children To-do: - [ ] Rich text {color="Color"} Children - [x] Rich text {color="Color"} Children Toggle: ▶ Rich text {color="Color"} Children Toggle heading 1: ▶# Rich text {color="Color"} Children Toggle heading 2: ▶## Rich text {color="Color"} Children Toggle heading 3: ▶### Rich text {color="Color"} Children For toggles and toggle headings, the children must be indented in order for them to be toggleable. If you do not indent the children, they will not be contained within the toggle or toggle heading. Divider: --- Table: <table fit-page-width?="true|false" header-row?="true|false" header-column?="true|false"> <colgroup> <col color?="Color"> <col color?="Color"> </colgroup> <tr color?="Color"> <td>Data cell</td> <td color?="Color">Data cell</td> </tr> <tr> <td>Data cell</td> <td>Data cell</td> </tr> </table> Note: All table attributes are optional. If omitted, they default to false. Table structure: - <table>: Root element with optional attributes: - fit-page-width: Whether the table should fill the page width - header-row: Whether the first row is a header - header-column: Whether the first column is a header - <colgroup>: Optional element defining column-wide styles - <col>: Column definition with optional attributes: - color: The color of the column - width: The width of the column. Leave empty to auto-size. - <tr>: Table row with optional color attribute - <td>: Data cell with optional color attribute Color precedence (highest to lowest): 1. Cell color (<td color="red">) 2. Row color (<tr color="blue_bg">) 3. Column color (<col color="gray">) Equation: $$ Equation $$ Code: ```language Code ``` XML blocks use the "color" attribute to set a block color. Callout: <callout icon?="emoji" color?="Color"> Children </callout> Columns: <columns> <column> Children </column> <column> Children </column> </columns> Page: <page url="{{URL}}" color?="Color">Title</page> Sub-pages can be viewed using the "view" tool. To create a new sub-page, omit the URL. You can then update the page content and properties with the "update-page" tool. Example: <page>New Page</page> Database: <database url="{{URL}}" inline?="{true|false}" color?="Color">Title</database> To create a new database, omit the URL. You can then update the database properties and content with the "update-database" tool. Example: <database>New Database</database> The "inline" toggles how the database is displayed in the UI. If it is true, the database is fully visible and interactive on the page. If false, the database is displayed as a sub-page. There is no "Data Source" block type. Data Sources are always inside a Database, and only Databases can be inserted into a Page. Audio: <audio source="{{URL}}" color?="Color">Caption</audio> File: File content can be viewed using the "view" tool. <file source="{{URL}}" color?="Color">Caption</file> Image: Image content can be viewed using the "view" tool. <image source="{{URL}}" color?="Color">Caption</image> PDF: PDF content can be viewed using the "view" tool. <pdf source="{{URL}}" color?="Color">Caption</pdf> Video: <video source="{{URL}}" color?="Color">Caption</video> Table of contents: <table_of_contents color?="Color"/> Synced block: The original source for a synced block. When creating a new synced block, do not provide the URL. After inserting the synced block into a page, the URL will be provided. <synced_block url?="{{URL}}"> Children </synced_block> Note: When creating new synced blocks, omit the url attribute - it will be auto-generated. When reading existing synced blocks, the url attribute will be present. Synced block reference: A reference to a synced block. The synced block must already exist and url must be provided. You can directly update the children of the synced block reference and it will update both the original synced block and the synced block reference. <synced_block_reference url="{{URL}}"> Children </synced_block_reference> Meeting notes: <meeting-notes> Rich text (meeting title) <summary> AI-generated summary of the notes + transcript </summary> <notes> User notes </notes> <transcript> Transcript of the audio (cannot be edited) </transcript> </meeting-notes> Note: The <transcript> tag contains a raw transcript and cannot be edited. Unknown (a block type that is not supported in the API yet): <unknown url="{{URL}}" alt="Alt"/> </advanced-blocks>notion-update-pageUpdate a Notion page's properties or content. Notion page properties are a JSON map of property names to SQLite values. For pages in a database, use the SQLite schema definition shown in <database>. For pages outside of a database, the only allowed property is "title", which is the title of the page in inline markdown format. Notion page content is a string in Notion-flavored Markdown format. See the "create-pages" tool description for the full enhanced Markdown spec. Before updating a page's content with this tool, use the "fetch" tool first to get the existing content to find out the Markdown snippets to use in the "replace_content_range" or "insert_content_after" commands. IMPORTANT: Some property types require expanded formats: - Date properties: Split into "date:{property}:start", "date:{property}:end" (optional), and "date:{property}:is_datetime" (0 or 1) - Place properties: Split into "place:{property}:name", "place:{property}:address", "place:{property}:latitude", "place:{property}:longitude", and "place:{property}:google_place_id" (optional) Number properties accept JavaScript numbers (not strings). Use null to remove a property's value. Boolean values like "__YES__" are supported for checkbox properties. Examples: (1) Update page properties: { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "update_properties", "properties": { "title": "New Page Title", "status": "In Progress", "priority": 5, "checkbox": "__YES__", "date:deadline:start": "2024-12-25", "date:deadline:is_datetime": 0, "place:office:name": "HQ", "place:office:latitude": 37.7749, "place:office:longitude": -122.4194 } } (2) Replace the entire content of a page: { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "replace_content", "new_str": "# New Section Updated content goes here" } (3) Replace specific content in a page: { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "replace_content_range", "selection_with_ellipsis": "# Old Section...end of section", "new_str": "# New Section Updated content goes here" } (4) Insert content after specific text: { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "insert_content_after", "selection_with_ellipsis": "## Previous section...", "new_str": " ## New Section Content to insert goes here" } Note: For selection_with_ellipsis, provide only the first ~10 characters, an ellipsis, and the last ~10 characters. Ensure the selection is unique; use longer snippets if needed to avoid ambiguity.notion-move-pagesMove one or more Notion pages or databases to a new parent.notion-duplicate-pageDuplicate a Notion page. The page must be within the current workspace, and you must have permission to access it. The duplication completes asynchronously, so do not rely on the new page identified by the returned ID or URL to be populated immediately. Let the user know that the duplication is in progress and that they can check back later using the 'fetch' tool or by clicking the returned URL and viewing it in the Notion app.notion-create-databaseCreates a new Notion database with the specified properties. Use this tool when you need to create a new database that doesn't exist yet. The database schema is defined through the "properties" object. If no title property is provided, one will be automatically added with the name "Name". Each property should include a type and may have additional configuration based on the property type. Common property types: - title: The main property (required, cannot be deleted) - rich_text: Multi-line text - number: Numeric values with optional formatting - select: Single choice from options - multi_select: Multiple choices from options - date: Date with optional time - people: User references - checkbox: Boolean values - url: Web links - email: Email addresses - phone_number: Phone numbers - formula: Calculated values based on other properties - relation: Links to pages in another database - rollup: Aggregated values from related pages The tool returns a rendered Markdown representation of the created database including its structure, data source configuration with full schema details, and SQLite table definition. This provides complete visibility into the database that was created. Examples of creating databases: 1. Create a minimal database with auto-added title property: { "properties": {} } 2. Create a task database under a page: { "parent": {"page_id": "f336d0bc-b841-465b-8045-024475c079dd"}, "title": [{"text": {"content": "Project Tasks"}}], "properties": { "Status": { "type": "select", "select": { "options": [ {"name": "To Do", "color": "red"}, {"name": "In Progress", "color": "yellow"}, {"name": "Done", "color": "green"} ] } }, "Priority": { "type": "select", "select": { "options": [ {"name": "High", "color": "red"}, {"name": "Medium", "color": "yellow"}, {"name": "Low", "color": "green"} ] } }, "Due Date": {"type": "date", "date": {}}, "Assignee": {"type": "people", "people": {}} } } 3. Create a workspace-level database with various property types: { "title": [{"text": {"content": "Company Directory"}}], "properties": { "Name": {"type": "title", "title": {}}, "Email": {"type": "email", "email": {}}, "Phone": {"type": "phone_number", "phone_number": {}}, "Department": { "type": "select", "select": { "options": [ {"name": "Engineering", "color": "blue"}, {"name": "Sales", "color": "green"}, {"name": "Marketing", "color": "purple"} ] } }, "Start Date": {"type": "date", "date": {}}, "Is Active": {"type": "checkbox", "checkbox": {}}, "Notes": {"type": "rich_text", "rich_text": {}} } } 4. Create a database with relations (assuming target database exists): { "title": [{"text": {"content": "Tasks"}}], "properties": { "Project": { "type": "relation", "relation": { "database_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "type": "single_property", "single_property": {} } } } }notion-update-databaseUpdate a Notion database's properties, name, description, or other attributes. The tool returns a rendered Markdown string showing the updated database structure, including its properties, data sources, and schema information. Database properties define the columns/fields that pages in the database can have. Each property has a type (text, number, select, etc.) and configuration options. Examples: (1) Update database title and description: { "database_id": "f336d0bc-b841-465b-8045-024475c079dd", "title": [{"type": "text", "text": {"content": "Project Tracker 2024"}}], "description": [{"type": "text", "text": {"content": "Track all projects and deliverables"}}] } (2) Add new properties to a database: { "database_id": "f336d0bc-b841-465b-8045-024475c079dd", "properties": { "Priority": { "select": { "options": [ {"name": "High", "color": "red"}, {"name": "Medium", "color": "yellow"}, {"name": "Low", "color": "green"} ] } }, "Due Date": {"date": {}}, "Assigned To": {"people": {}} } } (3) Rename an existing property (use the property ID or current name): { "database_id": "f336d0bc-b841-465b-8045-024475c079dd", "properties": { "Status": {"name": "Project Status"} } } (4) Remove a property (set to null): { "database_id": "f336d0bc-b841-465b-8045-024475c079dd", "properties": { "Old Property": null } } (5) Change display mode from inline to full page: { "database_id": "f336d0bc-b841-465b-8045-024475c079dd", "is_inline": false } (6) Move database to trash (WARNING: cannot be undone without going to the Notion app UI so explicitly confirm with the user that they really want to do this): { "database_id": "f336d0bc-b841-465b-8045-024475c079dd", "in_trash": true } Common property types: - title: The main property (required, cannot be deleted) - rich_text: Multi-line text - number: Numeric values with optional formatting - select: Single choice from options - multi_select: Multiple choices from options - date: Date with optional time - people: User references - checkbox: Boolean values - url: Web links - email: Email addresses - phone_number: Phone numbers - formula: Calculated values based on other properties - relation: Links to pages in another database - rollup: Aggregated values from related pages Notes: - You cannot delete or create new title properties - A database can only have one unique_id property - Synced databases cannot be updated - Use the "fetch" tool first to see the current database schemanotion-create-commentAdd a comment to a pagenotion-get-commentsGet all comments of a pagenotion-get-usersList all usersnotion-get-selfRetrieve your token's bot usernotion-get-userRetrieve a user
A Notion workspace is a collaborative environment where teams can organize work, manage projects,…
Operate Notion with a single Markdown document — read, create, and update pages in one call.
Markdown-first Notion MCP server — 92% fewer tokens, 26 tools, round-trip fidelity.
Markdown-first MCP server for Notion API with 9 composite tools and 39+ actions.
Notion MCP Pack
Notion MCP server — search, export, and import pages as markdown
Last checked May 26, 2026
Compare With
Reviews
No reviews yet. Be the first to review Notion!