Integrate Notion MCP server into your Slack workspace for instant access to your AI agent.
Tools that your AI agent can use through this MCP server to interact with Notion
Update a Notion page's property values, and/or archive (delete) it. Properties you don't include are left unchanged. Provide the page ID or URL (use Search or Query Data Source to find it). Set properties to a flat JSON object of column-name → value, e.g. { "Status": "Contained" }; call Retrieve Database Schema first to learn the exact column names and valid select options. To add body content instead of changing properties, use Append Block to Parent. See the documentation
Update a Notion database (data source): rename it, change its description, or add/rename/retype its columns. Provide the data source ID (use Search with filter: data_source to resolve a database name, or Retrieve Database Schema to inspect existing columns). properties is a JSON object of changes: to add a column, use a new name → type (e.g. { "Location": "rich_text" }); to rename/retype an existing column, key it by its current name/ID. Each value is a property schema object or a shorthand type name. See the documentation
Update a single existing child block (paragraph, heading, to-do, code, etc.) by its block ID. Use this only to mutate an existing block in place. Do NOT use to update a page's properties (database row fields) — use Update Page instead. Do NOT use to add new content to a page — use Append Block instead. Do NOT use to update a database's schema — use Update Database instead. See the documentation
Send a file upload. See the documentation
Search Notion for pages and databases (data sources) by title. Use this first to resolve a page or database name into an ID that the other Notion tools require (e.g. Query Data Source, Retrieve Database Schema, Get Page, Create Page). Leave query blank to list everything the integration can access. Set filter to data_source to find databases or page to find pages — on the current Notion API a database is returned as a data_source object, and its id is the data source ID you pass to the database tools. See the documentation
Retrieve a Notion page: both its property values and its body content rendered as Markdown. Use this to read what a page says or to inspect a database row's fields. Provide a page ID or a Notion page URL (use Search to resolve a page name into an ID). See the documentation
Use this action to retrieve a file upload. See the documentation
Get the column (property) schema of a Notion database (data source): each property's name, type, and — for select/multi_select/status columns — its allowed option values. Call this before Query Data Source, Create Page, or Update Page on a database so you use exact property names and valid option values. Provide the data source ID (use Search with filter: data_source to resolve a database name into its ID). See the documentation
Filter and sort the pages (rows) inside a Notion database (data source) by their property values. Discover exact property names and option values with Retrieve Database Schema first, then build a filter against them. A filter is a JSON object: a single condition { "property": "Status", "select": { "equals": "Escaped" } }, or a compound { "and": [ ... ] } / { "or": [ ... ] }. The condition key matches the property type — e.g. select, status, multi_select, number ({ "greater_than": 5 }), checkbox ({ "equals": true }), rich_text/title ({ "contains": "..." }), date. Omit filter to return all rows. Provide the data source ID (use Search with filter: data_source to resolve a database name). See the documentation
Use this action to list file uploads. See the documentation
Copy an EXISTING page (template) into a new page with a new title. Use this ONLY when the user is reusing the structure of an existing page as a template (e.g. "copy this offer letter template for a new candidate"). Do NOT use to create a new page with original content — for that, use Create Page. The source page must already exist in Notion and is identified by its page ID. See the documentation
Sets a Block object, including page blocks, to archived: true using the ID specified. See the documentation
Create a new Notion page. The parent can be either another page (creates a subpage) or a database/data source (creates a row in that database). Provide the parent's ID or URL — use Search to resolve a name into an ID. When the parent is a database, set properties to a flat JSON object of column-name → value (e.g. { "Status": "Active", "ThreatLevel": 9 }); call Retrieve Database Schema first to learn the exact column names and valid select options. content is the page body as Markdown (headings, bullet lists, paragraphs, etc.). See the documentation
Create a page from a data source. See the documentation
Create a file upload. See the documentation
Create a new Notion database (data source) as a subpage of a parent page, defining its column schema. Provide the parent page ID or URL (use Search to resolve a page name into an ID). properties is a JSON object of column-name → column type. Each value is a property schema object, or shorthand for simple types: { "Name": "title", "Quantity": "number", "Category": { "select": { "options": [ { "name": "A" }, { "name": "B" } ] } } }. Exactly one column must be the title type. See the documentation
Add a comment to a Notion page, or reply to an existing discussion thread. Provide either a page ID/URL (use Search to resolve a page name) or a discussion ID — not both. See the documentation
Use this action to finalize a mode=multi_part file upload after all of the parts have been sent successfully. See the documentation
Append Markdown content to the bottom of a Notion page (or block). The content is parsed from Markdown into Notion blocks — use it to add paragraphs, headings, bullet/numbered lists, to-dos, quotes, code, etc. Provide the page ID or URL (use Search to resolve a page name into an ID). To change a database row's property values instead, use Update Page. See the documentation
Returns a user using the ID specified. See the documentation
Get a Property Item object for a selected page and property. See the documentation
Get all content of a data source. See the documentation
Get page content as block objects or markdown. Blocks can be text, lists, media, a page, among others. See the documentation
Returns all users in the workspace. See the documentation
Retrieve the Notion identity tied to the current OAuth token, returning the full users.retrieve payload for me (person or bot). Includes the user ID, name, avatar URL, type (person vs bot), and workspace ownership metadata—useful for confirming which workspace is connected, adapting downstream queries, or giving an LLM the context it needs about who is operating inside Notion. See the documentation.