3.0.0npm · notion-mcp-server · current release
Observed 2026-09-02T12:48:09.242Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.
{
"tools": {
"listChanged": true
},
"prompts": {
"listChanged": true
},
"resources": {
"listChanged": true
},
"logging": {}
}| Tool | Category | Annotations | Risk |
|---|---|---|---|
notion_describeReturn the JSON Schema and a working example for one operation, plus which tool runs it (notion_read or notion_write). Use this BEFORE calling the operation when the payload shape is non-trivial (query filters, structured block trees, database property definitions). For simple ops, just call it — errors carry the schema.Input schema{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"operation": {
"type": "string",
"description": "Operation name to describe, as listed by notion_read / notion_write."
}
},
"required": [
"operation"
]
}Annotations{
"title": "Notion Describe",
"readOnlyHint": true,
"destructiveHint": false,
"openWorldHint": false
} | — | Read only · Non-destructive | — |
notion_readRun one Notion read operation by name. Nothing is modified.
Call: { operation, payload } — payload carries that operation's fields. Common: search_pages { query }, get_page { page_id }, get_page_markdown { page_id }, query_database { database_id, where? }, get_block_children { block_id }.
Responses are slimmed; pass verbose:true in payload for the raw Notion object. Every id field (page_id, block_id, database_id, view_id, …) also accepts a Notion URL, as copied from Share → Copy link. A block link's #fragment is used for block_id fields and a database link's ?v= for view_id fields.
If the payload is malformed, the error response includes the schema + a working example so you can correct and retry in one round-trip. Call notion_describe(operation) ahead of time only for complex shapes (query_database filters).Input schema{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"operation": {
"type": "string",
"enum": [
"query_database",
"list_data_sources",
"get_data_source",
"list_data_source_templates",
"get_view",
"list_views",
"query_view",
"list_comments",
"get_comment",
"list_users",
"get_user",
"get_bot_user",
"get_self",
"list_file_uploads",
"get_file_upload",
"get_file_url",
"get_image",
"search_pages",
"get_page",
"get_page_markdown",
"get_block",
"get_block_children"
],
"description": "The read operation to run. This list is the complete menu of read operations enabled on this server; notion_describe(operation) returns any operation's full schema."
},
"payload": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {},
"description": "Operation parameters. Pass either single-op fields directly, or { items: [...], atomic?, idempotency_key?, concurrency? } for batch."
}
},
"required": [
"operation",
"payload"
]
}Annotations{
"title": "Notion Read",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true
} | — | Read only · Non-destructive | — |
notion_writeRun one Notion write operation by name. Archive, trash and delete operations remove content — confirm with the user before running them.
Two ways to call:
• Single: { operation: "set_page_title", payload: { page_id, title } }
• Batch: { operation: "set_page_title", payload: { items: [{page_id, title}, ...], atomic?: false, idempotency_key?: "...", concurrency?: 3 } }
create_page, append_blocks, update_block and update_page_markdown also take a markdown string.
Responses are slimmed; pass verbose:true inside payload (single) or per item (batch) for the raw Notion object. Every id field (page_id, block_id, database_id, view_id, …) also accepts a Notion URL, as copied from Share → Copy link.
If the payload is malformed, the error response includes the schema + a working example so you can correct and retry in one round-trip. Call notion_describe(operation) ahead of time only for complex shapes (block trees, database property definitions, batch_mixed_blocks).Input schema{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"operation": {
"type": "string",
"enum": [
"create_database",
"update_database",
"delete_database",
"update_data_source",
"delete_data_source",
"create_view",
"update_view",
"delete_view",
"add_page_comment",
"add_discussion_comment",
"update_comment",
"delete_comment",
"upload_file",
"create_page",
"set_page_title",
"set_page_property",
"set_page_properties",
"archive_page",
"trash_page",
"restore_page",
"move_page",
"update_page_markdown",
"append_blocks",
"update_block",
"delete_block",
"batch_mixed_blocks"
],
"description": "The write operation to run. This list is the complete menu of write operations enabled on this server; notion_describe(operation) returns any operation's full schema."
},
"payload": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {},
"description": "Operation parameters. Pass either single-op fields directly, or { items: [...], atomic?, idempotency_key?, concurrency? } for batch."
}
},
"required": [
"operation",
"payload"
]
}Annotations{
"title": "Notion Write",
"readOnlyHint": false,
"destructiveHint": true,
"openWorldHint": true
} | — | Writes · Destructive | — |
Markdown table of every supported operation, batchability, and one-line description.
{
"resource_key": "notion://operations",
"uri": "notion://operations",
"name": "operations-index",
"description": "Markdown table of every supported operation, batchability, and one-line description.",
"mime_type": "text/markdown",
"annotations": null,
"metadata_hash": "72a8b9b9eb91eb6ac3f739081030583f83a876a864d1be6e360f45962c92dd5e"
}Read a Notion data source's schema by id — notion://database/<data_source_id>.
{
"template_key": "notion://database/{dataSourceId}",
"uri_template": "notion://database/{dataSourceId}",
"name": "notion-database",
"description": "Read a Notion data source's schema by id — notion://database/<data_source_id>.",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "58d90f4a31e11672be80a64fbe491b415166c99885219412b414e0914fa99582"
}Read any Notion page as markdown by id — notion://page/<page_id>.
{
"template_key": "notion://page/{pageId}",
"uri_template": "notion://page/{pageId}",
"name": "notion-page",
"description": "Read any Notion page as markdown by id — notion://page/<page_id>.",
"mime_type": "text/markdown",
"annotations": null,
"metadata_hash": "80060231cfbff9792678410cfcbcb3b210fba5c6466835ff896932e9d3b81657"
}Create a new task page in Notion with optional status and due date.
{
"prompt_key": "create_task",
"name": "create_task",
"description": "Create a new task page in Notion with optional status and due date.",
"arguments": [
{
"name": "title",
"description": "Task title.",
"required": true
},
{
"name": "status",
"description": "Status select value, e.g. Todo / In Progress / Done.",
"required": false
},
{
"name": "due",
"description": "Due date as ISO 8601 (YYYY-MM-DD).",
"required": false
}
],
"metadata_hash": "3cf34f1545343ee22c1ba43f33e9abeac1fd6ab43d676c0317e4d4d0eceeeaa2"
}Append a timestamped paragraph to a daily-log page in Notion.
{
"prompt_key": "daily_log",
"name": "daily_log",
"description": "Append a timestamped paragraph to a daily-log page in Notion.",
"arguments": [
{
"name": "date",
"description": "Date for the entry as ISO 8601 (defaults to today).",
"required": false
},
{
"name": "content",
"description": "Text to append; prompt the user if omitted.",
"required": false
}
],
"metadata_hash": "62f1226d4c281877ed6f9fc477e90499265b829040b7d844197bca6503efe243"
}Search Notion and show the top 5 matching pages.
{
"prompt_key": "find_pages",
"name": "find_pages",
"description": "Search Notion and show the top 5 matching pages.",
"arguments": [
{
"name": "query",
"description": "Text to search for across page titles.",
"required": true
}
],
"metadata_hash": "a3cfda5dba8414662fdf321911e0bbe0c60590f4ffb119694eb3bd050e9a9f46"
}Summarize tasks marked Done in the last 7 days from a Notion database.
{
"prompt_key": "weekly_review",
"name": "weekly_review",
"description": "Summarize tasks marked Done in the last 7 days from a Notion database.",
"arguments": [],
"metadata_hash": "0e6f245e818f96a8741dcdb645ff9771371a85ba08ca439ffcc9d35e2625b6ac"
}