Automate Basecamp project management, to-dos, messages, people, and to-do list organization via Rube MCP (Composio). Always search tools first for current schemas.
Add this skill
npx mdskills install sickn33/basecamp-automationComprehensive Basecamp automation with detailed tool sequences, parameter specs, and pitfall guidance
1---2name: basecamp-automation3description: "Automate Basecamp project management, to-dos, messages, people, and to-do list organization via Rube MCP (Composio). Always search tools first for current schemas."4requires:5 mcp: [rube]6---78# Basecamp Automation via Rube MCP910Automate Basecamp operations including project management, to-do list creation, task management, message board posting, people management, and to-do group organization through Composio's Basecamp toolkit.1112## Prerequisites1314- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)15- Active Basecamp connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `basecamp`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 `basecamp`253. If connection is not ACTIVE, follow the returned auth link to complete Basecamp OAuth264. Confirm connection status shows ACTIVE before running any workflows2728## Core Workflows2930### 1. Manage To-Do Lists and Tasks3132**When to use**: User wants to create to-do lists, add tasks, or organize work within a Basecamp project3334**Tool sequence**:351. `BASECAMP_GET_PROJECTS` - List projects to find the target bucket_id [Prerequisite]362. `BASECAMP_GET_BUCKETS_TODOSETS` - Get the to-do set within a project [Prerequisite]373. `BASECAMP_GET_BUCKETS_TODOSETS_TODOLISTS` - List existing to-do lists to avoid duplicates [Optional]384. `BASECAMP_POST_BUCKETS_TODOSETS_TODOLISTS` - Create a new to-do list in a to-do set [Required for list creation]395. `BASECAMP_GET_BUCKETS_TODOLISTS` - Get details of a specific to-do list [Optional]406. `BASECAMP_POST_BUCKETS_TODOLISTS_TODOS` - Create a to-do item in a to-do list [Required for task creation]417. `BASECAMP_CREATE_TODO` - Alternative tool for creating individual to-dos [Alternative]428. `BASECAMP_GET_BUCKETS_TODOLISTS_TODOS` - List to-dos within a to-do list [Optional]4344**Key parameters for creating to-do lists**:45- `bucket_id`: Integer project/bucket ID (from GET_PROJECTS)46- `todoset_id`: Integer to-do set ID (from GET_BUCKETS_TODOSETS)47- `name`: Title of the to-do list (required)48- `description`: HTML-formatted description (supports Rich text)4950**Key parameters for creating to-dos**:51- `bucket_id`: Integer project/bucket ID52- `todolist_id`: Integer to-do list ID53- `content`: What the to-do is for (required)54- `description`: HTML details about the to-do55- `assignee_ids`: Array of integer person IDs56- `due_on`: Due date in `YYYY-MM-DD` format57- `starts_on`: Start date in `YYYY-MM-DD` format58- `notify`: Boolean to notify assignees (defaults to false)59- `completion_subscriber_ids`: Person IDs notified upon completion6061**Pitfalls**:62- A project (bucket) can contain multiple to-do sets; selecting the wrong `todoset_id` creates lists in the wrong section63- Always check existing to-do lists before creating to avoid near-duplicate names64- Success payloads include user-facing URLs (`app_url`, `app_todos_url`); prefer returning these over raw IDs65- All IDs (`bucket_id`, `todoset_id`, `todolist_id`) are integers, not strings66- Descriptions support HTML formatting only, not Markdown6768### 2. Post and Manage Messages6970**When to use**: User wants to post messages to a project message board or update existing messages7172**Tool sequence**:731. `BASECAMP_GET_PROJECTS` - Find the target project and bucket_id [Prerequisite]742. `BASECAMP_GET_MESSAGE_BOARD` - Get the message board ID for the project [Prerequisite]753. `BASECAMP_CREATE_MESSAGE` - Create a new message on the board [Required]764. `BASECAMP_POST_BUCKETS_MESSAGE_BOARDS_MESSAGES` - Alternative message creation tool [Fallback]775. `BASECAMP_GET_MESSAGE` - Read a specific message by ID [Optional]786. `BASECAMP_PUT_BUCKETS_MESSAGES` - Update an existing message [Optional]7980**Key parameters**:81- `bucket_id`: Integer project/bucket ID82- `message_board_id`: Integer message board ID (from GET_MESSAGE_BOARD)83- `subject`: Message title (required)84- `content`: HTML body of the message85- `status`: Set to `"active"` to publish immediately86- `category_id`: Message type classification (optional)87- `subscriptions`: Array of person IDs to notify; omit to notify all project members8889**Pitfalls**:90- `status="draft"` can produce HTTP 400; use `status="active"` as the reliable option91- `bucket_id` and `message_board_id` must belong to the same project; mismatches fail or misroute92- Message content supports HTML tags only; not Markdown93- Updates via `PUT_BUCKETS_MESSAGES` replace the entire body -- include the full corrected content, not just a diff94- Prefer `app_url` from the response for user-facing confirmation links95- Both `CREATE_MESSAGE` and `POST_BUCKETS_MESSAGE_BOARDS_MESSAGES` do the same thing; use CREATE_MESSAGE first and fall back to POST if it fails9697### 3. Manage People and Access9899**When to use**: User wants to list people, manage project access, or add new users100101**Tool sequence**:1021. `BASECAMP_GET_PEOPLE` - List all people visible to the current user [Required]1032. `BASECAMP_GET_PROJECTS` - Find the target project [Prerequisite]1043. `BASECAMP_LIST_PROJECT_PEOPLE` - List people on a specific project [Required]1054. `BASECAMP_GET_PROJECTS_PEOPLE` - Alternative to list project members [Alternative]1065. `BASECAMP_PUT_PROJECTS_PEOPLE_USERS` - Grant or revoke project access [Required for access changes]107108**Key parameters for PUT_PROJECTS_PEOPLE_USERS**:109- `project_id`: Integer project ID110- `grant`: Array of integer person IDs to add to the project111- `revoke`: Array of integer person IDs to remove from the project112- `create`: Array of objects with `name`, `email_address`, and optional `company_name`, `title` for new users113- At least one of `grant`, `revoke`, or `create` must be provided114115**Pitfalls**:116- Person IDs are integers; always resolve names to IDs via GET_PEOPLE first117- `project_id` for people management is the same as `bucket_id` for other operations118- `LIST_PROJECT_PEOPLE` and `GET_PROJECTS_PEOPLE` are near-identical; use either119- Creating users via `create` also grants them project access in one step120121### 4. Organize To-Dos with Groups122123**When to use**: User wants to organize to-dos within a list into color-coded groups124125**Tool sequence**:1261. `BASECAMP_GET_PROJECTS` - Find the target project [Prerequisite]1272. `BASECAMP_GET_BUCKETS_TODOLISTS` - Get the to-do list details [Prerequisite]1283. `BASECAMP_GET_TODOLIST_GROUPS` - List existing groups in a to-do list [Optional]1294. `BASECAMP_GET_BUCKETS_TODOLISTS_GROUPS` - Alternative group listing [Alternative]1305. `BASECAMP_POST_BUCKETS_TODOLISTS_GROUPS` - Create a new group in a to-do list [Required]1316. `BASECAMP_CREATE_TODOLIST_GROUP` - Alternative group creation tool [Alternative]132133**Key parameters**:134- `bucket_id`: Integer project/bucket ID135- `todolist_id`: Integer to-do list ID136- `name`: Group title (required)137- `color`: Visual color identifier -- one of: `white`, `red`, `orange`, `yellow`, `green`, `blue`, `aqua`, `purple`, `gray`, `pink`, `brown`138- `status`: Filter for listing -- `"archived"` or `"trashed"` (omit for active groups)139140**Pitfalls**:141- `POST_BUCKETS_TODOLISTS_GROUPS` and `CREATE_TODOLIST_GROUP` are near-identical; use either142- Color values must be from the fixed palette; arbitrary hex/rgb values are not supported143- Groups are sub-sections within a to-do list, not standalone entities144145### 5. Browse and Inspect Projects146147**When to use**: User wants to list projects, get project details, or explore project structure148149**Tool sequence**:1501. `BASECAMP_GET_PROJECTS` - List all active projects [Required]1512. `BASECAMP_GET_PROJECT` - Get comprehensive details for a specific project [Optional]1523. `BASECAMP_GET_PROJECTS_BY_PROJECT_ID` - Alternative project detail retrieval [Alternative]153154**Key parameters**:155- `status`: Filter by `"archived"` or `"trashed"`; omit for active projects156- `project_id`: Integer project ID for detailed retrieval157158**Pitfalls**:159- Projects are sorted by most recently created first160- The response includes a `dock` array with tools (todoset, message_board, etc.) and their IDs161- Use the dock tool IDs to find `todoset_id`, `message_board_id`, etc. for downstream operations162163## Common Patterns164165### ID Resolution166Basecamp uses a hierarchical ID structure. Always resolve top-down:167- **Project (bucket_id)**: `BASECAMP_GET_PROJECTS` -- find by name, capture the `id`168- **To-do set (todoset_id)**: Found in project dock or via `BASECAMP_GET_BUCKETS_TODOSETS`169- **Message board (message_board_id)**: Found in project dock or via `BASECAMP_GET_MESSAGE_BOARD`170- **To-do list (todolist_id)**: `BASECAMP_GET_BUCKETS_TODOSETS_TODOLISTS`171- **People (person_id)**: `BASECAMP_GET_PEOPLE` or `BASECAMP_LIST_PROJECT_PEOPLE`172- Note: `bucket_id` and `project_id` refer to the same entity in different contexts173174### Pagination175Basecamp uses page-based pagination on list endpoints:176- Response headers or body may indicate more pages available177- `GET_PROJECTS`, `GET_BUCKETS_TODOSETS_TODOLISTS`, and list endpoints return paginated results178- Continue fetching until no more results are returned179180### Content Formatting181- All rich text fields use HTML, not Markdown182- Wrap content in `<div>` tags; use `<strong>`, `<em>`, `<ul>`, `<ol>`, `<li>`, `<a>` etc.183- Example: `<div><strong>Important:</strong> Complete by Friday</div>`184185## Known Pitfalls186187### ID Formats188- All Basecamp IDs are integers, not strings or UUIDs189- `bucket_id` = `project_id` (same entity, different parameter names across tools)190- To-do set IDs, to-do list IDs, and message board IDs are found in the project's `dock` array191- Person IDs are integers; resolve names via `GET_PEOPLE` before operations192193### Status Field194- `status="draft"` for messages can cause HTTP 400; always use `status="active"`195- Project/to-do list status filters: `"archived"`, `"trashed"`, or omit for active196197### Content Format198- HTML only, never Markdown199- Updates replace the entire body, not a partial diff200- Invalid HTML tags may be silently stripped201202### Rate Limits203- Basecamp API has rate limits; space out rapid sequential requests204- Large projects with many to-dos should be paginated carefully205206### URL Handling207- Prefer `app_url` from API responses for user-facing links208- Do not reconstruct Basecamp URLs manually from IDs209210## Quick Reference211212| Task | Tool Slug | Key Params |213|------|-----------|------------|214| List projects | `BASECAMP_GET_PROJECTS` | `status` |215| Get project | `BASECAMP_GET_PROJECT` | `project_id` |216| Get project detail | `BASECAMP_GET_PROJECTS_BY_PROJECT_ID` | `project_id` |217| Get to-do set | `BASECAMP_GET_BUCKETS_TODOSETS` | `bucket_id`, `todoset_id` |218| List to-do lists | `BASECAMP_GET_BUCKETS_TODOSETS_TODOLISTS` | `bucket_id`, `todoset_id` |219| Get to-do list | `BASECAMP_GET_BUCKETS_TODOLISTS` | `bucket_id`, `todolist_id` |220| Create to-do list | `BASECAMP_POST_BUCKETS_TODOSETS_TODOLISTS` | `bucket_id`, `todoset_id`, `name` |221| Create to-do | `BASECAMP_POST_BUCKETS_TODOLISTS_TODOS` | `bucket_id`, `todolist_id`, `content` |222| Create to-do (alt) | `BASECAMP_CREATE_TODO` | `bucket_id`, `todolist_id`, `content` |223| List to-dos | `BASECAMP_GET_BUCKETS_TODOLISTS_TODOS` | `bucket_id`, `todolist_id` |224| List to-do groups | `BASECAMP_GET_TODOLIST_GROUPS` | `bucket_id`, `todolist_id` |225| Create to-do group | `BASECAMP_POST_BUCKETS_TODOLISTS_GROUPS` | `bucket_id`, `todolist_id`, `name`, `color` |226| Create to-do group (alt) | `BASECAMP_CREATE_TODOLIST_GROUP` | `bucket_id`, `todolist_id`, `name` |227| Get message board | `BASECAMP_GET_MESSAGE_BOARD` | `bucket_id`, `message_board_id` |228| Create message | `BASECAMP_CREATE_MESSAGE` | `bucket_id`, `message_board_id`, `subject`, `status` |229| Create message (alt) | `BASECAMP_POST_BUCKETS_MESSAGE_BOARDS_MESSAGES` | `bucket_id`, `message_board_id`, `subject` |230| Get message | `BASECAMP_GET_MESSAGE` | `bucket_id`, `message_id` |231| Update message | `BASECAMP_PUT_BUCKETS_MESSAGES` | `bucket_id`, `message_id` |232| List all people | `BASECAMP_GET_PEOPLE` | (none) |233| List project people | `BASECAMP_LIST_PROJECT_PEOPLE` | `project_id` |234| Manage access | `BASECAMP_PUT_PROJECTS_PEOPLE_USERS` | `project_id`, `grant`, `revoke`, `create` |235
Full transparency — inspect the skill content before installing.