Skip to main content
Glama

notion-mcp__notion_create_page

Destructive

Creates one Notion page: under a page, or as a row of a data source. Takes the parent, a title, property values as plain values (for a row), content as markdown, and an optional template. For a row, the data source schema is read once and each value is encoded against it. Returns the new page's id, url, title, parent and properties. A failed create is not sent again; a create that got no answer may still have happened, and notion_search by title shows whether it did. Content and a template are not taken together.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "notion-mcp__notion_create_page"
  }
}

Input Schema

NameRequiredDescriptionDefault
titleNoThe page's title as plain text. Over 2,000 characters is split into several text pieces; the limit is 200,000.
accountNoOptional email address of the connected account to use (e.g. 'user@gmail.com'). If omitted, the default account is used.
contentNoThe page content as Notion's enhanced markdown, with headings, lists, tables, code and to-dos. Absent creates an empty page.
templateNo"default" for the data source's default template, or a template page's id or URL. Notion fills in the template's content and properties in the background after the call returns.
propertiesNoProperty values as plain values keyed by property name, the shape notion_get_page returns: {"Status": "Done", "Tags": ["Docs"], "Due": "2026-10-30", "Estimate": 3, "Owner": ["<user id>"], "Done": true}. Values are checked against the data source schema before the write: an unknown name, a wrong value type or a select or status option that does not exist is refused in words, with the names the schema has. People and relations take ids; files take links; null clears a value. Formula, rollup, created and edited times, and unique ids are set by Notion and refused.
allow_asyncNoWith content, true lets Notion accept a large page and build it in the background; the result is then a task id, not the page.
parent_page_idNoThe parent page's Notion id or URL. Exactly one of parent_page_id and parent_data_source_id is set.
parent_data_source_idNoThe parent data source's Notion id (notion_get_database lists a database's data sources). The page becomes a row of it. Exactly one of parent_page_id and parent_data_source_id is set.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false and destructiveHint=true; the description adds the genuinely useful behavioral layer: the data source schema is read once and values encoded against it, templates are filled in the background after return, allow_async yields a task id rather than a page, and a failed create is not retried while an unanswered one may still have happened. The last point is important safety context an agent cannot get from annotations. It does not explicitly reconcile the destructiveHint=true annotation with a pure create operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and modes, then parameters, then return shape, then failure semantics. Dense but nearly every clause carries information. The final sentence on content/template exclusion is a constraint tucked at the end where it would read better beside the parameter discussion.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by stating exactly what is returned: id, url, title, parent and properties. Combined with retry semantics, async behavior and the two parent modes, an agent has everything needed to call this correctly for an 8-parameter, nested-object tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: 'plain values' are checked against the data source schema and refused with the available names, people/relations take ids, files take links, null clears a value, and computed properties are refused. It also restates the cross-parameter exclusion of content and template and the exactly-one-parent rule. Slightly redundant with schema text, hence 4 rather than 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource, "Creates one Notion page", and immediately names the two distinct creation modes: under a page, or as a row of a data source. An agent can tell this apart from notion_update_page, notion_duplicate_page and notion_create_database without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operative conditions: choose parent_page_id vs parent_data_source_id for page-vs-row, and 'Content and a template are not taken together'. It also routes the agent to notion_search by title when a create's outcome is ambiguous. It stops short of naming sibling tools like notion_update_page or notion_duplicate_page as alternatives for other intents.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.