notion_update_database
Modify Notion database properties, titles, and descriptions to keep information current and organized.
Instructions
Update a database in Notion
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| database_id | Yes | The ID of the database to update.It should be a 32-character string (excluding hyphens) formatted as 8-4-4-4-12 with hyphens (-). | |
| title | No | An array of rich text objects that represents the title of the database that is displayed in the Notion UI. | |
| description | No | An array of rich text objects that represents the description of the database that is displayed in the Notion UI. | |
| properties | No | The properties of a database to be changed in the request, in the form of a JSON object. | |
| 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/server/index.ts:197-207 (handler)MCP tool handler: switch case that extracts arguments and invokes the NotionClientWrapper.updateDatabase method to perform the update.case "notion_update_database": { const args = request.params .arguments as unknown as args.UpdateDatabaseArgs; response = await notionClient.updateDatabase( args.database_id, args.title, args.description, args.properties ); break; }
- src/types/schemas.ts:305-336 (schema)Input schema and Tool definition for the notion_update_database tool.export const updateDatabaseTool: Tool = { name: "notion_update_database", description: "Update a database in Notion", inputSchema: { type: "object", properties: { database_id: { type: "string", description: "The ID of the database to update." + commonIdDescription, }, title: { type: "array", description: "An array of rich text objects that represents the title of the database that is displayed in the Notion UI.", items: richTextObjectSchema, }, description: { type: "array", description: "An array of rich text objects that represents the description of the database that is displayed in the Notion UI.", items: richTextObjectSchema, }, properties: { type: "object", description: "The properties of a database to be changed in the request, in the form of a JSON object.", }, format: formatParameter, }, required: ["database_id"], }, };
- src/client/index.ts:211-229 (helper)Core implementation in NotionClientWrapper: constructs PATCH request body and calls Notion API to update database title, description, or properties.async updateDatabase( database_id: string, title?: RichTextItemResponse[], description?: RichTextItemResponse[], properties?: Record<string, any> ): Promise<DatabaseResponse> { const body: Record<string, any> = {}; if (title) body.title = title; if (description) body.description = description; if (properties) body.properties = properties; const response = await fetch(`${this.baseUrl}/databases/${database_id}`, { method: "PATCH", headers: this.headers, body: JSON.stringify(body), }); return response.json(); }
- src/server/index.ts:301-326 (registration)Tool registration: includes updateDatabaseTool in the list of available tools served in ListToolsRequest response.server.setRequestHandler(ListToolsRequestSchema, async () => { const allTools = [ 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, ]; return { tools: filterTools(allTools, enabledToolsSet), }; });
- src/types/args.ts:98-104 (schema)TypeScript interface defining the input arguments for the updateDatabase tool.export interface UpdateDatabaseArgs { database_id: string; title?: RichTextItemResponse[]; description?: RichTextItemResponse[]; properties?: Record<string, any>; format?: "json" | "markdown"; }