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.
Toolkit docs: composio.dev/toolkits/basecamp
Prerequisites
-
Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
-
Active Basecamp connection via RUBE_MANAGE_CONNECTIONS with toolkit basecamp
-
Always call RUBE_SEARCH_TOOLS first 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 RUBE_SEARCH_TOOLS responds
-
Call RUBE_MANAGE_CONNECTIONS with toolkit basecamp
-
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
- 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:
-
BASECAMP_GET_PROJECTS
-
List projects to find the target bucket_id [Prerequisite]
-
BASECAMP_GET_BUCKETS_TODOSETS
-
Get the to-do set within a project [Prerequisite]
-
BASECAMP_GET_BUCKETS_TODOSETS_TODOLISTS
-
List existing to-do lists to avoid duplicates [Optional]
-
BASECAMP_POST_BUCKETS_TODOSETS_TODOLISTS
-
Create a new to-do list in a to-do set [Required for list creation]
-
BASECAMP_GET_BUCKETS_TODOLISTS
-
Get details of a specific to-do list [Optional]
-
BASECAMP_POST_BUCKETS_TODOLISTS_TODOS
-
Create a to-do item in a to-do list [Required for task creation]
-
BASECAMP_CREATE_TODO
-
Alternative tool for creating individual to-dos [Alternative]
-
BASECAMP_GET_BUCKETS_TODOLISTS_TODOS
-
List to-dos within a to-do list [Optional]
Key parameters for creating to-do lists:
-
bucket_id : Integer project/bucket ID (from GET_PROJECTS)
-
todoset_id : Integer to-do set ID (from GET_BUCKETS_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 ID
-
todolist_id : Integer to-do list ID
-
content : What the to-do is for (required)
-
description : HTML details about the to-do
-
assignee_ids : Array of integer person IDs
-
due_on : Due date in YYYY-MM-DD format
-
starts_on : Start date in YYYY-MM-DD format
-
notify : Boolean to notify assignees (defaults to false)
-
completion_subscriber_ids : Person IDs notified upon completion
Pitfalls:
-
A project (bucket) can contain multiple to-do sets; selecting the wrong todoset_id creates lists in the wrong section
-
Always check existing to-do lists before creating to avoid near-duplicate names
-
Success payloads include user-facing URLs (app_url , app_todos_url ); prefer returning these over raw IDs
-
All IDs (bucket_id , todoset_id , todolist_id ) are integers, not strings
-
Descriptions support HTML formatting only, not Markdown
- Post and Manage Messages
When to use: User wants to post messages to a project message board or update existing messages
Tool sequence:
-
BASECAMP_GET_PROJECTS
-
Find the target project and bucket_id [Prerequisite]
-
BASECAMP_GET_MESSAGE_BOARD
-
Get the message board ID for the project [Prerequisite]
-
BASECAMP_CREATE_MESSAGE
-
Create a new message on the board [Required]
-
BASECAMP_POST_BUCKETS_MESSAGE_BOARDS_MESSAGES
-
Alternative message creation tool [Fallback]
-
BASECAMP_GET_MESSAGE
-
Read a specific message by ID [Optional]
-
BASECAMP_PUT_BUCKETS_MESSAGES
-
Update an existing message [Optional]
Key parameters:
-
bucket_id : Integer project/bucket ID
-
message_board_id : Integer message board ID (from GET_MESSAGE_BOARD)
-
subject : Message title (required)
-
content : HTML body of the message
-
status : Set to "active" to publish immediately
-
category_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; use status="active" as the reliable option
-
bucket_id and message_board_id must belong to the same project; mismatches fail or misroute
-
Message content supports HTML tags only; not Markdown
-
Updates via PUT_BUCKETS_MESSAGES replace the entire body -- include the full corrected content, not just a diff
-
Prefer app_url from the response for user-facing confirmation links
-
Both CREATE_MESSAGE and POST_BUCKETS_MESSAGE_BOARDS_MESSAGES do the same thing; use CREATE_MESSAGE first and fall back to POST if it fails
- Manage People and Access
When to use: User wants to list people, manage project access, or add new users
Tool sequence:
-
BASECAMP_GET_PEOPLE
-
List all people visible to the current user [Required]
-
BASECAMP_GET_PROJECTS
-
Find the target project [Prerequisite]
-
BASECAMP_LIST_PROJECT_PEOPLE
-
List people on a specific project [Required]
-
BASECAMP_GET_PROJECTS_PEOPLE
-
Alternative to list project members [Alternative]
-
BASECAMP_PUT_PROJECTS_PEOPLE_USERS
-
Grant or revoke project access [Required for access changes]
Key parameters for PUT_PROJECTS_PEOPLE_USERS:
-
project_id : Integer project ID
-
grant : Array of integer person IDs to add to the project
-
revoke : Array of integer person IDs to remove from the project
-
create : Array of objects with name , email_address , and optional company_name , title for new users
-
At least one of grant , revoke , or create must be provided
Pitfalls:
-
Person IDs are integers; always resolve names to IDs via GET_PEOPLE first
-
project_id for people management is the same as bucket_id for other operations
-
LIST_PROJECT_PEOPLE and GET_PROJECTS_PEOPLE are near-identical; use either
-
Creating users via create also grants them project access in one step
- Organize To-Dos with Groups
When to use: User wants to organize to-dos within a list into color-coded groups
Tool sequence:
-
BASECAMP_GET_PROJECTS
-
Find the target project [Prerequisite]
-
BASECAMP_GET_BUCKETS_TODOLISTS
-
Get the to-do list details [Prerequisite]
-
BASECAMP_GET_TODOLIST_GROUPS
-
List existing groups in a to-do list [Optional]
-
BASECAMP_GET_BUCKETS_TODOLISTS_GROUPS
-
Alternative group listing [Alternative]
-
BASECAMP_POST_BUCKETS_TODOLISTS_GROUPS
-
Create a new group in a to-do list [Required]
-
BASECAMP_CREATE_TODOLIST_GROUP
-
Alternative group creation tool [Alternative]
Key parameters:
-
bucket_id : Integer project/bucket ID
-
todolist_id : Integer to-do list ID
-
name : Group title (required)
-
color : Visual color identifier -- one of: white , red , orange , yellow , green , blue , aqua , purple , gray , pink , brown
-
status : Filter for listing -- "archived" or "trashed" (omit for active groups)
Pitfalls:
-
POST_BUCKETS_TODOLISTS_GROUPS and CREATE_TODOLIST_GROUP are 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
- Browse and Inspect Projects
When to use: User wants to list projects, get project details, or explore project structure
Tool sequence:
-
BASECAMP_GET_PROJECTS
-
List all active projects [Required]
-
BASECAMP_GET_PROJECT
-
Get comprehensive details for a specific project [Optional]
-
BASECAMP_GET_PROJECTS_BY_PROJECT_ID
-
Alternative project detail retrieval [Alternative]
Key parameters:
-
status : Filter by "archived" or "trashed" ; omit for active projects
-
project_id : Integer project ID for detailed retrieval
Pitfalls:
-
Projects are sorted by most recently created first
-
The response includes a dock array with tools (todoset, message_board, etc.) and their IDs
-
Use the dock tool IDs to find todoset_id , message_board_id , etc. for downstream operations
Common Patterns
ID Resolution
Basecamp uses a hierarchical ID structure. Always resolve top-down:
-
Project (bucket_id): BASECAMP_GET_PROJECTS -- find by name, capture the id
-
To-do set (todoset_id): Found in project dock or via BASECAMP_GET_BUCKETS_TODOSETS
-
Message board (message_board_id): Found in project dock or via BASECAMP_GET_MESSAGE_BOARD
-
To-do list (todolist_id): BASECAMP_GET_BUCKETS_TODOSETS_TODOLISTS
-
People (person_id): BASECAMP_GET_PEOPLE or BASECAMP_LIST_PROJECT_PEOPLE
-
Note: bucket_id and project_id refer 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
-
GET_PROJECTS , GET_BUCKETS_TODOSETS_TODOLISTS , 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
-
bucket_id = project_id (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 dock array
-
Person IDs are integers; resolve names via GET_PEOPLE before operations
Status Field
-
status="draft" for messages can cause HTTP 400; always use status="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_url from API responses for user-facing links
-
Do not reconstruct Basecamp URLs manually from IDs
Quick Reference
Task Tool Slug Key Params
List projects BASECAMP_GET_PROJECTS
status
Get project BASECAMP_GET_PROJECT
project_id
Get project detail BASECAMP_GET_PROJECTS_BY_PROJECT_ID
project_id
Get to-do set BASECAMP_GET_BUCKETS_TODOSETS
bucket_id , todoset_id
List to-do lists BASECAMP_GET_BUCKETS_TODOSETS_TODOLISTS
bucket_id , todoset_id
Get to-do list BASECAMP_GET_BUCKETS_TODOLISTS
bucket_id , todolist_id
Create to-do list BASECAMP_POST_BUCKETS_TODOSETS_TODOLISTS
bucket_id , todoset_id , name
Create to-do BASECAMP_POST_BUCKETS_TODOLISTS_TODOS
bucket_id , todolist_id , content
Create to-do (alt) BASECAMP_CREATE_TODO
bucket_id , todolist_id , content
List to-dos BASECAMP_GET_BUCKETS_TODOLISTS_TODOS
bucket_id , todolist_id
List to-do groups BASECAMP_GET_TODOLIST_GROUPS
bucket_id , todolist_id
Create to-do group BASECAMP_POST_BUCKETS_TODOLISTS_GROUPS
bucket_id , todolist_id , name , color
Create to-do group (alt) BASECAMP_CREATE_TODOLIST_GROUP
bucket_id , todolist_id , name
Get message board BASECAMP_GET_MESSAGE_BOARD
bucket_id , message_board_id
Create message BASECAMP_CREATE_MESSAGE
bucket_id , message_board_id , subject , status
Create message (alt) BASECAMP_POST_BUCKETS_MESSAGE_BOARDS_MESSAGES
bucket_id , message_board_id , subject
Get message BASECAMP_GET_MESSAGE
bucket_id , message_id
Update message BASECAMP_PUT_BUCKETS_MESSAGES
bucket_id , message_id
List all people BASECAMP_GET_PEOPLE
(none)
List project people BASECAMP_LIST_PROJECT_PEOPLE
project_id
Manage access BASECAMP_PUT_PROJECTS_PEOPLE_USERS
project_id , grant , revoke , create
Powered by Composio