The Basecamp connector lets your AI agent act in each user's Basecamp account. Each user signs in to Basecamp once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 89 tools.
- Tools
- 89
- What they doRead · write · destructive
- 60 · 28 · 160 read28 write1 destructive
- Users sign in with
- OAuth
- OAuth app
- Your own Basecamp app
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Basecamp connection
In AgentKit > Connections, create a Basecamp connection and copy its redirect URI. The name you give it is the
connection_nameyour code passes. See Configure connections.Register an OAuth app
Basecamp connections use your own OAuth app. Register one with Basecamp and add the redirect URI you copied.
Then enter the app's Client ID and Client Secret on the Basecamp connection.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'basecamp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Basecamp:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'basecamp_account_get',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "basecamp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Basecamp:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="basecamp_account_get",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolbasecamp_account_getGet the Basecamp account this connection is set up for.Read-onlyGet Account
Get the Basecamp account this connection is set up for. Returns the account's id, name, owner and plan limits. Use basecamp_account_get to confirm which account the connection uses.
Inputs
This tool takes no inputs.
basecamp_answer_getGet one check-in answer by ID.Read-onlyGet Check-in Answer
Get one check-in answer by ID. Returns the answer's HTML content, author, date and parent question. Use basecamp_answer_get for a single answer. Use basecamp_answers_list for all answers to a question.
Inputs
answer_idintegerrequired- ID of the answer. Get it from basecamp_answers_list. Example: 1069479450.
basecamp_answers_listList the answers people gave to a check-in question.Read-onlyList Check-in Answers
List the answers people gave to a check-in question. Returns each answer's id, HTML content, author and the date it is grouped under. Use basecamp_answers_list to read check-in responses. Use basecamp_answer_get for one answer.
Inputs
question_idintegerrequired- ID of the question. Get it from basecamp_questions_list. Example: 1069479346.
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
basecamp_assignable_people_listList the people who can be assigned to-dos.Read-onlyList Assignable People
List the people who can be assigned to-dos. Returns each person's id, name and email address. Use basecamp_assignable_people_list to pick a person for basecamp_assigned_todos_get or for to-do assignments.
Inputs
This tool takes no inputs.
basecamp_assigned_todos_getGet the open to-dos assigned to one person across all projects.Read-onlyGet Assigned To-dos
Get the open to-dos assigned to one person across all projects. Returns the person and their to-dos, grouped by project or by date. Use basecamp_assigned_todos_get to see someone's workload. Use basecamp_my_assignments_get for the connected user.
Inputs
person_idintegerrequired- ID of the person. Get it from basecamp_assignable_people_list or basecamp_people_list. Example: 1049715913.
group_bystring- Group the to-dos by bucket (project) or by date.one of
bucketdate
basecamp_campfire_getGet one Campfire group chat by ID.Read-onlyGet Campfire
Get one Campfire group chat by ID. Returns the Campfire's title, project and the URL of its lines. Use basecamp_campfire_get for one chat's details. Use basecamp_campfire_lines_list for its messages.
Inputs
campfire_idintegerrequired- ID of the campfire. Get it from basecamp_campfires_list, or the project's dock entry named chat. Example: 1069479341.
basecamp_campfire_line_getGet one Campfire chat line by ID.Read-onlyGet Campfire Line
Get one Campfire chat line by ID. Returns the line's content, creator and timestamp. Use basecamp_campfire_line_get for a single line. Use basecamp_campfire_lines_list for the conversation.
Inputs
campfire_idintegerrequired- ID of the campfire. Get it from basecamp_campfires_list, or the project's dock entry named chat. Example: 1069479341.
line_idintegerrequired- ID of the line. Get it from basecamp_campfire_lines_list. Example: 1069479350.
basecamp_campfire_lines_listList the chat lines (messages) in a Campfire.Read-onlyList Campfire Lines
List the chat lines (messages) in a Campfire. Returns each line's id, content, creator and timestamp. Use basecamp_campfire_lines_list to read a chat. Use basecamp_campfire_line_create to post to it.
Inputs
campfire_idintegerrequired- ID of the campfire. Get it from basecamp_campfires_list, or the project's dock entry named chat. Example: 1069479341.
directionstring- Sort direction: asc (oldest first) or desc (newest first).one of
ascdesc pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
sortstring- Field to sort by: created_at or updated_at.one of
created_atupdated_at
basecamp_campfires_listList the Campfire group chats across every project the user can see.Read-onlyList Campfires
List the Campfire group chats across every project the user can see. Returns each Campfire's id, title, project and the URL of its lines. Use basecamp_campfires_list to find a chat. Use basecamp_campfire_lines_list to read its messages.
Inputs
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
basecamp_card_column_getGet one column of a card table.Read-onlyGet Card Column
Get one column of a card table. Returns the column's id, title, description, color and card count. Use basecamp_card_column_get for one column's details. Use basecamp_card_table_get to see every column.
Inputs
column_idintegerrequired- ID of the column. Get it from the lists array of basecamp_card_table_get. Example: 1069482092.
basecamp_card_getGet one card from a card table.Read-onlyGet Card
Get one card from a card table. Returns the card's title, content, assignees, due date, column, steps and completion state. Use basecamp_card_get to read a card and its steps. Use basecamp_cards_list to find card IDs.
Inputs
card_idintegerrequired- ID of the card. Get it from basecamp_cards_list. Example: 1069482295.
basecamp_card_table_getGet a project's card table (Kanban board) with its columns.Read-onlyGet Card Table
Get a project's card table (Kanban board) with its columns. Returns the card table and its lists array: each column's id, title, color and card count. Use basecamp_card_table_get to find column IDs. Use basecamp_cards_list to list the cards in one column.
Inputs
card_table_idintegerrequired- ID of the card table. Find it in the project's dock (the entry named kanban_board) from basecamp_project_get. Example: 1069482091.
basecamp_cards_listList the cards in one card table column.Read-onlyList Cards
List the cards in one card table column. Returns each card's id, title, content, assignees, due date, steps and completion state. Use basecamp_cards_list to see the work in a column. Use basecamp_card_get for one card.
Inputs
column_idintegerrequired- ID of the column. Get it from the lists array of basecamp_card_table_get. Example: 1069482092.
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
basecamp_comment_getGet one comment by ID.Read-onlyGet Comment
Get one comment by ID. Returns the comment's HTML content, creator, timestamps and parent item. Use basecamp_comment_get for a single comment. Use basecamp_comments_list for all comments on an item.
Inputs
comment_idintegerrequired- ID of the comment. Get it from basecamp_comments_list. Example: 1069479361.
basecamp_comments_listList the comments on a Basecamp item such as a message, to-do, document, card or schedule entry.Read-onlyList Comments
List the comments on a Basecamp item such as a message, to-do, document, card or schedule entry. Returns each comment's id, HTML content, creator and timestamps. Use basecamp_comments_list to read a discussion. Use basecamp_comment_create to reply.
Inputs
recording_idintegerrequired- ID of the recording. Any commentable item such as a to-do, message, document, card or schedule entry; use that item's id. Example: 1069479351.
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
basecamp_document_getGet one Basecamp document by ID.Read-onlyGet Document
Get one Basecamp document by ID. Returns the document's title, HTML content, status, creator and timestamps. Use basecamp_document_get to read a document in full, or before basecamp_document_update.
Inputs
document_idintegerrequired- ID of the document. Get it from basecamp_documents_list. Example: 1069479353.
basecamp_documents_listList the documents in a Docs & Files folder.Read-onlyList Documents
List the documents in a Docs & Files folder. Returns each document's id, title, HTML content, creator and timestamps. Use basecamp_documents_list to browse documents. Use basecamp_document_get for one document. Use basecamp_search to find documents by text.
Inputs
vault_idintegerrequired- ID of the folder. The project's top-level Docs & Files folder is the dock entry named vault in basecamp_project_get; subfolders come from basecamp_vaults_list. Example: 1069479340.
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
basecamp_message_board_getGet a project's message board.Read-onlyGet Message Board
Get a project's message board. Returns the board's id, title, message count and the URL of its messages. Use basecamp_message_board_get to check a board. Use basecamp_messages_list to read the messages on it.
Inputs
message_board_idintegerrequired- ID of the message board. Find it in the project's dock (the entry named message_board) from basecamp_project_get. Example: 1069479338.
basecamp_message_getGet one message by ID.Read-onlyGet Message
Get one message by ID. Returns the message's subject, HTML content, category, creator, status and timestamps. Use basecamp_message_get to read a message in full. Use basecamp_comments_list with the message ID to read its replies.
Inputs
message_idintegerrequired- ID of the message. Get it from basecamp_messages_list. Example: 1069479351.
basecamp_message_types_listList the message types (categories such as Announcement or FYI) available in a project.Read-onlyList Message Types
List the message types (categories such as Announcement or FYI) available in a project. Returns each type's id, name and icon. Use basecamp_message_types_list to get a category_id for basecamp_message_create or basecamp_message_update.
Inputs
project_idintegerrequired- ID of the project. Get it from basecamp_projects_list. Example: 2085958499.
basecamp_messages_listList the messages posted on a project's message board.Read-onlyList Messages
List the messages posted on a project's message board. Returns each message's id, subject, content, category, creator, comment count and timestamps. Use basecamp_messages_list to browse announcements and discussions. Use basecamp_message_get for one message. Use basecamp_search to find messages by text.
Inputs
message_board_idintegerrequired- ID of the message board. Find it in the project's dock (the entry named message_board) from basecamp_project_get. Example: 1069479338.
directionstring- Sort direction: asc (oldest first) or desc (newest first).one of
ascdesc pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
sortstring- Field to sort by: created_at or updated_at.one of
created_atupdated_at
basecamp_my_assignments_getGet the connected user's open assignments (to-dos and cards) across all projects.Read-onlyGet My Assignments
Get the connected user's open assignments (to-dos and cards) across all projects. Returns assignments grouped into priorities and non_priorities, with card steps nested under their cards. Use basecamp_my_assignments_get for the user's own work. Use basecamp_my_due_assignments_get to filter by due date. Use basecamp_assigned_todos_get for someone else's to-dos.
Inputs
This tool takes no inputs.
basecamp_my_completed_assignments_getGet the connected user's completed assignments.Read-onlyGet My Completed Assignments
Get the connected user's completed assignments. Returns completed to-dos and cards, leaving out archived and trashed ones. Use basecamp_my_completed_assignments_get to review finished work. Use basecamp_my_assignments_get for open work.
Inputs
This tool takes no inputs.
basecamp_my_due_assignments_getGet the connected user's assignments due in a given range, overdue ones by default.Read-onlyGet My Due Assignments
Get the connected user's assignments due in a given range, overdue ones by default. Returns the matching to-dos and cards with their due dates and projects. Use basecamp_my_due_assignments_get to see what is overdue or due soon. Use basecamp_my_assignments_get for every open assignment.
Inputs
scopestring- Which assignments to return: overdue (the default), due_today, due_tomorrow, due_later_this_week, due_next_week or due_later.one of
overduedue_todaydue_tomorrowdue_later_this_weekdue_next_weekdue_later
basecamp_my_notifications_getGet the connected user's notifications (the Hey!Read-onlyGet My Notifications
Get the connected user's notifications (the Hey! menu). Returns notifications grouped into unreads (up to 100), reads (50 per page) and bubble-ups. Use basecamp_my_notifications_get to see what needs the user's attention.
Inputs
limit_bubble_upsboolean- Set true to return at most 2 current bubble-ups and leave out scheduled ones.
pageinteger- Page of read notifications to fetch, starting at 1. Unreads are always included. Example: 2.
basecamp_my_profile_getGet the profile of the connected Basecamp user.Read-onlyGet My Profile
Get the profile of the connected Basecamp user. Returns the user's person id, name, email address, title, company and role flags. Use basecamp_my_profile_get to learn who is connected and get their person ID. Use basecamp_person_get for someone else.
Inputs
This tool takes no inputs.
basecamp_overdue_todos_getGet every overdue to-do in the account, grouped by how late it is.Read-onlyGet Overdue To-dos
Get every overdue to-do in the account, grouped by how late it is. Returns overdue to-dos with their assignees, due dates and projects. Use basecamp_overdue_todos_get for an account-wide overdue report. Use basecamp_my_due_assignments_get for the user's own overdue work.
Inputs
This tool takes no inputs.
basecamp_people_listList everyone in the Basecamp account that the user can see.Read-onlyList People
List everyone in the Basecamp account that the user can see. Returns each person's id, name, email address, title, company and admin, owner or client flags. Use basecamp_people_list to look up person IDs for assignments and subscriptions. Use basecamp_project_people_list for one project's members.
Inputs
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
basecamp_person_getGet one person in the Basecamp account by ID.Read-onlyGet Person
Get one person in the Basecamp account by ID. Returns the person's name, email address, title, bio, company, time zone and role flags. Use basecamp_person_get for one person's profile. Use basecamp_my_profile_get for the connected user.
Inputs
person_idintegerrequired- ID of the person. Get it from basecamp_people_list. Example: 1049715913.
basecamp_pingable_people_listList the people the user can start a private chat (Ping) with.Read-onlyList Pingable People
List the people the user can start a private chat (Ping) with. Returns each person's id, name, email address and company. Use basecamp_pingable_people_list to see who is reachable by Ping. Use basecamp_people_list for the whole account.
Inputs
This tool takes no inputs.
basecamp_progress_report_getGet the latest activity across every project in the account, newest first.Read-onlyGet Progress Report
Get the latest activity across every project in the account, newest first. Returns timeline events: what changed, who did it, when, and in which project. Use basecamp_progress_report_get for account-wide activity. Use basecamp_project_timeline_get for one project.
Inputs
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
basecamp_project_construction_getCheck the progress of a project being created from a template.Read-onlyGet Project Construction
Check the progress of a project being created from a template. Returns the construction's status (pending or completed) and, once completed, the new project. Use basecamp_project_construction_get after basecamp_project_from_template_create until the status is completed.
Inputs
construction_idintegerrequired- ID of the construction. Returned by basecamp_project_from_template_create. Example: 1069480000.
template_idintegerrequired- ID of the template. Get it from basecamp_templates_list. Example: 2085958500.
basecamp_project_getGet one Basecamp project by ID.Read-onlyGet Project
Get one Basecamp project by ID. Returns the project's name, description, status, timestamps and dock: the tools in the project with their IDs (todoset, message_board, schedule, kanban_board, vault, chat, questionnaire, inbox). Use basecamp_project_get to look up a project's tool IDs before working with its to-dos, messages, cards, schedule, docs or chat. Use basecamp_projects_list to find the project ID.
Inputs
project_idintegerrequired- ID of the project. Get it from basecamp_projects_list. Example: 2085958499.
basecamp_project_people_listList the active people on one Basecamp project.Read-onlyList Project People
List the active people on one Basecamp project. Returns each person's id, name, email address, title, company and admin or client flags. Use basecamp_project_people_list to find who can be assigned work in a project. Use basecamp_people_list for everyone in the account.
Inputs
project_idintegerrequired- ID of the project. Get it from basecamp_projects_list. Example: 2085958499.
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
basecamp_project_timeline_getGet the activity timeline of one Basecamp project, newest first.Read-onlyGet Project Timeline
Get the activity timeline of one Basecamp project, newest first. Returns timeline events: what changed (created, completed, commented and so on), who did it, when, and the item it happened to. Use basecamp_project_timeline_get to see recent activity in a project. Use basecamp_progress_report_get for activity across all projects.
Inputs
project_idintegerrequired- ID of the project. Get it from basecamp_projects_list. Example: 2085958499.
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
basecamp_projects_listList the Basecamp projects the user can see, active ones by default.Read-onlyList Projects
List the Basecamp projects the user can see, active ones by default. Returns each project's id, name, description, status, timestamps and dock (the IDs of its to-do set, message board, schedule, card table, docs folder and chat). Use basecamp_projects_list to browse or find a project. Use basecamp_project_get for one project by ID. Use basecamp_recent_projects_list for the user's recently visited projects.
Inputs
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
statusstring- Which projects to return: active (the default when empty), archived or trashed.one of
activearchivedtrashed
basecamp_question_getGet one automatic check-in question by ID.Read-onlyGet Check-in Question
Get one automatic check-in question by ID. Returns the question's title, schedule (days and time), paused state and answer count. Use basecamp_question_get for one question's settings. Use basecamp_answers_list for its answers.
Inputs
question_idintegerrequired- ID of the question. Get it from basecamp_questions_list. Example: 1069479346.
basecamp_questionnaire_getGet a project's automatic check-ins container (questionnaire).Read-onlyGet Check-ins
Get a project's automatic check-ins container (questionnaire). Returns the questionnaire's id, title, question count and the URL of its questions. Use basecamp_questionnaire_get to check a project's check-ins. Use basecamp_questions_list to list the questions.
Inputs
questionnaire_idintegerrequired- ID of the questionnaire. Find it in the project's dock (the entry named questionnaire) from basecamp_project_get. Example: 1069479343.
basecamp_questions_listList the automatic check-in questions in a questionnaire.Read-onlyList Check-in Questions
List the automatic check-in questions in a questionnaire. Returns each question's id, title, schedule, paused state and answer count. Use basecamp_questions_list to find a check-in question. Use basecamp_answers_list to read its answers.
Inputs
questionnaire_idintegerrequired- ID of the questionnaire. Find it in the project's dock (the entry named questionnaire) from basecamp_project_get. Example: 1069479343.
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
basecamp_recent_projects_listList the projects the user visited most recently, newest visit first.Read-onlyList Recent Projects
List the projects the user visited most recently, newest visit first. Returns up to 50 active projects with the usual project fields plus a bookmarked flag. Use basecamp_recent_projects_list to find what the user is working on now. Use basecamp_projects_list to see every project.
Inputs
This tool takes no inputs.
basecamp_recording_events_listList the change history of one Basecamp item, such as a to-do, message, document or card.Read-onlyList Item History
List the change history of one Basecamp item, such as a to-do, message, document or card. Returns each event's action (created, completed, assignment_changed and so on), the person who did it, the details and the time. Use basecamp_recording_events_list to see who changed an item and when. Use basecamp_project_timeline_get for a whole project.
Inputs
recording_idintegerrequired- ID of the item. The id of the to-do, message, document, card or other item. Example: 1069479521.
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
basecamp_recordings_listList every item of one type across projects, such as all to-dos, messages, documents or comments.Read-onlyList Recordings
List every item of one type across projects, such as all to-dos, messages, documents or comments. Returns the items with their id, type, title, status, project, creator and timestamps. Use basecamp_recordings_list to list or sort items of one type across projects. Use basecamp_search to find items by text.
Inputs
typestringrequired- Item type to list: Comment, Document, Kanban::Card, Kanban::Step, Message, Question::Answer, Schedule::Entry, Todo, Todolist, Upload or Vault.one of
CommentDocumentKanban::CardKanban::StepMessageQuestion::AnswerSchedule::EntryTodoTodolistUploadVault bucketstring- Limit to these projects: one project ID or a comma-separated list. Leave empty for all active projects. Example: 2085958499,2085958500.
directionstring- Sort direction: asc (oldest first) or desc (newest first).one of
ascdesc pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
sortstring- Field to sort by: created_at or updated_at.one of
created_atupdated_at statusstring- Which items to return: active (the default when empty), archived or trashed.one of
activearchivedtrashed
basecamp_schedule_entries_listList the events on a project's schedule.Read-onlyList Schedule Entries
List the events on a project's schedule. Returns each entry's id, summary, description, start and end, all-day flag and participants. Use basecamp_schedule_entries_list for one project's events. Use basecamp_upcoming_schedule_get for upcoming events across all projects.
Inputs
schedule_idintegerrequired- ID of the schedule. Find it in the project's dock (the entry named schedule) from basecamp_project_get. Example: 1069479342.
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
statusstring- Which entries to return: active (the default when empty), archived or trashed.one of
activearchivedtrashed
basecamp_schedule_entry_getGet one schedule entry (event) by ID.Read-onlyGet Schedule Entry
Get one schedule entry (event) by ID. Returns the entry's summary, description, start and end, all-day flag, join link and participants. A recurring entry answers with a redirect to its own URL instead. Use basecamp_schedule_entry_get before basecamp_schedule_entry_update to read the values to keep.
Inputs
schedule_entry_idintegerrequired- ID of the schedule entry. Get it from basecamp_schedule_entries_list. Example: 1069479847.
basecamp_schedule_getGet a project's schedule (calendar).Read-onlyGet Schedule
Get a project's schedule (calendar). Returns the schedule's id, title, entry count and the URL of its entries. Use basecamp_schedule_get to check a schedule. Use basecamp_schedule_entries_list to list its events.
Inputs
schedule_idintegerrequired- ID of the schedule. Find it in the project's dock (the entry named schedule) from basecamp_project_get. Example: 1069479342.
basecamp_searchSearch Basecamp content across the account by text: messages, to-dos, documents, comments, files, chats and more.Read-onlySearch
Search Basecamp content across the account by text: messages, to-dos, documents, comments, files, chats and more. Returns matching items with their id, type, title, project and URL. Use basecamp_search to find items by keyword. Use basecamp_search_metadata_get first to get valid type and file type filter values. Use basecamp_recordings_list to list every item of one type without a query.
Inputs
qstringrequired- Text to search for. Example: launch plan.
creator_idsarray- Only return items created by these people. Get person IDs from basecamp_people_list or basecamp_project_people_list. Example: [1049715913].
exclude_chatboolean- Set true to leave Campfire and Ping chat lines out of the results.
file_typestring- Limit attachment results to one file type, using a key from file_search_types in basecamp_search_metadata_get.
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
project_idsarray- Only return results from these projects. Get project IDs from basecamp_projects_list. Example: [2085958499].
sincestring- Time range to search: last_7_days, last_30_days, last_90_days, last_12_months or forever (the default).one of
last_7_dayslast_30_dayslast_90_dayslast_12_monthsforever sortstring- best_match ranks by relevance (the default); recency puts the newest first.one of
best_matchrecency type_namesarray- Item types to include, using the key values from recording_search_types in basecamp_search_metadata_get. Example: ["Message", "Todo"].
basecamp_search_metadata_getGet the filter values that basecamp_search accepts.Read-onlyGet Search Filters
Get the filter values that basecamp_search accepts. Returns the available item types (recording_search_types) and attachment types (file_search_types), each with a key and a display name. Use basecamp_search_metadata_get before basecamp_search to pick valid type_names and file_type values.
Inputs
This tool takes no inputs.
basecamp_template_getGet one project template by ID.Read-onlyGet Project Template
Get one project template by ID. Returns the template's name, description and dock of tools. Use basecamp_template_get to inspect a template before creating a project from it.
Inputs
template_idintegerrequired- ID of the template. Get it from basecamp_templates_list. Example: 2085958500.
basecamp_templates_listList the project templates in the account.Read-onlyList Project Templates
List the project templates in the account. Returns each template's id, name, description and dock of tools. Use basecamp_templates_list to find a template for basecamp_project_from_template_create.
Inputs
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
statusstring- Which templates to return: active (the default when empty), archived or trashed.one of
activearchivedtrashed
basecamp_todo_getGet one to-do by ID.Read-onlyGet To-do
Get one to-do by ID. Returns the to-do's content, description, assignees, completion subscribers, start and due dates, completion state and parent list. Use basecamp_todo_get before basecamp_todo_update to read the values you need to keep. Use basecamp_todos_list to find to-do IDs.
Inputs
todo_idintegerrequired- ID of the to-do. Get it from basecamp_todos_list. Example: 1069479521.
basecamp_todolist_getGet one to-do list (or to-do list group) by ID.Read-onlyGet To-do List
Get one to-do list (or to-do list group) by ID. Returns the list's name, description, completion ratio and parent to-do set. Use basecamp_todolist_get for one list's details. Use basecamp_todolists_list to find lists in a project.
Inputs
todolist_idintegerrequired- ID of the to-do list. Get it from basecamp_todolists_list or basecamp_todolist_groups_list. Example: 1069479520.
basecamp_todolist_groups_listList the groups inside a to-do list.Read-onlyList To-do List Groups
List the groups inside a to-do list. Returns each group's id, name and completion ratio. Groups are sections that split a long list. Use basecamp_todolist_groups_list to find a group ID. Pass a group ID to basecamp_todos_list or basecamp_todo_create to work with that group's to-dos.
Inputs
todolist_idintegerrequired- ID of the to-do list. Get it from basecamp_todolists_list. Example: 1069479520.
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
basecamp_todolists_listList the to-do lists in a project's to-do set.Read-onlyList To-do Lists
List the to-do lists in a project's to-do set. Returns each list's id, name, description, completion ratio and creator. Use basecamp_todolists_list to find a to-do list. Use basecamp_todos_list to list the to-dos inside one list.
Inputs
todoset_idintegerrequired- ID of the to-do set. Find it in the project's dock (the entry named todoset) from basecamp_project_get. Example: 1069479339.
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
statusstring- Which to-do lists to return: active (the default when empty), archived or trashed.one of
activearchivedtrashed
basecamp_todos_listList the to-dos in one to-do list or to-do list group.Read-onlyList To-dos
List the to-dos in one to-do list or to-do list group. Returns each to-do's id, content, description, assignees, due date and completion state. Pending to-dos are returned unless completed is true. Use basecamp_todos_list to see the to-dos in a list. Use basecamp_todo_get for one to-do. Use basecamp_my_assignments_get for the user's own to-dos across projects.
Inputs
todolist_idintegerrequired- ID of the to-do list. Get it from basecamp_todolists_list, or use a group ID from basecamp_todolist_groups_list. Example: 1069479520.
completedboolean- Set true to return completed to-dos instead of pending ones.
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
statusstring- Which to-dos to return: active (the default when empty), archived or trashed.one of
activearchivedtrashed
basecamp_todoset_getGet a project's to-do set, the container that holds all of its to-do lists.Read-onlyGet To-do Set
Get a project's to-do set, the container that holds all of its to-do lists. Returns the to-do set's id, name, completion ratio and the URL of its to-do lists. Use basecamp_todoset_get to check overall to-do progress. Use basecamp_todolists_list to list the to-do lists inside it.
Inputs
todoset_idintegerrequired- ID of the to-do set. Find it in the project's dock (the entry named todoset) from basecamp_project_get. Example: 1069479339.
basecamp_upcoming_schedule_getGet the events and dated assignments across all projects within a date window.Read-onlyGet Upcoming Schedule
Get the events and dated assignments across all projects within a date window. Returns schedule entries and dated to-dos and cards that fall between the two dates. Use basecamp_upcoming_schedule_get for an account-wide calendar view. Use basecamp_schedule_entries_list for one project's schedule.
Inputs
window_ends_onstringrequired- Last day of the window, inclusive. Date as YYYY-MM-DD. Example: 2026-10-31.
window_starts_onstringrequired- First day of the window, inclusive. Date as YYYY-MM-DD. Example: 2026-10-01.
basecamp_upload_getGet one uploaded file's details by ID.Read-onlyGet Upload
Get one uploaded file's details by ID. Returns the file's name, content type, size, description, creator and download URL. Use basecamp_upload_get for a file's metadata and download link. Use basecamp_uploads_list to find file IDs.
Inputs
upload_idintegerrequired- ID of the upload. Get it from basecamp_uploads_list. Example: 1069479848.
basecamp_uploads_listList the uploaded files in a Docs & Files folder.Read-onlyList Uploads
List the uploaded files in a Docs & Files folder. Returns each file's id, filename, content type, size, description and download URL. Use basecamp_uploads_list to find files. Use basecamp_upload_get for one file.
Inputs
vault_idintegerrequired- ID of the folder. The project's top-level Docs & Files folder is the dock entry named vault in basecamp_project_get; subfolders come from basecamp_vaults_list. Example: 1069479340.
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
basecamp_vault_getGet a Docs & Files folder (vault) by ID.Read-onlyGet Folder
Get a Docs & Files folder (vault) by ID. Returns the folder's title and counts of its documents, uploads and subfolders. Use basecamp_vault_get to check a folder. Use basecamp_documents_list, basecamp_uploads_list or basecamp_vaults_list to list what is inside.
Inputs
vault_idintegerrequired- ID of the folder. The project's top-level Docs & Files folder is the dock entry named vault in basecamp_project_get; subfolders come from basecamp_vaults_list. Example: 1069479340.
basecamp_vaults_listList the subfolders inside a Docs & Files folder.Read-onlyList Folders
List the subfolders inside a Docs & Files folder. Returns each subfolder's id, title and content counts. Use basecamp_vaults_list to walk the folder tree. Use basecamp_documents_list for documents in a folder.
Inputs
vault_idintegerrequired- ID of the folder. The project's top-level Docs & Files folder is the dock entry named vault in basecamp_project_get; subfolders come from basecamp_vaults_list. Example: 1069479340.
pageinteger- Page number to fetch, starting at 1. Basecamp pages hold up to 50 items. Request the next page until a page comes back empty. Example: 2.
basecamp_campfire_line_createPost a chat line to a Campfire.WritePost Campfire Line
Post a chat line to a Campfire. Returns the new line with its id. Use basecamp_campfire_line_create for a quick chat message. Use basecamp_message_create for a message-board post.
Inputs
campfire_idintegerrequired- ID of the campfire. Get it from basecamp_campfires_list, or the project's dock entry named chat. Example: 1069479341.
contentstringrequired- Text of the chat line. Plain text by default; set content_type to text/html to send HTML. Example: Good morning.
content_typestring- Leave empty for plain text, or set text/html when content contains HTML.one of
text/html
basecamp_card_column_createAdd a column to a card table.WriteCreate Card Column
Add a column to a card table. Returns the new column with its id. Use basecamp_card_column_create to add a workflow stage. Use basecamp_card_column_update to rename one.
Inputs
card_table_idintegerrequired- ID of the card table. Find it in the project's dock (the entry named kanban_board) from basecamp_project_get. Example: 1069482091.
titlestringrequired- Name of the column. Example: In progress.
descriptionstring- Optional column description. Example: Stuff we are doing right now.
basecamp_card_column_updateRename a card table column or change its description.WriteUpdate Card Column
Rename a card table column or change its description. Returns the updated column. Use basecamp_card_column_update to edit a column. Use basecamp_card_column_create to add one.
- Idempotent
Inputs
column_idintegerrequired- ID of the column. Get it from the lists array of basecamp_card_table_get. Example: 1069482092.
descriptionstring- New column description.
titlestring- New column name. Example: On it.
basecamp_card_createCreate a card in a card table column.WriteCreate Card
Create a card in a card table column. Returns the new card with its id. Use basecamp_card_create to add work to a Kanban board. Use basecamp_card_update afterwards to assign people. Use basecamp_todo_create for a to-do list item instead.
Inputs
column_idintegerrequired- ID of the column. Get it from the lists array of basecamp_card_table_get. Example: 1069482092.
titlestringrequired- Title of the card. Example: Investigation.
contentstring- Card details. Basecamp rich text: HTML using tags such as div, strong, em, a, ul, ol, li and br.
due_onstring- Due date. Date as YYYY-MM-DD. Example: 2026-01-01.
notifyboolean- Set true to notify people about the new card.
basecamp_card_moveMove a card to another column of its card table.WriteMove Card
Move a card to another column of its card table. Returns no content on success (HTTP 204). Use basecamp_card_move to change a card's stage, for example from In progress to Done. Use basecamp_card_table_get to find the target column ID.
Inputs
card_idintegerrequired- ID of the card. Get it from basecamp_cards_list. Example: 1069482295.
column_idintegerrequired- ID of the column to move the card to. Get it from the lists array of basecamp_card_table_get. Example: 1069482093.
positioninteger- 1-based position in the target column. Defaults to 1 (top). Example: 1.
basecamp_card_step_completion_setMark a card step as completed or not completed.WriteSet Card Step Completion
Mark a card step as completed or not completed. Returns the updated step. Use basecamp_card_step_completion_set to tick off or reopen a step. Use basecamp_card_step_update to change its title or dates.
- Idempotent
Inputs
completedbooleanrequired- true marks the step completed; false marks it not completed.
step_idintegerrequired- ID of the step. Get it from the steps array of basecamp_card_get. Example: 1069482296.
basecamp_card_step_createAdd a step (a checklist item) to a card.WriteCreate Card Step
Add a step (a checklist item) to a card. Returns the new step with its id. Use basecamp_card_step_create to break a card into steps. Use basecamp_card_step_completion_set to tick a step off.
Inputs
card_idintegerrequired- ID of the card. Get it from basecamp_cards_list. Example: 1069482295.
titlestringrequired- What the step is. Example: Inspiration.
assignee_idsarray- People to assign the step to. Get person IDs from basecamp_people_list or basecamp_project_people_list. Example: [1049715913, 1049715914].
due_onstring- Due date. Date as YYYY-MM-DD. Example: 2026-01-01.
basecamp_card_step_updateUpdate a card step's title, due date or assignees.WriteUpdate Card Step
Update a card step's title, due date or assignees. Returns the updated step. Use basecamp_card_step_update to edit a step; fields you leave empty stay unchanged. Use basecamp_card_step_completion_set to complete it.
- Idempotent
Inputs
step_idintegerrequired- ID of the step. Get it from the steps array of basecamp_card_get. Example: 1069482296.
assignee_idsarray- People to assign. Replaces the current assignees. Get person IDs from basecamp_people_list or basecamp_project_people_list. Example: [1049715913, 1049715914].
due_onstring- New due date. Date as YYYY-MM-DD.
titlestring- New title. Example: Updated inspiration.
basecamp_card_updateUpdate a card's title, content, due date or assignees.WriteUpdate Card
Update a card's title, content, due date or assignees. Returns the updated card. Use basecamp_card_update to edit or assign a card; fields you leave empty stay unchanged. Use basecamp_card_move to move it to another column.
- Idempotent
Inputs
card_idintegerrequired- ID of the card. Get it from basecamp_cards_list. Example: 1069482295.
assignee_idsarray- People to assign. Replaces the current assignees. Get person IDs from basecamp_people_list or basecamp_project_people_list. Example: [1049715913, 1049715914].
contentstring- New details. Basecamp rich text: HTML using tags such as div, strong, em, a, ul, ol, li and br.
due_onstring- New due date. Date as YYYY-MM-DD. Example: 2026-05-01.
titlestring- New title. Example: Updated investigation.
basecamp_comment_createAdd a comment to a Basecamp item such as a message, to-do, document, card or schedule entry.WriteCreate Comment
Add a comment to a Basecamp item such as a message, to-do, document, card or schedule entry. Returns the new comment with its id. Use basecamp_comment_create to reply on an item. Use basecamp_message_create to start a new message thread.
Inputs
contentstringrequired- Comment text. Basecamp rich text: HTML using tags such as div, strong, em, a, ul, ol, li and br. Example: <div><em>Wow!</em> That is cool.</div>.
recording_idintegerrequired- ID of the recording. Any commentable item such as a to-do, message, document, card or schedule entry; use that item's id. Example: 1069479351.
basecamp_comment_updateChange the text of an existing comment.WriteUpdate Comment
Change the text of an existing comment. Returns the updated comment. Use basecamp_comment_update to edit a comment. Use basecamp_comment_create to add a new one.
- Idempotent
Inputs
comment_idintegerrequired- ID of the comment. Get it from basecamp_comments_list. Example: 1069479361.
contentstringrequired- New comment text. Basecamp rich text: HTML using tags such as div, strong, em, a, ul, ol, li and br. Example: <div>Updated: that is cool.</div>.
basecamp_document_createCreate a document in a Docs & Files folder.WriteCreate Document
Create a document in a Docs & Files folder. Returns the new document with its id. Use basecamp_document_create for long-form content. Use basecamp_message_create for an announcement that notifies people.
Inputs
titlestringrequired- Title of the document. Example: New Hire Info.
vault_idintegerrequired- ID of the folder. The project's top-level Docs & Files folder is the dock entry named vault in basecamp_project_get; subfolders come from basecamp_vaults_list. Example: 1069479340.
contentstring- Body of the document. Basecamp rich text: HTML using tags such as div, strong, em, a, ul, ol, li and br.
statusstring- active publishes the document; drafted saves it unpublished. Defaults to active.one of
activedrafteddefaultactive subscriptionsarray- People to subscribe and notify. Get person IDs from basecamp_people_list or basecamp_project_people_list. Example: [1049715913, 1049715914].
visible_to_clientsboolean- Set true to show the document to clients on a project that has client access.
basecamp_document_updateReplace a document's title and content.WriteUpdate Document
Replace a document's title and content. Returns the updated document. Use basecamp_document_update to edit a document. This replaces it: an empty title or content is cleared (an empty title reads back as Untitled), so send both, using basecamp_document_get for the current values.
- Idempotent
Inputs
document_idintegerrequired- ID of the document. Get it from basecamp_documents_list. Example: 1069479353.
contentstring- Document body. Leaving it empty clears it. Basecamp rich text: HTML using tags such as div, strong, em, a, ul, ol, li and br.
titlestring- Document title. Leaving it empty clears it. Example: New Hire Information.
basecamp_message_createPost a message to a project's message board.WriteCreate Message
Post a message to a project's message board. Returns the new message with its id. Use basecamp_message_create for an announcement or discussion thread. Use basecamp_comment_create to reply to an existing message. Use basecamp_campfire_line_create for a quick chat line.
Inputs
message_board_idintegerrequired- ID of the message board. Find it in the project's dock (the entry named message_board) from basecamp_project_get. Example: 1069479338.
subjectstringrequired- Title of the message. Example: Kickoff.
category_idinteger- Optional message type (category) ID from basecamp_message_types_list. Example: 1069479380.
contentstring- Body of the message. Basecamp rich text: HTML using tags such as div, strong, em, a, ul, ol, li and br. Example: <div><strong>Welcome to Basecamp, everyone.</strong></div>.
statusstring- active publishes the message now and notifies subscribers; drafted saves it as an unpublished draft. Defaults to active.one of
activedrafteddefaultactive subscriptionsarray- People to subscribe and notify. Leave empty to subscribe everyone on the project. Get person IDs from basecamp_people_list or basecamp_project_people_list. Example: [1049715913, 1049715914].
visible_to_clientsboolean- Set true to show the message to clients on a project that has client access.
basecamp_message_updateUpdate a message's subject, content, status or message type.WriteUpdate Message
Update a message's subject, content, status or message type. Returns the updated message. Use basecamp_message_update to edit a message or publish a draft (status active). Send only the fields to change.
- Idempotent
Inputs
message_idintegerrequired- ID of the message. Get it from basecamp_messages_list. Example: 1069479351.
category_idinteger- New message type (category) ID from basecamp_message_types_list. Example: 1069479380.
contentstring- New body. Basecamp rich text: HTML using tags such as div, strong, em, a, ul, ol, li and br.
statusstring- Set active to publish a draft.one of
activedrafted subjectstring- New subject. Example: Spin-down.
basecamp_project_createCreate a new Basecamp project.WriteCreate Project
Create a new Basecamp project. Returns the new project, including its id and dock of tool IDs. Use basecamp_project_create to start an empty project. Use basecamp_project_from_template_create to start one from a template.
Inputs
namestringrequired- Name of the new project. Example: Marketing Campaign.
descriptionstring- Short description shown under the project name. Example: For Client: Xyz Corp Conference.
basecamp_project_from_template_createStart creating a new project from a project template.WriteCreate Project from Template
Start creating a new project from a project template. Basecamp builds it in the background. Returns a project construction with its id and status (pending until the project is ready). Use basecamp_project_from_template_create to copy a template. Then poll basecamp_project_construction_get until the status is completed to get the new project.
Inputs
projectobjectrequired- New project details as an object: name (required), description, and start_date (YYYY-MM-DD) to shift the template's dates. Example: {"name": "Marketing Campaign", "description": "For Client: Xyz Corp Conference"}.
template_idintegerrequired- ID of the template. Get it from basecamp_templates_list. Example: 2085958500.
basecamp_project_updateUpdate a Basecamp project's name, description, access policy or start and end dates.WriteUpdate Project
Update a Basecamp project's name, description, access policy or start and end dates. Returns the updated project. Use basecamp_project_update to rename or reconfigure a project. The name is always required; send the current name to keep it. Use basecamp_project_get to read the current values.
- Idempotent
Inputs
namestringrequired- Project name. Required even if it isn't changing; send the current name to keep it. Example: Marketing Campaign for Xyz Corp.
project_idintegerrequired- ID of the project. Get it from basecamp_projects_list. Example: 2085958499.
admissionsstring- Who in the account can join the project: invite (only people added to it), employee (team members from the account's own company) or team (any team member except clients).one of
inviteemployeeteam descriptionstring- Project description. Example: 2016-2017 Strategy.
schedule_attributesobject- Project start and end dates as an object with start_date and end_date (YYYY-MM-DD). Send both dates together. Example: {"start_date": "2026-01-01", "end_date": "2026-04-01"}.
basecamp_schedule_entry_createCreate an event on a project's schedule.WriteCreate Schedule Entry
Create an event on a project's schedule. Returns the new schedule entry with its id. Use basecamp_schedule_entry_create to add a meeting, deadline or other event. Use basecamp_todo_create for a task with a due date instead.
Inputs
ends_atstringrequired- End as an ISO 8601 timestamp, or a date for an all-day event. Same form as starts_at.
schedule_idintegerrequired- ID of the schedule. Find it in the project's dock (the entry named schedule) from basecamp_project_get. Example: 1069479342.
starts_atstringrequired- Start as an ISO 8601 timestamp (2026-06-04T09:00:00Z), or a date (2026-06-04) for an all-day event.
summarystringrequired- Title of the event. Example: Important Meeting.
all_dayboolean- Set true for an all-day event; then pass dates, not timestamps, in starts_at and ends_at.
descriptionstring- Event details. Basecamp rich text: HTML using tags such as div, strong, em, a, ul, ol, li and br.
notifyboolean- Set true to notify the participants.
participant_idsarray- People taking part in the event. Get person IDs from basecamp_people_list or basecamp_project_people_list. Example: [1049715913, 1049715914].
statusstring- active publishes the entry (the default); drafted saves it unpublished.one of
activedrafted subscriptionsarray- People to subscribe to the entry's notifications. Get person IDs from basecamp_people_list or basecamp_project_people_list. Example: [1049715913, 1049715914].
urlstring- Video-call or other link for the event. Example: https://meet.example.com/abc-defg-hij.
visible_to_clientsboolean- Set true to show the entry to clients on a project that has client access.
basecamp_schedule_entry_updateReplace a schedule entry's summary, description, times and settings.WriteUpdate Schedule Entry
Replace a schedule entry's summary, description, times and settings. Returns the updated schedule entry. Use basecamp_schedule_entry_update to reschedule or edit an event. This replaces the entry: an empty summary or description is cleared and an empty all_day resets to false, while participants, join link and highlight are kept when left empty. Read the entry with basecamp_schedule_entry_get first.
- Idempotent
Inputs
ends_atstringrequired- End as an ISO 8601 timestamp, or a date for an all-day event. Required.
schedule_entry_idintegerrequired- ID of the schedule entry. Get it from basecamp_schedule_entries_list. Example: 1069479847.
starts_atstringrequired- Start as an ISO 8601 timestamp, or a date (2026-06-04) for an all-day event. Required.
all_dayboolean- true for an all-day event. Send the current value: leaving it empty resets it to false.
descriptionstring- Event details. Leaving it empty clears them. Basecamp rich text: HTML using tags such as div, strong, em, a, ul, ol, li and br.
highlightedboolean- true highlights the entry on the schedule; false removes the highlight. Leave empty to keep it as is.
notifyboolean- Set true to notify the participants about the change.
participant_idsarray- People taking part. Leave empty to keep the current participants. Get person IDs from basecamp_people_list or basecamp_project_people_list. Example: [1049715913, 1049715914].
summarystring- Title of the event. Leaving it empty clears it, so send the current title to keep it.
urlstring- Video-call or other link. Leave empty to keep the current link.
basecamp_todo_completeMark a to-do as completed.WriteComplete To-do
Mark a to-do as completed. Returns no content on success (HTTP 204). Use basecamp_todo_complete to tick off a to-do. Use basecamp_todo_uncomplete to reopen it.
Inputs
todo_idintegerrequired- ID of the to-do. Get it from basecamp_todos_list. Example: 1069479521.
basecamp_todo_createCreate a to-do in a to-do list or to-do list group.WriteCreate To-do
Create a to-do in a to-do list or to-do list group. Returns the new to-do with its id. Use basecamp_todo_create to add a task. Use basecamp_card_create for a card on a card table instead.
Inputs
contentstringrequired- What the to-do is for, as plain text. Example: Program it.
todolist_idintegerrequired- ID of the to-do list. Get it from basecamp_todolists_list, or use a group ID from basecamp_todolist_groups_list. Example: 1069479520.
assignee_idsarray- People to assign the to-do to. Get person IDs from basecamp_people_list or basecamp_project_people_list. Example: [1049715913, 1049715914].
completion_subscriber_idsarray- People to notify when the to-do is completed. Get person IDs from basecamp_people_list or basecamp_project_people_list. Example: [1049715913, 1049715914].
descriptionstring- Extra details. Basecamp rich text: HTML using tags such as div, strong, em, a, ul, ol, li and br. Example: <div><em>Try that new language!</em></div>.
due_onstring- Due date. Date as YYYY-MM-DD. Example: 2026-05-01.
notifyboolean- Set true to notify the assignees that they were assigned.
starts_onstring- Start date, which makes the to-do span a date range. Date as YYYY-MM-DD. Example: 2026-04-20.
basecamp_todo_updateReplace a to-do's content, description, assignees and dates.WriteUpdate To-do
Replace a to-do's content, description, assignees and dates. Returns the updated to-do. Use basecamp_todo_update to edit a to-do. This replaces the to-do: every optional field you leave empty is cleared (description, assignees, subscribers, dates), so read the to-do with basecamp_todo_get first and send back the values to keep. Use basecamp_todo_complete to tick it off.
- Idempotent
Inputs
contentstringrequired- What the to-do is for. Required, even if unchanged. Example: Program it.
todo_idintegerrequired- ID of the to-do. Get it from basecamp_todos_list. Example: 1069479521.
assignee_idsarray- People assigned to the to-do. Leaving it empty removes every assignee. Get person IDs from basecamp_people_list or basecamp_project_people_list. Example: [1049715913, 1049715914].
completion_subscriber_idsarray- People notified on completion. Leaving it empty removes them. Get person IDs from basecamp_people_list or basecamp_project_people_list. Example: [1049715913, 1049715914].
descriptionstring- Details. Leaving it empty clears the current description. Basecamp rich text: HTML using tags such as div, strong, em, a, ul, ol, li and br.
due_onstring- Due date. Leaving it empty clears it. Date as YYYY-MM-DD. Example: 2026-05-01.
notifyboolean- Set true to notify newly assigned people.
starts_onstring- Start date. Leaving it empty clears it. Date as YYYY-MM-DD. Example: 2026-04-20.
basecamp_todolist_createCreate a to-do list in a project's to-do set.WriteCreate To-do List
Create a to-do list in a project's to-do set. Returns the new to-do list with its id. Use basecamp_todolist_create to add a list. Use basecamp_todo_create to add to-dos to an existing list.
Inputs
namestringrequired- Name of the to-do list. Example: Launch.
todoset_idintegerrequired- ID of the to-do set. Find it in the project's dock (the entry named todoset) from basecamp_project_get. Example: 1069479339.
descriptionstring- Optional description. Basecamp rich text: HTML using tags such as div, strong, em, a, ul, ol, li and br. Example: <div><em>Finish it!</em></div>.
visible_to_clientsboolean- Set true to show the list to clients on a project that has client access.
basecamp_todolist_group_createCreate a group (a named section) inside a to-do list.WriteCreate To-do List Group
Create a group (a named section) inside a to-do list. Returns the new group with its id. Use basecamp_todolist_group_create to split a list into sections. Use basecamp_todo_create with the group ID to add to-dos to it.
Inputs
namestringrequired- Name of the group. Example: Design tasks.
todolist_idintegerrequired- ID of the to-do list. Get it from basecamp_todolists_list. Example: 1069479520.
basecamp_todolist_updateReplace a to-do list's name and description.WriteUpdate To-do List
Replace a to-do list's name and description. Returns the updated to-do list. Use basecamp_todolist_update to rename a list or change its description. This replaces the list: leaving description empty clears it, so read the current values with basecamp_todolist_get and send back what you want to keep.
- Idempotent
Inputs
namestringrequired- New name of the to-do list. Required. Example: Relaunch.
todolist_idintegerrequired- ID of the to-do list. Get it from basecamp_todolists_list. Example: 1069479520.
descriptionstring- Description. Leaving it empty clears the current description. Basecamp rich text: HTML using tags such as div, strong, em, a, ul, ol, li and br. Example: <div><strong>Try this again.</strong></div>.
basecamp_vault_createCreate a subfolder inside a Docs & Files folder.WriteCreate Folder
Create a subfolder inside a Docs & Files folder. Returns the new folder with its id. Use basecamp_vault_create to organize documents. Use basecamp_document_create to add a document.
Inputs
titlestringrequired- Name of the new folder. Example: Materials.
vault_idintegerrequired- ID of the parent folder. The project's top-level folder is the dock entry named vault in basecamp_project_get. Example: 1069479340.
basecamp_vault_updateRename a Docs & Files folder.WriteRename Folder
Rename a Docs & Files folder. Returns the updated folder. Use basecamp_vault_update to rename a folder. Use basecamp_vault_create to make a new one.
- Idempotent
Inputs
titlestringrequired- New folder name. Example: Important Materials.
vault_idintegerrequired- ID of the folder. The project's top-level Docs & Files folder is the dock entry named vault in basecamp_project_get; subfolders come from basecamp_vaults_list. Example: 1069479340.
basecamp_todo_uncompleteMark a completed to-do as not completed.DestructiveUncomplete To-do
Mark a completed to-do as not completed. Returns no content on success (HTTP 204). Use basecamp_todo_uncomplete to reopen a to-do. Use basecamp_todo_complete to complete it.
- Idempotent
Inputs
todo_idintegerrequired- ID of the to-do. Get it from basecamp_todos_list. Example: 1069479521.
No tools match.