# Basecamp — how to use (mcp.ai)

Connect your Basecamp account and use 142 tools for project management straight from your AI agent. Connect in one click, no API key needed. Project management and team collaboration tool by 37signals.

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_basecamp?ms=1787295780000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `basecamp_complete_todo`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/basecamp`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/basecamp/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/basecamp/complete/todo` — Tool to mark a to-do as completed in Basecamp. Use when you need to complete a to-do item.
  - body: { todo_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/create/card` — Tool to create a new card in a column of a Basecamp card table. Use when you need to add a card to a card table column with optional content and due date.
  - body: { title: string, due_on?: string, notify?: boolean, content?: string, bucket_id: integer, column_id: integer }
- `POST https://api.mcp.ai/api/basecamp/create/card/step` — Tool to create a step within a card in a Basecamp card table. Use when you need to add a subtask or checklist item to an existing card with optional due date and assignees.
  - body: { title: string, due_on?: string, card_id: integer, assignees?: integer[], bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/create/chatbot` — Tool to create a new chatbot in a Basecamp Campfire chat. Use when you need to add an automated bot to a chat room for posting messages and responding to commands.
  - body: { chat_id: integer, bucket_id: integer, command_url?: string, service_name: string }
- `POST https://api.mcp.ai/api/basecamp/create/chatbot/line` — Tool to post a message as a chatbot to a Basecamp Campfire. Use when you need to post messages via a chatbot integration without OAuth authentication.
  - body: { chat_id: integer, content: string, bucket_id: integer, chatbot_key: string }
- `POST https://api.mcp.ai/api/basecamp/create/document` — Tool to create a new document in a Basecamp vault. Use when you need to publish a document in a specific project vault with title, HTML content, and optional publication status.
  - body: { title: string, status?: string, content: string, vault_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/create/project/construction` — Tool to create a new project from a Basecamp template asynchronously. Use when you need to instantiate a project based on an existing template. Poll the returned URL to monitor construction progress u
  - body: { project: object, template_id: integer }
- `POST https://api.mcp.ai/api/basecamp/create/todo` — DEPRECATED: Use BASECAMP_POST_BUCKETS_TODOLISTS_TODOS instead. Tool to create a new to-do in a Basecamp to-do list. Use when you need to add a task with optional description, assignees, and due date.
  - body: { due_on?: string, notify?: boolean, content: string, bucket_id: integer, starts_on?: string, description?: string, todolist_id: integer, assignee_ids?: integer[], completion_subscriber_ids?: integer[] }
- `POST https://api.mcp.ai/api/basecamp/create/todolist/group` — Tool to create a new to-do group within a parent to-do list in Basecamp. Use when organizing todos into groups with optional color coding.
  - body: { name: string, color?: string, bucket_id: integer, todolist_id: integer }
- `POST https://api.mcp.ai/api/basecamp/create/upload` — Tool to create a new upload (file) in a Basecamp vault. Use when you need to create an upload entry for a previously uploaded attachment in a specific project vault.
  - body: { vault_id: integer, base_name?: string, bucket_id: integer, description?: string, attachable_sgid: string }
- `POST https://api.mcp.ai/api/basecamp/create/vault` — Tool to create a new vault (folder) within an existing parent vault in a Basecamp project. Use when you need to organize documents and files hierarchically by creating nested vaults.
  - body: { title: string, vault_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/delete/buckets/card/tables/columns/on/hold` — Tool to remove the on-hold section from a card table column. Use when you need to delete the on-hold section from a column in a Basecamp project's card table.
  - body: { bucket_id: integer, column_id: integer }
- `POST https://api.mcp.ai/api/basecamp/delete/buckets/recordings/pin` — Tool to unpin a recording (message) in a Basecamp project. Use when you need to remove the pinned status from a message on a message board or project.
  - body: { bucket_id: integer, recording_id: integer }
- `POST https://api.mcp.ai/api/basecamp/delete/campfire/line` — Tool to delete a Campfire line from a chat conversation. Use when removing a specific message from a Basecamp Campfire chat.
  - body: { chat_id: integer, line_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/delete/chatbot` — Tool to delete a chatbot from a Campfire chat. Use when removing a chatbot from the account. Note: Deletion is account-wide and only account administrators can delete chatbots.
  - body: { chat_id: integer, bucket_id: integer, chatbot_id: integer }
- `POST https://api.mcp.ai/api/basecamp/delete/message/type` — Tool to delete a message type from a Basecamp project. Use when removing a custom message category. Permanently removes the specified message type.
  - body: { bucket_id: integer, category_id: integer }
- `POST https://api.mcp.ai/api/basecamp/delete/webhooks` — Tool to delete a webhook from a Basecamp project. Use when you need to remove a webhook subscription from a project. Permanently deletes the specified webhook.
  - body: { bucket_id: integer, webhook_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/card/tables/lists/cards` — Tool to retrieve a paginated list of cards from a card table column. Use when you need to fetch cards from a specific list/column within a Basecamp project's card table.
  - body: { page?: integer, list_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/categories` — Tool to retrieve all message types (categories) from a Basecamp project. Use when you need to list all available message categories for organizing messages in a project.
  - body: { bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/chats/integrations` — Tool to retrieve all chatbot integrations from a Campfire chat. Use when you need to get the list of chatbots accessible to the account with chat-specific line URLs for posting messages.
  - body: { chat_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/chats/lines` — Tool to retrieve a paginated list of Campfire lines from a specific chat. Use when you need to fetch messages from a Campfire conversation in a Basecamp project.
  - body: { chat_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/inboxes/forwards` — Tool to retrieve a paginated list of active email forwards from a project's inbox. Use when you need to fetch forwarded emails in a Basecamp inbox.
  - body: { inbox_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/message/boards/messages` — Tool to retrieve a paginated list of active messages from a message board in a Basecamp project. Use when you need to fetch messages from a specific message board.
  - body: { page?: integer, bucket_id: integer, message_board_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/question/answers` — Tool to retrieve a specific question answer by ID from a Basecamp project. Use when you need to fetch details about an automatic check-in question answer including its content, creator, and associated
  - body: { answer_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/questionnaires` — Tool to retrieve a specific questionnaire (automatic check-ins) from a Basecamp project. Use when you need to fetch details about a questionnaire including its questions count and metadata.
  - body: { bucket_id: integer, questionnaire_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/questionnaires/questions` — Tool to retrieve a paginated list of questions from a questionnaire in a Basecamp project. Use when you need to fetch questions from a specific questionnaire.
  - body: { page?: integer, bucket_id: integer, questionnaire_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/questions` — Tool to retrieve a specific check-in question by ID from a Basecamp project. Use when you already know the question ID and need its details without listing all questions from a questionnaire.
  - body: { bucket_id: integer, question_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/recordings/events` — Tool to retrieve a paginated list of events for a recording. Use when you need to fetch change history from a specific recording in a Basecamp project.
  - body: { bucket_id: integer, recording_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/schedules/entries` — Tool to retrieve a paginated list of schedule entries from a schedule. Use when you need to fetch entries from a specific schedule in a Basecamp project.
  - body: { status?: string, bucket_id: integer, schedule_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/todolists/groups` — Tool to retrieve a paginated list of active groups from a to-do list in a Basecamp project. Use when you need to list all groups within a specific to-do list for organizing tasks.
  - body: { page?: integer, status?: string, bucket_id: integer, todolist_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/todolists/todos` — Tool to retrieve a paginated list of to-dos from a specific to-do list in a Basecamp project. Use when you need to fetch to-do items from a to-do list, optionally filtering by status or completion sta
  - body: { page?: integer, status?: string, bucket_id: integer, completed?: boolean, todolist_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/todos` — Tool to retrieve a specific to-do by ID from a Basecamp project. Use when you need to fetch a single to-do item including its content, title, assignees, completion status, and dates.
  - body: { todo_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/todosets/todolists` — Tool to retrieve a paginated list of to-do lists within a specific to-do set in a Basecamp project. Use when you need to fetch all to-do lists from a to-do set, optionally filtering by status.
  - body: { page?: integer, status?: string, bucket_id: integer, todoset_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/uploads` — Tool to retrieve a specific upload by ID from a Basecamp project vault. Use when you need to fetch details about an uploaded file including its metadata, download URL, and dimensions.
  - body: { bucket_id: integer, upload_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/vaults` — Tool to retrieve a specific vault from a Basecamp project. Use when you need details about a vault including its documents, uploads, and nested vaults.
  - body: { vault_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/vaults/documents` — Tool to retrieve a paginated list of active documents from a vault in a Basecamp project. Use when you need to fetch all documents stored in a specific vault.
  - body: { page?: integer, vault_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/vaults/uploads` — Tool to retrieve a paginated list of active uploads from a vault in a Basecamp project. Use when you need to fetch all uploaded files stored in a specific vault.
  - body: { page?: integer, vault_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/vaults/vaults` — Tool to retrieve a paginated list of vaults nested within a parent vault in a Basecamp project. Use when you need to fetch child vaults from a specific vault.
  - body: { vault_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/buckets/webhooks` — Tool to retrieve all webhooks configured for a Basecamp project. Use when you need to list all webhook configurations including their payload URLs, event types, and active status.
  - body: { page?: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/campfire` — Tool to retrieve a specific Campfire (chat room) by ID from a Basecamp project. Use when you need to get complete Campfire details including metadata, URLs, topic, and creator information.
  - body: { bucket_id: integer, campfire_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/campfire/line` — Tool to retrieve a specific Campfire line by ID from a Basecamp project. Use when you need to fetch a single message from a chat transcript.
  - body: { chat_id: integer, line_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/card` — Tool to get a specific card by ID from a card table. Use when you need to retrieve complete card details including title, description, status, assignees, steps, and metadata.
  - body: { card_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/card/table` — Tool to retrieve a card table (Kanban board) for a project. Use when you need to fetch information about a specific card table including its columns, cards count, and subscribers.
  - body: { bucket_id: integer, card_table_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/card/table/column` — Tool to get a specific column from a card table within a Basecamp project. Use when you need to fetch details about a card table column by its ID.
  - body: { bucket_id: integer, column_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/chatbot` — Tool to get a specific chatbot by ID from a Basecamp Campfire chat. Use when you need to retrieve details about a chatbot, including its service name, command URL, and lines URL.
  - body: { chat_id: integer, bucket_id: integer, chatbot_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/chats` — Tool to retrieve a paginated list of all active Campfires (chats) visible to the current user. Use when you need to list all available chat rooms in Basecamp.
- `POST https://api.mcp.ai/api/basecamp/get/circles/people` — Tool to retrieve all people on this Basecamp account who can be pinged. Use when you need to get a list of all pingable users in the account.
  - body: { page?: integer }
- `POST https://api.mcp.ai/api/basecamp/get/comment` — Tool to retrieve a specific comment by ID from a Basecamp project. Use when you need to fetch details about a particular comment including its content, creator, and parent resource.
  - body: { bucket_id: integer, comment_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/document` — Tool to get a specific document by ID from a Basecamp project bucket. Use when you need to retrieve complete document details including title, content, creator, metadata, and comments count.
  - body: { bucket_id: integer, document_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/inbox` — Tool to get the inbox (email forwards) for a Basecamp project. Use when you need to retrieve details about a specific inbox including its forwards count and metadata.
  - body: { inbox_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/message` — Tool to retrieve a specific message by ID from a Basecamp project message board. Use when you need to fetch details of a single message including its content, author, and metadata.
  - body: { bucket_id: integer, message_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/message/board` — Tool to get the message board for a project. Use when you need to retrieve details about a specific message board including its title, creator, message count, and URLs.
  - body: { bucket_id: integer, message_board_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/message/type` — Tool to retrieve a specific message type by ID from a Basecamp project. Use when you need details about a specific message type/category.
  - body: { bucket_id: integer, category_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/my/profile` — Tool to retrieve the current user's personal info including profile details, permissions, and settings. Use when you need to get information about the authenticated user.
- `POST https://api.mcp.ai/api/basecamp/get/people` — Tool to retrieve all people visible to the current user in the Basecamp account. Use when you need to list users, check permissions, or get contact information for team members.
  - body: { page?: integer }
- `POST https://api.mcp.ai/api/basecamp/get/people/by/person/id` — Tool to retrieve the profile for a specific user by their ID. Use when you need to get detailed information about a specific person in the Basecamp account.
  - body: { person_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/project` — Tool to retrieve a specific project by its ID with complete details. Use when you need to get comprehensive information about a particular project including its status, metadata, and dock tools config
  - body: { project_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/projects` — Tool to retrieve a paginated list of projects visible to the current user, sorted by most recently created first. Use when you need to list all projects, filter by status (active/archived/trashed), or
  - body: { status?: string, account_id?: integer }
- `POST https://api.mcp.ai/api/basecamp/get/projects/by/project/id` — Tool to retrieve a single project by its ID with full details including dock tools. Use when you need to get information about a specific project that the user has access to.
  - body: { project_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/projects/people` — Tool to retrieve all active people assigned to a Basecamp project. Use when you need to list all members who have access to a specific project.
  - body: { project_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/projects/recordings` — Tool to retrieve a paginated list of records for a given type of recording across projects. Use when you need to list recordings of a specific type (Message, Document, Todo, etc.) with optional filter
  - body: { sort?: string, bucket?: string, status?: string, direction?: string, recording_type: string }
- `POST https://api.mcp.ai/api/basecamp/get/reports/timesheet` — Tool to retrieve all timesheet entries across the Basecamp account within a given timeframe. Use when you need to generate time reports, track hours logged, or analyze time entries by person or projec
  - body: { end_date?: string, bucket_id?: integer, person_id?: integer, start_date?: string }
- `POST https://api.mcp.ai/api/basecamp/get/schedule` — Tool to retrieve schedule details for a specific project. Use when you need information about a schedule including entries count and configuration.
  - body: { bucket_id: integer, schedule_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/schedule/entry` — Tool to get a specific schedule entry by ID from a Basecamp project. Use when you need to retrieve details about a scheduled event including its time, participants, and metadata.
  - body: { entry_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/subscription` — Tool to get subscription information for a recording. Use when you need to check subscription status, view subscriber count, or get detailed information about all subscribers for a specific recording.
  - body: { bucket_id: integer, recording_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/templates` — Tool to retrieve a paginated list of active templates visible to the current user, sorted by most recently created first. Use when you need to list templates or filter by status (active/archived/trash
  - body: { page?: integer, status?: string }
- `POST https://api.mcp.ai/api/basecamp/get/templates/by/template/id` — Tool to retrieve a single template by its ID with full details including dock tools. Use when you need to get information about a specific template that the user has access to.
  - body: { template_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/templates/project/constructions` — Tool to retrieve the status of a project construction from a template. Use when you need to monitor the progress of a project being created from a template. Can be polled at intervals (no more than on
  - body: { template_id: integer, construction_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/todo` — Tool to retrieve a specific to-do by ID from a Basecamp project. Use when you need to fetch detailed information about a single to-do item including its content, title, assignees, completion status, d
  - body: { todo_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/todolist` — Tool to retrieve a specific to-do list from a Basecamp project by its ID. Use when you need to get details about a to-do list including its title, description, completion status, and URLs for todos an
  - body: { bucket_id: integer, todolist_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/todoset` — Tool to retrieve a specific to-do set from a Basecamp project. Use when you need to get details about a to-do set, including its completion status and to-do lists count.
  - body: { bucket_id: integer, todoset_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/upload` — Tool to get a specific upload by ID from a Basecamp project. Use when you need to retrieve details about an uploaded file including metadata, download URL, and dimensions.
  - body: { bucket_id: integer, upload_id: integer }
- `POST https://api.mcp.ai/api/basecamp/get/webhook` — Tool to retrieve a specific webhook by ID from a Basecamp project. Use when you need details about a webhook including its delivery history.
  - body: { bucket_id: integer, webhook_id: integer }
- `POST https://api.mcp.ai/api/basecamp/list/chatbots` — Tool to get all chatbots for a chat/campfire. Use when you need to retrieve the list of chatbot integrations with their line URLs for posting messages.
  - body: { chat_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/list/comments` — Tool to get all comments on a recording in a Basecamp project. Use when you need to retrieve the list of active comments with their content, creators, and metadata.
  - body: { page?: integer, bucket_id: integer, recording_id: integer }
- `POST https://api.mcp.ai/api/basecamp/list/message/types` — Tool to retrieve all message types in a Basecamp project. Use when you need to list all available message types for organizing messages in a project.
  - body: { bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/list/project/people` — Tool to get all people on a specific Basecamp project. Use when you need to retrieve the list of active members who have access to a particular project.
  - body: { page?: integer, project_id: integer }
- `POST https://api.mcp.ai/api/basecamp/list/todolists` — Tool to get all to-do lists in a to-do set within a Basecamp project. Use when you need to retrieve all to-do lists from a specific to-do set, optionally filtering by status (archived or trashed).
  - body: { page?: integer, status?: string, bucket_id: integer, todoset_id: integer }
- `POST https://api.mcp.ai/api/basecamp/list/uploads` — Tool to retrieve all active uploads from a vault in a Basecamp project. Use when you need to list all uploaded files stored in a specific vault.
  - body: { page?: integer, vault_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/move/card` — Tool to move a card to a different column within a Basecamp card table. Use when you need to relocate a card from one column to another in a project.
  - body: { card_id: integer, bucket_id: integer, column_id: integer }
- `POST https://api.mcp.ai/api/basecamp/move/card/table/column` — Tool to reorder columns within a Basecamp card table. Use when you need to change the position of a column in a card table by specifying the column to move and its new position.
  - body: { position?: integer, bucket_id: integer, source_id: integer, target_id: integer, card_table_id: integer }
- `POST https://api.mcp.ai/api/basecamp/pin/message` — Tool to pin a message to the top of the message board. Use when you need to feature a message prominently at the top of a message board in a project.
  - body: { bucket_id: integer, message_id: integer }
- `POST https://api.mcp.ai/api/basecamp/post/attachments` — Tool to upload a file to Basecamp system. Use when you need to upload a file to get an attachable_sgid reference for use in other operations like creating messages or todos with attachments.
  - body: { file: object }
- `POST https://api.mcp.ai/api/basecamp/post/buckets/card/tables/cards/moves` — Tool to move a card to a different column within a Basecamp card table. Use when you need to relocate a card from one column to another in a project.
  - body: { card_id: integer, bucket_id: integer, column_id: integer }
- `POST https://api.mcp.ai/api/basecamp/post/buckets/card/tables/cards/positions` — Tool to reposition a step within a card in a Basecamp card table. Use when you need to change the order of steps/subtasks within a card by moving a step to a specific position.
  - body: { card_id: integer, position: integer, bucket_id: integer, source_id: integer }
- `POST https://api.mcp.ai/api/basecamp/post/buckets/card/tables/columns` — Tool to create a column within a Basecamp card table. Use when you need to add a new column to organize cards in a card table project.
  - body: { title: string, bucket_id: integer, description?: string, card_table_id: integer }
- `POST https://api.mcp.ai/api/basecamp/post/buckets/card/tables/columns/on/hold` — Tool to create an on-hold section in a card table column. Use when you need to add an on-hold area to organize cards that are temporarily paused or waiting.
  - body: { bucket_id: integer, column_id: integer }
- `POST https://api.mcp.ai/api/basecamp/post/buckets/categories` — Tool to create a new message type (category) in a Basecamp project. Use when you need to create a custom message category for organizing different types of messages in a project.
  - body: { icon: string, name: string, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/post/buckets/chats/lines` — Tool to create a line in a Basecamp Campfire chat. Use when you need to post a message to a specific Campfire chat within a project.
  - body: { chat_id: integer, content: string, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/post/buckets/message/boards/messages` — Tool to publish a message to a Basecamp message board within a project. Use when you need to create a new message with optional rich HTML content and subscriptions.
  - body: { status: string, content?: string, subject: string, bucket_id: integer, category_id?: integer, subscriptions?: integer[], message_board_id: integer }
- `POST https://api.mcp.ai/api/basecamp/post/buckets/recordings/comments` — Tool to publish a comment on a recording within a Basecamp project. Use when you need to add a comment with rich text to any recording such as a todolist, message, or document.
  - body: { content: string, bucket_id: integer, account_id?: integer, recording_id: integer }
- `POST https://api.mcp.ai/api/basecamp/post/buckets/recordings/pin` — Tool to pin a recording (message) in a Basecamp project. Use when you need to feature a message prominently at the top of a message board or project.
  - body: { bucket_id: integer, recording_id: integer }
- `POST https://api.mcp.ai/api/basecamp/post/buckets/recordings/subscription` — Tool to subscribe the current user to a recording for notifications. Use when you need to start watching/subscribing to a specific recording to receive notifications for new comments.
  - body: { bucket_id: integer, recording_id: integer }
- `POST https://api.mcp.ai/api/basecamp/post/buckets/schedules/entries` — Tool to create a schedule entry in a Basecamp schedule within a project. Use when you need to add a new event with start/end times and optional participants.
  - body: { notify?: boolean, all_day?: boolean, ends_at: string, summary: string, bucket_id: integer, starts_at: string, description?: string, schedule_id: integer, participant_ids?: integer[] }
- `POST https://api.mcp.ai/api/basecamp/post/buckets/todolists/comments` — Tool to add a comment to a to-do list in a Basecamp project. Use when you need to comment on a todolist with feedback, updates, or discussions. All subscribers to the to-do list will be notified.
  - body: { content: string, bucket_id: integer, todolist_id: integer }
- `POST https://api.mcp.ai/api/basecamp/post/buckets/todolists/todos` — Tool to create a to-do in a Basecamp to-do list within a project. Use when you need to add a new to-do item with optional description, assignees, and due date.
  - body: { due_on?: string, notify?: boolean, content: string, bucket_id: integer, starts_on?: string, description?: string, todolist_id: integer, assignee_ids?: integer[], completion_subscriber_ids?: integer[] }
- `POST https://api.mcp.ai/api/basecamp/post/buckets/todos/comments` — Tool to add a comment to a to-do in a Basecamp project. Use when you need to add feedback, updates, or discussion to a specific to-do item.
  - body: { content: string, todo_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/post/buckets/todosets/todolists` — Tool to create a new to-do list in a Basecamp to-do set within a project. Use when you need to add a new to-do list with optional HTML description.
  - body: { name: string, bucket_id: integer, todoset_id: integer, description?: string }
- `POST https://api.mcp.ai/api/basecamp/post/buckets/webhooks` — Tool to create a new webhook subscription for a Basecamp project. Use when you need to receive event notifications at a specified HTTPS endpoint for project activities.
  - body: { types?: string[], bucket_id: integer, payload_url: string }
- `POST https://api.mcp.ai/api/basecamp/post/integrations/chatbot/key/buckets/chats/lines` — Tool to create a line in a Basecamp Campfire chat using a chatbot key. Use when you need to post messages via a chatbot integration without OAuth authentication.
  - body: { chat_id: integer, content: string, bucket_id: integer, chatbot_key: string, content_param?: string }
- `POST https://api.mcp.ai/api/basecamp/post/lineup/markers` — Tool to create an account-wide marker that shows up in the Lineup. Use when you need to add a visual marker to highlight important dates or milestones across all projects.
  - body: { date: string, name: string }
- `POST https://api.mcp.ai/api/basecamp/post/projects` — Tool to create a new project in Basecamp with a name and optional description. Use when you need to set up a new project workspace for team collaboration.
  - body: { name: string, description?: string }
- `POST https://api.mcp.ai/api/basecamp/post/templates` — Tool to create a new template in Basecamp with a name and optional description. Use when you need to set up a reusable project template for standardizing workflows.
  - body: { name: string, description?: string }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/card/tables/columns/color` — Tool to update a card table column's visual color designation in a Basecamp project. Use when you need to change the color of a specific column for better visual organization.
  - body: { color: string, bucket_id: integer, column_id: integer }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/card/tables/steps` — Tool to update an existing card table step in Basecamp. Use when you need to modify a step's title, due date, or assignees. Omitted parameters remain unchanged.
  - body: { title?: string, due_on?: string, step_id: integer, assignees?: integer[], bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/card/tables/steps/completions` — Tool to mark a card table step as completed or uncompleted in Basecamp. Use when you need to toggle the completion status of a step by setting completion to "on" or "off".
  - body: { step_id: integer, bucket_id: integer, completion: string }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/categories` — Tool to update an existing message type (category) in a Basecamp project. Use when you need to modify the name or icon of a message category.
  - body: { icon: string, name: string, bucket_id: integer, category_id: integer }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/chats/integrations` — Tool to update an existing chatbot integration in a Basecamp Campfire chat. Use when you need to change the service name or command URL of a chatbot.
  - body: { chat_id: integer, bucket_id: integer, command_url?: string, service_name: string, integration_id: integer }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/comments` — Tool to update comment content in a Basecamp project. Use when you need to modify the content of an existing comment.
  - body: { content: string, bucket_id: integer, comment_id: integer }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/documents` — Tool to update an existing document in a Basecamp project bucket. Use when you need to modify a document's title, content, or both. Omitted parameters remain unchanged.
  - body: { title?: string, content?: string, bucket_id: integer, document_id: integer }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/messages` — Tool to update a message's subject, content, or category in a Basecamp project. Use when you need to modify an existing message's title, body text, or categorization.
  - body: { content?: string, subject?: string, bucket_id: integer, message_id: integer, category_id?: integer }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/recordings/client/visibility` — Tool to update client visibility for a recording in Basecamp. Use when you need to show or hide a recording from clients. Returns 403 if the recording inherits visibility from parent resource.
  - body: { bucket_id: integer, recording_id: integer, visible_to_clients: boolean }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/recordings/status/active` — Tool to unarchive a recording in a Basecamp project by marking it as active. Use when you need to restore an archived recording to make it visible again in the project.
  - body: { bucket_id: integer, recording_id: integer }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/recordings/status/archived` — Tool to mark a recording as archived in a Basecamp project. Use when you need to archive a recording to remove it from active view while preserving it for reference.
  - body: { bucket_id: integer, recording_id: integer }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/recordings/status/trashed` — Tool to mark a recording as trashed in a Basecamp project. Use when you need to move a recording to trash without permanently deleting it.
  - body: { bucket_id: integer, recording_id: integer }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/recordings/subscription` — Tool to update recording subscriptions by adding or removing subscribers. Use when you need to manage who receives notifications for a specific recording. At least one of subscriptions or unsubscripti
  - body: { bucket_id: integer, recording_id: integer, subscriptions?: integer[], unsubscriptions?: integer[] }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/schedule/entries` — Tool to update an existing schedule entry in a Basecamp schedule. Use when you need to modify an entry's title, times, description, or participants. Omitted parameters remain unchanged.
  - body: { notify?: boolean, all_day?: boolean, ends_at?: string, summary?: string, entry_id: integer, bucket_id: integer, starts_at?: string, description?: string, participant_ids?: integer[] }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/schedules` — Tool to update a schedule configuration in a Basecamp project. Use when you need to change whether the schedule includes due assignments from to-dos, cards and steps.
  - body: { bucket_id: integer, schedule_id: integer, include_due_assignments: boolean }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/todolists/groups/position` — Tool to reposition a to-do list group within its parent to-do list in a Basecamp project. Use when you need to change the order of to-do list groups by moving a group to a specific position.
  - body: { group_id: integer, position: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/todos` — Tool to update an existing to-do in a Basecamp project. Use when you need to modify a to-do's content, description, assignees, dates, or notification settings. Note: Pass all existing parameters along
  - body: { due_on?: string, notify?: boolean, content: string, todo_id: integer, bucket_id: integer, starts_on?: string, description?: string, assignee_ids?: integer[], completion_subscriber_ids?: integer[] }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/todos/position` — Tool to change the position of a to-do within its list in a Basecamp project. Use when you need to reorder to-dos by moving a specific to-do to a new position.
  - body: { todo_id: integer, position: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/uploads` — Tool to update an existing upload in a Basecamp project bucket. Use when you need to modify an upload's description or filename. Omitted parameters remain unchanged.
  - body: { base_name?: string, bucket_id: integer, upload_id: integer, description?: string }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/vaults` — Tool to update a vault's title in a Basecamp project. Use when you need to rename a vault within a specific project bucket.
  - body: { title: string, vault_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/put/buckets/webhooks` — Tool to update an existing webhook in a Basecamp project. Use when you need to modify the webhook's URL, event types, or active status.
  - body: { types?: string[], active?: boolean, bucket_id: integer, webhook_id: integer, payload_url: string }
- `POST https://api.mcp.ai/api/basecamp/put/projects` — Tool to update an existing project's name, description, access policy, or schedule in Basecamp. Use when you need to modify project details or settings. Note: name parameter is required; schedule date
  - body: { name: string, admissions?: string, project_id: integer, description?: string, schedule_attributes?: object }
- `POST https://api.mcp.ai/api/basecamp/put/projects/people/users` — Tool to grant or revoke project access for users in Basecamp. Use when you need to add existing users to a project, create new users with access, or remove users from a project. At least one of grant,
  - body: { grant?: integer[], create?: object[], revoke?: integer[], project_id: integer }
- `POST https://api.mcp.ai/api/basecamp/put/templates` — Tool to update a template's name and description in Basecamp. Use when you need to modify template metadata. Omitted parameters remain unchanged.
  - body: { name?: string, description?: string, template_id: integer }
- `POST https://api.mcp.ai/api/basecamp/reposition/card/step` — Tool to change the position of a step within a card. Use when you need to reorder steps in a card table card by moving a step to a specific position.
  - body: { card_id: integer, position: integer, bucket_id: integer, source_id: integer }
- `POST https://api.mcp.ai/api/basecamp/trash/project` — Tool to mark a Basecamp project as trashed. Use when you need to trash a project. Trashed projects will be permanently deleted after 30 days.
  - body: { project_id: integer }
- `POST https://api.mcp.ai/api/basecamp/trash/template` — Tool to mark a template as trashed in Basecamp. Use when you need to soft-delete a template; it will be permanently removed after 30 days.
  - body: { template_id: integer }
- `POST https://api.mcp.ai/api/basecamp/uncomplete/todo` — Tool to mark a to-do as uncompleted in Basecamp. Use when you need to reverse the completion status of a completed to-do item.
  - body: { todo_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/unpin/message` — Tool to unpin a message from the message board. Use when you need to remove the pinned status from a message that was previously pinned to the top of a message board.
  - body: { bucket_id: integer, message_id: integer }
- `POST https://api.mcp.ai/api/basecamp/unsubscribe/current/user` — Tool to unsubscribe the current user from a recording. Use when you need to stop receiving notifications for a specific recording. This is an idempotent operation that returns success even if the user
  - body: { bucket_id: integer, recording_id: integer }
- `POST https://api.mcp.ai/api/basecamp/unwatch/card/table/column` — Tool to stop watching a card table column. Use when you want to unsubscribe from a specific column and no longer receive notifications about changes to it.
  - body: { bucket_id: integer, column_id: integer }
- `POST https://api.mcp.ai/api/basecamp/update/card` — Tool to update a card's details in a Basecamp card table. Use when you need to modify a card's title, content, due date, or assignees.
  - body: { title?: string, due_on?: string, card_id: integer, content?: string, bucket_id: integer, assignee_ids?: integer[] }
- `POST https://api.mcp.ai/api/basecamp/update/card/table/column` — Tool to update a card table column's properties in a Basecamp project. Use when you need to modify a column's title or description.
  - body: { title?: string, bucket_id: integer, column_id: integer, description?: string }
- `POST https://api.mcp.ai/api/basecamp/update/document` — Tool to update an existing document's title or content in a Basecamp project. Use when you need to modify document title, content, or both.
  - body: { title?: string, content?: string, bucket_id: integer, document_id: integer }
- `POST https://api.mcp.ai/api/basecamp/update/todo` — Tool to update a to-do's content, assignees, or due date in a Basecamp project. Use when you need to modify an existing to-do item. Pass all existing parameters along with those being updated to preve
  - body: { due_on?: string, notify?: boolean, content: string, todo_id: integer, bucket_id: integer, starts_on?: string, description?: string, assignee_ids?: integer[], completion_subscriber_ids?: integer[] }
- `POST https://api.mcp.ai/api/basecamp/update/todolist` — Tool to update a to-do list's name or description in a Basecamp project. Use when you need to modify an existing to-do list's title or HTML description. Pass all existing parameters along with those b
  - body: { name: string, bucket_id: integer, description?: string, todolist_id: integer }
- `POST https://api.mcp.ai/api/basecamp/update/vault` — Tool to update a vault's title in a Basecamp project. Use when you need to rename a vault within a specific project bucket.
  - body: { title: string, vault_id: integer, bucket_id: integer }
- `POST https://api.mcp.ai/api/basecamp/validate/credential` — Validates Basecamp API credentials by verifying the OAuth token and retrieving authorization details. Returns user identity, token expiration, and accessible accounts. Use this action when you need to
- `POST https://api.mcp.ai/api/basecamp/watch/card/table/column` — Tool to start watching a card table column in a Basecamp project. Use when you need to subscribe to a specific column to receive notifications about changes.
  - body: { bucket_id: integer, column_id: integer }

## Example prompts
- "What can I do in Basecamp?"
- "Show me a summary of my Basecamp account"

## More
- Page: https://mcp.ai/basecamp
- Agent spec (llms.txt): https://mcp.ai/basecamp/llms.txt
- Postman collection: https://mcp.ai/basecamp/postman.json
