basecamp-automation
Automate Basecamp project management, to-dos, messages, people, and to-do list organization via Rube MCP (Composio). Always search tools first for current schemas.
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_MANAGE_CONNECTIONS with toolkit basecampRUBE_SEARCH_TOOLS first to get current tool schemasSetup
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.
RUBE_SEARCH_TOOLS respondsRUBE_MANAGE_CONNECTIONS with toolkit basecampCore 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:
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 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 in YYYY-MM-DD formatstarts_on: Start date in YYYY-MM-DD formatnotify: Boolean to notify assignees (defaults to false)completion_subscriber_ids: Person IDs notified upon completionPitfalls:
todoset_id creates lists in the wrong sectionapp_url, app_todos_url); prefer returning these over raw IDsbucket_id, todoset_id, todolist_id) are integers, not strings2. 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 IDmessage_board_id: Integer message board ID (from GET_MESSAGE_BOARD)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 membersPitfalls:
status="draft" can produce HTTP 400; use status="active" as the reliable optionbucket_id and message_board_id must belong to the same project; mismatches fail or misroutePUT_BUCKETS_MESSAGES replace the entire body -- include the full corrected content, not just a diffapp_url from the response for user-facing confirmation linksCREATE_MESSAGE and POST_BUCKETS_MESSAGE_BOARDS_MESSAGES do the same thing; use CREATE_MESSAGE first and fall back to POST if it fails3. 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 IDgrant: Array of integer person IDs to add to the projectrevoke: Array of integer person IDs to remove from the projectcreate: Array of objects with name, email_address, and optional company_name, title for new usersgrant, revoke, or create must be providedPitfalls:
project_id for people management is the same as bucket_id for other operationsLIST_PROJECT_PEOPLE and GET_PROJECTS_PEOPLE are near-identical; use eithercreate also grants them project access in one step4. 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 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:
POST_BUCKETS_TODOLISTS_GROUPS and CREATE_TODOLIST_GROUP are near-identical; use either5. 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 projectsproject_id: Integer project ID for detailed retrievalPitfalls:
dock array with tools (todoset, message_board, etc.) and their IDstodoset_id, message_board_id, etc. for downstream operationsCommon Patterns
ID Resolution
Basecamp uses a hierarchical ID structure. Always resolve top-down:
BASECAMP_GET_PROJECTS -- find by name, capture the idBASECAMP_GET_BUCKETS_TODOSETSBASECAMP_GET_MESSAGE_BOARDBASECAMP_GET_BUCKETS_TODOSETS_TODOLISTSBASECAMP_GET_PEOPLE or BASECAMP_LIST_PROJECT_PEOPLEbucket_id and project_id refer to the same entity in different contextsPagination
Basecamp uses page-based pagination on list endpoints:
GET_PROJECTS, GET_BUCKETS_TODOSETS_TODOLISTS, and list endpoints return paginated resultsContent Formatting
tags; use , ,
,
, , etc.
Example: Important: Complete by Friday 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_PROJECTSstatusGet project BASECAMP_GET_PROJECTproject_idGet project detail BASECAMP_GET_PROJECTS_BY_PROJECT_IDproject_idGet to-do set BASECAMP_GET_BUCKETS_TODOSETSbucket_id, todoset_idList to-do lists BASECAMP_GET_BUCKETS_TODOSETS_TODOLISTSbucket_id, todoset_idGet to-do list BASECAMP_GET_BUCKETS_TODOLISTSbucket_id, todolist_idCreate to-do list BASECAMP_POST_BUCKETS_TODOSETS_TODOLISTSbucket_id, todoset_id, nameCreate to-do BASECAMP_POST_BUCKETS_TODOLISTS_TODOSbucket_id, todolist_id, contentCreate to-do (alt) BASECAMP_CREATE_TODObucket_id, todolist_id, contentList to-dos BASECAMP_GET_BUCKETS_TODOLISTS_TODOSbucket_id, todolist_idList to-do groups BASECAMP_GET_TODOLIST_GROUPSbucket_id, todolist_idCreate to-do group BASECAMP_POST_BUCKETS_TODOLISTS_GROUPSbucket_id, todolist_id, name, colorCreate to-do group (alt) BASECAMP_CREATE_TODOLIST_GROUPbucket_id, todolist_id, nameGet message board BASECAMP_GET_MESSAGE_BOARDbucket_id, message_board_idCreate message BASECAMP_CREATE_MESSAGEbucket_id, message_board_id, subject, statusCreate message (alt) BASECAMP_POST_BUCKETS_MESSAGE_BOARDS_MESSAGESbucket_id, message_board_id, subjectGet message BASECAMP_GET_MESSAGEbucket_id, message_idUpdate message BASECAMP_PUT_BUCKETS_MESSAGESbucket_id, message_idList all people BASECAMP_GET_PEOPLE(none) List project people BASECAMP_LIST_PROJECT_PEOPLEproject_idManage access BASECAMP_PUT_PROJECTS_PEOPLE_USERSproject_id, grant, revoke, create