Automate Notion tasks via Rube MCP (Composio): pages, databases, blocks, comments, users. Always search tools first for current schemas.
Add this skill
npx mdskills install sickn33/notion-automationComprehensive Notion automation workflows with clear sequences, pagination patterns, and pitfall warnings
1---2name: notion-automation3description: "Automate Notion tasks via Rube MCP (Composio): pages, databases, blocks, comments, users. Always search tools first for current schemas."4requires:5 mcp: [rube]6---78# Notion Automation via Rube MCP910Automate Notion operations through Composio's Notion toolkit via Rube MCP.1112## Prerequisites1314- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)15- Active Notion connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `notion`16- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas1718## Setup1920**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.2122231. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds242. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `notion`253. If connection is not ACTIVE, follow the returned auth link to complete Notion OAuth264. Confirm connection status shows ACTIVE before running any workflows2728## Core Workflows2930### 1. Create and Manage Pages3132**When to use**: User wants to create, update, or archive Notion pages3334**Tool sequence**:351. `NOTION_SEARCH_NOTION_PAGE` - Find parent page or existing page [Prerequisite]362. `NOTION_CREATE_NOTION_PAGE` - Create a new page under a parent [Optional]373. `NOTION_RETRIEVE_PAGE` - Get page metadata/properties [Optional]384. `NOTION_UPDATE_PAGE` - Update page properties, title, icon, cover [Optional]395. `NOTION_ARCHIVE_NOTION_PAGE` - Soft-delete (archive) a page [Optional]4041**Key parameters**:42- `query`: Search text for SEARCH_NOTION_PAGE43- `parent_id`: Parent page or database ID44- `page_id`: Page ID for retrieval/update/archive45- `properties`: Page property values matching parent schema4647**Pitfalls**:48- RETRIEVE_PAGE returns only metadata/properties, NOT body content; use FETCH_BLOCK_CONTENTS for page body49- ARCHIVE_NOTION_PAGE is a soft-delete (sets archived=true), not permanent deletion50- Broad searches can look incomplete unless has_more/next_cursor is fully paginated5152### 2. Query and Manage Databases5354**When to use**: User wants to query database rows, insert entries, or update records5556**Tool sequence**:571. `NOTION_SEARCH_NOTION_PAGE` - Find the database by name [Prerequisite]582. `NOTION_FETCH_DATABASE` - Inspect schema and properties [Prerequisite]593. `NOTION_QUERY_DATABASE` / `NOTION_QUERY_DATABASE_WITH_FILTER` - Query rows [Required]604. `NOTION_INSERT_ROW_DATABASE` - Add new entries [Optional]615. `NOTION_UPDATE_ROW_DATABASE` - Update existing entries [Optional]6263**Key parameters**:64- `database_id`: Database ID (from search or URL)65- `filter`: Filter object matching Notion filter syntax66- `sorts`: Array of sort objects67- `start_cursor`: Pagination cursor from previous response68- `properties`: Property values matching database schema for inserts/updates6970**Pitfalls**:71- 404 object_not_found usually means wrong database_id or the database is not shared with the integration72- Results are paginated; ignoring has_more/next_cursor silently truncates reads73- Schema mismatches or missing required properties cause 400 validation_error74- Formula and read-only fields cannot be set via INSERT_ROW_DATABASE75- Property names in filters must match schema exactly (case-sensitive)7677### 3. Manage Blocks and Page Content7879**When to use**: User wants to read, append, or modify content blocks in a page8081**Tool sequence**:821. `NOTION_FETCH_BLOCK_CONTENTS` - Read child blocks of a page [Required]832. `NOTION_ADD_MULTIPLE_PAGE_CONTENT` - Append blocks to a page [Optional]843. `NOTION_APPEND_TEXT_BLOCKS` - Append text-only blocks [Optional]854. `NOTION_REPLACE_PAGE_CONTENT` - Replace all page content [Optional]865. `NOTION_DELETE_BLOCK` - Remove a specific block [Optional]8788**Key parameters**:89- `block_id` / `page_id`: Target page or block ID90- `content_blocks`: Array of block objects (NOT child_blocks)91- `text`: Plain text content for APPEND_TEXT_BLOCKS9293**Pitfalls**:94- Use `content_blocks` parameter, NOT `child_blocks` -- the latter fails validation95- ADD_MULTIPLE_PAGE_CONTENT fails on archived pages; unarchive via UPDATE_PAGE first96- Created blocks are in response.data.results; persist block IDs for later edits97- DELETE_BLOCK is archival (archived=true), not permanent deletion9899### 4. Manage Database Schema100101**When to use**: User wants to create databases or modify their structure102103**Tool sequence**:1041. `NOTION_FETCH_DATABASE` - Inspect current schema [Prerequisite]1052. `NOTION_CREATE_DATABASE` - Create a new database [Optional]1063. `NOTION_UPDATE_SCHEMA_DATABASE` - Modify database properties [Optional]107108**Key parameters**:109- `parent_id`: Parent page ID for new databases110- `title`: Database title111- `properties`: Property definitions with types and options112- `database_id`: Database ID for schema updates113114**Pitfalls**:115- Cannot change property types via UPDATE_SCHEMA; must create new property and migrate data116- Formula, rollup, and relation properties have complex configuration requirements117118### 5. Manage Users and Comments119120**When to use**: User wants to list workspace users or manage comments on pages121122**Tool sequence**:1231. `NOTION_LIST_USERS` - List all workspace users [Optional]1242. `NOTION_GET_ABOUT_ME` - Get current authenticated user [Optional]1253. `NOTION_CREATE_COMMENT` - Add a comment to a page [Optional]1264. `NOTION_FETCH_COMMENTS` - List comments on a page [Optional]127128**Key parameters**:129- `page_id`: Page ID for comments (also called `discussion_id`)130- `rich_text`: Comment content as rich text array131132**Pitfalls**:133- Comments are linked to pages, not individual blocks134- User IDs from LIST_USERS are needed for people-type property filters135136## Common Patterns137138### ID Resolution139140**Page/Database name -> ID**:141```1421. Call NOTION_SEARCH_NOTION_PAGE with query=name1432. Paginate with has_more/next_cursor until found1443. Extract id from matching result145```146147**Database schema inspection**:148```1491. Call NOTION_FETCH_DATABASE with database_id1502. Extract properties object for field names and types1513. Use exact property names in queries and inserts152```153154### Pagination155156- Set `page_size` for results per page (max 100)157- Check response for `has_more` boolean158- Pass `start_cursor` or `next_cursor` in next request159- Continue until `has_more` is false160161### Notion Filter Syntax162163**Single filter**:164```json165{"property": "Status", "select": {"equals": "Done"}}166```167168**Compound filter**:169```json170{"and": [171 {"property": "Status", "select": {"equals": "In Progress"}},172 {"property": "Assignee", "people": {"contains": "user-id"}}173]}174```175176## Known Pitfalls177178**Integration Sharing**:179- Pages and databases must be shared with the Notion integration to be accessible180- Title queries can return 0 when the item is not shared with the integration181182**Property Types**:183- Property names are case-sensitive and must match schema exactly184- Formula, rollup, and created_time fields are read-only185- Select/multi-select values must match existing options unless creating new ones186187**Response Parsing**:188- Response data may be nested under `data_preview` or `data.results`189- Parse defensively with fallbacks for different nesting levels190191## Quick Reference192193| Task | Tool Slug | Key Params |194|------|-----------|------------|195| Search pages/databases | NOTION_SEARCH_NOTION_PAGE | query |196| Create page | NOTION_CREATE_NOTION_PAGE | parent_id, properties |197| Get page metadata | NOTION_RETRIEVE_PAGE | page_id |198| Update page | NOTION_UPDATE_PAGE | page_id, properties |199| Archive page | NOTION_ARCHIVE_NOTION_PAGE | page_id |200| Duplicate page | NOTION_DUPLICATE_PAGE | page_id |201| Get page blocks | NOTION_FETCH_BLOCK_CONTENTS | block_id |202| Append blocks | NOTION_ADD_MULTIPLE_PAGE_CONTENT | page_id, content_blocks |203| Append text | NOTION_APPEND_TEXT_BLOCKS | page_id, text |204| Replace content | NOTION_REPLACE_PAGE_CONTENT | page_id, content_blocks |205| Delete block | NOTION_DELETE_BLOCK | block_id |206| Query database | NOTION_QUERY_DATABASE | database_id, filter, sorts |207| Query with filter | NOTION_QUERY_DATABASE_WITH_FILTER | database_id, filter |208| Insert row | NOTION_INSERT_ROW_DATABASE | database_id, properties |209| Update row | NOTION_UPDATE_ROW_DATABASE | page_id, properties |210| Get database schema | NOTION_FETCH_DATABASE | database_id |211| Create database | NOTION_CREATE_DATABASE | parent_id, title, properties |212| Update schema | NOTION_UPDATE_SCHEMA_DATABASE | database_id, properties |213| List users | NOTION_LIST_USERS | (none) |214| Create comment | NOTION_CREATE_COMMENT | page_id, rich_text |215| List comments | NOTION_FETCH_COMMENTS | page_id |216
Full transparency — inspect the skill content before installing.