SKILL.md
Basecamp Automation via Rube MCP
Automate 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.
Prerequisites
- Rube MCP must be connected (RUBESEARCHTOOLS available)
- Active Basecamp connection via
RUBEMANAGECONNECTIONSwith toolkitbasecamp - Always call
RUBESEARCHTOOLSfirst to get current tool schemas
Setup
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.
- Verify Rube MCP is available by confirming
RUBESEARCHTOOLSresponds - Call
RUBEMANAGECONNECTIONSwith toolkitbasecamp - If connection is not ACTIVE, follow the returned auth link to complete Basecamp OAuth
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. Manage To-Do Lists and Tasks
When to use: User wants to create to-do lists, add tasks, or organize work within a Basecamp project
Tool sequence:
BASECAMPGETPROJECTS- List projects to find the target bucket_id [Prerequisite]BASECAMPGETBUCKETS_TODOSETS- Get the to-do set within a project [Prerequisite]BASECAMPGETBUCKETSTODOSETSTODOLISTS- List existing to-do lists to avoid duplicates [Optional]BASECAMPPOSTBUCKETSTODOSETSTODOLISTS- Create a new to-do list in a to-do set [Required for list creation]BASECAMPGETBUCKETS_TODOLISTS- Get details of a specific to-do list [Optional]BASECAMPPOSTBUCKETSTODOLISTSTODOS- Create a to-do item in a to-do list [Required for task creation]BASECAMPCREATETODO- Alternative tool for creating individual to-dos [Alternative]BASECAMPGETBUCKETSTODOLISTSTODOS- List to-dos within a to-do list [Optional]
Key parameters for creating to-do lists:
bucketid: Integer project/bucket ID (from GETPROJECTS)todosetid: Integer to-do set ID (from GETBUCKETS_TODOSETS)name: Title of the to-do list (required)description: HTML-formatted description (supports Rich text)
Key parameters for creating to-dos:
bucket_id: Integer project/bucket IDtodolist_id: Integer to-do list IDcontent: What the to-do is for (required)description: HTML details about the to-doassignee_ids: Array of integer person IDsdue_on: Due date inYYYY-MM-DDformatstarts_on: Start date inYYYY-MM-DDformatnotify: Boolean to notify assignees (defaults to false)completionsubscriberids: Person IDs notified upon completion
Pitfalls:
- A project (bucket) can contain multiple to-do sets; selecting the wrong
todoset_idcreates lists in the wrong section - Always check existing to-do lists before creating to avoid near-duplicate names
- Success payloads include user-facing URLs (
appurl,apptodos_url); prefer returning these over raw IDs - All IDs (
bucketid,todosetid,todolist_id) are integers, not strings - Descriptions support HTML formatting only, not Markdown
2. Post and Manage Messages
When to use: User wants to post messages to a project message board or update existing messages
Tool sequence:
BASECAMPGETPROJECTS- Find the target project and bucket_id [Prerequisite]BASECAMPGETMESSAGE_BOARD- Get the message board ID for the project [Prerequisite]BASECAMPCREATEMESSAGE- Create a new message on the board [Required]BASECAMPPOSTBUCKETSMESSAGEBOARDS_MESSAGES- Alternative message creation tool [Fallback]BASECAMPGETMESSAGE- Read a specific message by ID [Optional]BASECAMPPUTBUCKETS_MESSAGES- Update an existing message [Optional]
Key parameters:
bucket_id: Integer project/bucket IDmessageboardid: Integer message board ID (from GETMESSAGEBOARD)subject: Message title (required)content: HTML body of the messagestatus: Set to"active"to publish immediatelycategory_id: Message type classification (optional)subscriptions: Array of person IDs to notify; omit to notify all project members
Pitfalls:
status="draft"can produce HTTP 400; usestatus="active"as the reliable optionbucketidandmessageboard_idmust belong to the same project; mismatches fail or misroute- Message content supports HTML tags only; not Markdown
- Updates via
PUTBUCKETSMESSAGESreplace the entire body -- include the full corrected content, not just a diff - Prefer
app_urlfrom the response for user-facing confirmation links - Both
CREATEMESSAGEandPOSTBUCKETSMESSAGEBOARDSMESSAGESdo the same thing; use CREATEMESSAGE first and fall back to POST if it fails
3. Manage People and Access
When to use: User wants to list people, manage project access, or add new users
Tool sequence:
BASECAMPGETPEOPLE- List all people visible to the current user [Required]BASECAMPGETPROJECTS- Find the target project [Prerequisite]BASECAMPLISTPROJECT_PEOPLE- List people on a specific project [Required]BASECAMPGETPROJECTS_PEOPLE- Alternative to list project members [Alternative]BASECAMPPUTPROJECTSPEOPLEUSERS- Grant or revoke project access [Required for access changes]
Key parameters for PUTPROJECTSPEOPLE_USERS:
project_id: Integer project IDgrant: Array of integer person IDs to add to the projectrevoke: Array of integer person IDs to remove from the projectcreate: Array of objects withname,emailaddress, and optionalcompanyname,titlefor new users- At least one of
grant,revoke, orcreatemust be provided
Pitfalls:
- Person IDs are integers; always resolve names to IDs via GET_PEOPLE first
projectidfor people management is the same asbucketidfor other operationsLISTPROJECTPEOPLEandGETPROJECTSPEOPLEare near-identical; use either- Creating users via
createalso grants them project access in one step
4. Organize To-Dos with Groups
When to use: User wants to organize to-dos within a list into color-coded groups
Tool sequence:
BASECAMPGETPROJECTS- Find the target project [Prerequisite]BASECAMPGETBUCKETS_TODOLISTS- Get the to-do list details [Prerequisite]BASECAMPGETTODOLIST_GROUPS- List existing groups in a to-do list [Optional]BASECAMPGETBUCKETSTODOLISTSGROUPS- Alternative group listing [Alternative]BASECAMPPOSTBUCKETSTODOLISTSGROUPS- Create a new group in a to-do list [Required]BASECAMPCREATETODOLIST_GROUP- Alternative group creation tool [Alternative]
Key parameters:
bucket_id: Integer project/bucket IDtodolist_id: Integer to-do list IDname: Group title (required)color: Visual color identifier -- one of:white,red,orange,yellow,green,blue,aqua,purple,gray,pink,brownstatus: Filter for listing --"archived"or"trashed"(omit for active groups)
Pitfalls:
POSTBUCKETSTODOLISTSGROUPSandCREATETODOLIST_GROUPare near-identical; use either- Color values must be from the fixed palette; arbitrary hex/rgb values are not supported
- Groups are sub-sections within a to-do list, not standalone entities
5. Browse and Inspect Projects
When to use: User wants to list projects, get project details, or explore project structure
Tool sequence:
BASECAMPGETPROJECTS- List all active projects [Required]BASECAMPGETPROJECT- Get comprehensive details for a specific project [Optional]BASECAMPGETPROJECTSBYPROJECT_ID- Alternative project detail retrieval [Alternative]
Key parameters:
status: Filter by"archived"or"trashed"; omit for active projectsproject_id: Integer project ID for detailed retrieval
Pitfalls:
- Projects are sorted by most recently created first
- The response includes a
dockarray with tools (todoset, message_board, etc.) and their IDs - Use the dock tool IDs to find
todosetid,messageboard_id, etc. for downstream operations
Common Patterns
ID Resolution
Basecamp uses a hierarchical ID structure. Always resolve top-down:
- Project (bucketid):
BASECAMPGET_PROJECTS-- find by name, capture theid - To-do set (todosetid): Found in project dock or via
BASECAMPGETBUCKETSTODOSETS - Message board (messageboardid): Found in project dock or via
BASECAMPGETMESSAGE_BOARD - To-do list (todolistid):
BASECAMPGETBUCKETSTODOSETS_TODOLISTS - People (personid):
BASECAMPGETPEOPLEorBASECAMPLISTPROJECTPEOPLE - Note:
bucketidandprojectidrefer to the same entity in different contexts
Pagination
Basecamp uses page-based pagination on list endpoints:
- Response headers or body may indicate more pages available
GETPROJECTS,GETBUCKETSTODOSETSTODOLISTS, and list endpoints return paginated results- Continue fetching until no more results are returned
Content Formatting
- All rich text fields use HTML, not Markdown
- Wrap content in
<div>tags; use<strong>,<em>,<ul>,<ol>,<li>,<a>etc. - Example:
<div><strong>Important:</strong> Complete by Friday</div>
Known Pitfalls
ID Formats
- All Basecamp IDs are integers, not strings or UUIDs
bucketid=projectid(same entity, different parameter names across tools)- To-do set IDs, to-do list IDs, and message board IDs are found in the project's
dockarray - Person IDs are integers; resolve names via
GET_PEOPLEbefore operations
Status Field
status="draft"for messages can cause HTTP 400; always usestatus="active"- Project/to-do list status filters:
"archived","trashed", or omit for active
Content Format
- HTML only, never Markdown
- Updates replace the entire body, not a partial diff
- Invalid HTML tags may be silently stripped
Rate Limits
- Basecamp API has rate limits; space out rapid sequential requests
- Large projects with many to-dos should be paginated carefully
URL Handling
- Prefer
app_urlfrom API responses for user-facing links - Do not reconstruct Basecamp URLs manually from IDs
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| List projects | BASECAMPGETPROJECTS |
status |
| Get project | BASECAMPGETPROJECT |
project_id |
| Get project detail | BASECAMPGETPROJECTSBYPROJECT_ID |
project_id |
| Get to-do set | BASECAMPGETBUCKETS_TODOSETS |
bucketid, todosetid |
| List to-do lists | BASECAMPGETBUCKETSTODOSETSTODOLISTS |
bucketid, todosetid |
| Get to-do list | BASECAMPGETBUCKETS_TODOLISTS |
bucketid, todolistid |
| Create to-do list | BASECAMPPOSTBUCKETSTODOSETSTODOLISTS |
bucketid, todosetid, name |
| Create to-do | BASECAMPPOSTBUCKETSTODOLISTSTODOS |
bucketid, todolistid, content |
| Create to-do (alt) | BASECAMPCREATETODO |
bucketid, todolistid, content |
| List to-dos | BASECAMPGETBUCKETSTODOLISTSTODOS |
bucketid, todolistid |
| List to-do groups | BASECAMPGETTODOLIST_GROUPS |
bucketid, todolistid |
| Create to-do group | BASECAMPPOSTBUCKETSTODOLISTSGROUPS |
bucketid, todolistid, name, color |
| Create to-do group (alt) | BASECAMPCREATETODOLIST_GROUP |
bucketid, todolistid, name |
| Get message board | BASECAMPGETMESSAGE_BOARD |
bucketid, messageboard_id |
| Create message | BASECAMPCREATEMESSAGE |
bucketid, messageboard_id, subject, status |
| Create message (alt) | BASECAMPPOSTBUCKETSMESSAGEBOARDS_MESSAGES |
bucketid, messageboard_id, subject |
| Get message | BASECAMPGETMESSAGE |
bucketid, messageid |
| Update message | BASECAMPPUTBUCKETS_MESSAGES |
bucketid, messageid |
| List all people | BASECAMPGETPEOPLE |
(none) |
| List project people | BASECAMPLISTPROJECT_PEOPLE |
project_id |
| Manage access | BASECAMPPUTPROJECTSPEOPLEUSERS |
project_id, grant, revoke, create |
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
Example
User request:
Automate Basecamp project management, to-dos, messages, people, and to-do list organization via Rube MCP (Composio).
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.