notion-create-database
Creates a new Notion database with the specified properties schema.
If no title property provided, "Name" is auto-added. Returns Markdown with schema, SQLite definition, and data source ID in <data-source> tag for use with update_data_source and query_data_sources tools.
Property types: title (required), rich_text, number, select, multi_select, date, people, checkbox, url, email, phone_number, formula, relation, rollup.
<example description="Minimal">{"properties": {}}</example>
<example description="Task DB">{"parent": {"page_id": "f336d0bc-b841-465b-8045-024475c079dd"}, "title": [{"text": {"content": "Tasks"}}], "properties": {"Status": {"type": "select", "select": {"options": [{"name": "To Do", "color": "red"}, {"name": "Done", "color": "green"}]}}, "Due Date": {"type": "date", "date": {}}}}</example>
notion-update-data-source
Update a Notion data source's properties, name, or other attributes. Returns Markdown showing updated structure and schema.
Accepts a data source ID (collection ID from fetch response's <data-source> tag) or a single-source database ID. Multi-source databases require the specific data source ID.
Property types: title (required), rich_text, number, select, multi_select, date, people, checkbox, url, email, phone_number, formula, relation, rollup, unique_id.
Examples:
(1) Update data source title: { "data_source_id": "f336d0bc-b841-465b-8045-024475c079dd", "title": [{"type": "text", "text": {"content": "Project Tracker 2024"}}] }
(2) Add new properties: { "data_source_id": "f336d0bc-b841-465b-8045-024475c079dd", "properties": { "Priority": { "select": { "options": [ {"name": "High", "color": "red"}, {"name": "Medium", "color": "yellow"}, {"name": "Low", "color": "green"} ] } }, "Due Date": {"date": {}}, "Assigned To": {"people": {}} } }
(3) Rename property (use property ID or current name): { "data_source_id": "f336d0bc-b841-465b-8045-024475c079dd", "properties": {"Status": {"name": "Project Status"}} }
(4) Remove property (set to null): { "data_source_id": "f336d0bc-b841-465b-8045-024475c079dd", "properties": {"Old Property": null} }
(5) Trash data source (confirm with user, requires Notion UI to undo): {"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd", "in_trash": true}
Notes: Cannot delete/create title properties. Max one unique_id property. Cannot update synced databases. Use "fetch" first to see current schema and get the data source ID from <data-source url="collection://..."> tags.
notion-create-comment
Add a comment to a page or specific content.
Creates a new comment. Provide `page_id` to identify the page, then choose ONE targeting mode:
- `page_id` alone: Page-level comment on the entire page
- `page_id` + `selection_with_ellipsis`: Comment on specific block content
- `discussion_id`: Reply to an existing discussion thread (page_id is still required)
For content targeting, use `selection_with_ellipsis` with ~10 chars from start and end: "# Section Ti...tle content"
<example description="Page-level comment">
{"page_id": "uuid", "rich_text": [{"text": {"content": "Comment"}}]}
</example>
<example description="Comment on specific content">
{"page_id": "uuid", "selection_with_ellipsis": "# Meeting No...es heading",
"rich_text": [{"text": {"content": "Comment on this section"}}]}
</example>
<example description="Reply to discussion">
{"page_id": "uuid", "discussion_id": "discussion://pageId/blockId/discussionId",
"rich_text": [{"text": {"content": "Reply"}}]}
</example>
notion-get-comments
Get comments and discussions from a Notion page.
Returns discussions with full comment content in XML format. By default, returns page-level discussions only.
Tip: Use the `fetch` tool with `include_discussions: true` first to see where discussions are anchored in the page content, then use this tool to retrieve full discussion threads. The `discussion://` URLs in the fetch output match the discussion IDs returned here.
Parameters:
- `include_all_blocks`: Include discussions on child blocks (default: false)
- `include_resolved`: Include resolved discussions (default: false)
- `discussion_id`: Fetch a specific discussion by ID or URL
<example>{"page_id": "page-uuid"}</example>
<example>{"page_id": "page-uuid", "include_all_blocks": true}</example>
<example>{"page_id": "page-uuid", "discussion_id": "discussion://pageId/blockId/discussionId"}</example>
notion-get-teams
Retrieves a list of teams (teamspaces) in the current workspace. Shows which teams exist, user membership status, IDs, names, and roles.
Teams are returned split by membership status and limited to a maximum of 10 results.
<examples>
1. List all teams (up to the limit of each type): {}
2. Search for teams by name: {"query": "engineering"}
3. Find a specific team: {"query": "Product Design"}
</examples>
notion-get-users
Retrieves a list of users in the current workspace. Shows workspace members and guests with their IDs, names, emails (if available), and types (person or bot).
Supports cursor-based pagination to iterate through all users in the workspace.
<examples>
1. List all users (first page): {}
2. Search for users by name or email: {"query": "john"}
3. Get next page of results: {"start_cursor": "abc123"}
4. Set custom page size: {"page_size": 20}
5. Fetch a specific user by ID: {"user_id": "00000000-0000-4000-8000-000000000000"}
6. Fetch the current user: {"user_id": "self"}
</examples>