notion_update_page_properties
Modify properties or fields of pages and database items in Notion workspaces to keep information current and organized.
Instructions
Update properties of a page or an item in a Notion database
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | The ID of the page or database item to update.It should be a 32-character string (excluding hyphens) formatted as 8-4-4-4-12 with hyphens (-). | |
| properties | Yes | Properties to update. These correspond to the columns or fields in the database. | |
| format | No | Specify the response format. 'json' returns the original data structure, 'markdown' returns a more readable format. Use 'markdown' when the user only needs to read the page and isn't planning to write or modify it. Use 'json' when the user needs to read the page with the intention of writing to or modifying it. | markdown |
Implementation Reference
- src/client/index.ts:111-124 (handler)Core handler function in NotionClientWrapper that executes the Notion API PATCH request to update page properties.async updatePageProperties( page_id: string, properties: Record<string, any> ): Promise<PageResponse> { const body = { properties }; const response = await fetch(`${this.baseUrl}/pages/${page_id}`, { method: "PATCH", headers: this.headers, body: JSON.stringify(body), }); return response.json(); }
- src/types/schemas.ts:138-159 (schema)JSON Schema definition for the tool, including input parameters validation for page_id and properties.export const updatePagePropertiesTool: Tool = { name: "notion_update_page_properties", description: "Update properties of a page or an item in a Notion database", inputSchema: { type: "object", properties: { page_id: { type: "string", description: "The ID of the page or database item to update." + commonIdDescription, }, properties: { type: "object", description: "Properties to update. These correspond to the columns or fields in the database.", }, format: formatParameter, }, required: ["page_id", "properties"], }, };
- src/server/index.ts:123-136 (registration)Registration and dispatch logic in the MCP server's CallToolRequest handler, which validates input and invokes the client handler.case "notion_update_page_properties": { const args = request.params .arguments as unknown as args.UpdatePagePropertiesArgs; if (!args.page_id || !args.properties) { throw new Error( "Missing required arguments: page_id and properties" ); } response = await notionClient.updatePageProperties( args.page_id, args.properties ); break; }
- src/types/args.ts:44-48 (schema)TypeScript interface defining the arguments for the tool, used for type casting in the server handler.export interface UpdatePagePropertiesArgs { page_id: string; properties: Record<string, any>; format?: "json" | "markdown"; }
- src/server/index.ts:304-321 (registration)Tool registration in the ListToolsRequest handler, where the schema is included in the list of available tools.schemas.appendBlockChildrenTool, schemas.retrieveBlockTool, schemas.retrieveBlockChildrenTool, schemas.deleteBlockTool, schemas.updateBlockTool, schemas.retrievePageTool, schemas.updatePagePropertiesTool, schemas.listAllUsersTool, schemas.retrieveUserTool, schemas.retrieveBotUserTool, schemas.createDatabaseTool, schemas.queryDatabaseTool, schemas.retrieveDatabaseTool, schemas.updateDatabaseTool, schemas.createDatabaseItemTool, schemas.createCommentTool, schemas.retrieveCommentsTool, schemas.searchTool,