Connectors · Work & projects
Basecamp MCP server for AI agents.
actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Basecamp and the rest of your systems. It gives your agent 262 Basecamp actions (130 reads, 108 writes and 24 that wait for a confirmation) and holds the Basecamp credential itself, so the agent never does. It paces Basecamp's limits and records every call. Connecting Basecamp needs your own Basecamp OAuth app and one admin sign-in.
100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.
claude mcp add --transport http actionlake https://connect.actionlake.com/mcpdo { action: "basecamp.account.get_account", intent: "check which Basecamp account is connected"}# Get Account · read · 1 upstream call- 262actionsin one signed file
- 130readlook, never change
- 108writecreate and update
- 24wait for a yesdestructive, confirmed first
Set up
Connect Basecamp in three steps.
- 01
Add actionlake to Claude.
Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
https://connect.actionlake.com/mcp - 02
Connect Basecamp.
OAuth 2.0, authorization code. You register your own OAuth app with Basecamp, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on. actionlake stores what you paste write-only, sealed under your tenant's key.
Before the first sign-in, Basecamp needs an OAuth app of your own, registered in its developer portal. actionlake has no Basecamp app to lend you.
access_tokenAccess token from one sign-in with your own OAuth apprefresh_tokenRefresh token from the same sign-in; the access token is renewed from itclient_idBasecamp OAuth client ID (from launchpad.37signals.com/integrations)client_secretBasecamp OAuth client secretaccount_idYour Basecamp account id
account { op: "connections.requirements", service: "basecamp" } # free: exactly what to paste, and what is found for you - 03
Make the first call. Check before a write.
Ask in plain words; Claude picks the action. Before anything changes,
checkvalidates the call and prices it, for free.do { action: "basecamp.account.get_account" }# get account · read · 1 upstream callcheck { action: "basecamp.todolists.create_todo", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent
Basecamp at a glance
- Sign-in
- OAuth 2.0, authorization code. You register your own OAuth app with Basecamp, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on.
- You provide
access_tokenrefresh_tokenclient_idclient_secret- Setup fields
account_id- Limits we pace to
- 50 calls per 10 seconds, per connection
- API covered
- Basecamp 4 (Basecamp 3 API) API bc3
3.basecampapi.com - Built from
- Basecamp's documentation, read 19 September 2026OpenAPI spec (GitHub)GitHub
- Service file
- Version 1.0.0, signed (Ed25519)
- Cached reads
- 130 of 130 reads, for up to an hour; a write clears what it affects
- Ready-made plans
- 9 in the store
- Shared entities
- 8, so ask can line Basecamp up with your other systems
- Data
- Processed and stored in Sydney, Australia. No US region yet
Capabilities
What an AI agent can do in Basecamp.
262 actions in 40 areas. Every one carries its effect, so a key can allow the reads and hold the rest.
- 130readlook, never change
- 108writecreate and update
- 24destructivewait for a confirmation
Card tables
2911 read · 16 write · 2 destructive
Create Card · Get Everything Completed Cards · Get Everything No Due Date Cards · Get Everything Not Now Cards
Recordings
299 read · 12 write · 8 destructive
Trash Recording · List Client Correspondences · List Client Replies · Get Recording Timesheet
My
1912 read · 6 write · 1 destructive
Get My Assignments · Get My Completed Assignments · Get My Due Assignments · List Recent Projects
Campfires
137 read · 4 write · 2 destructive
List Campfire Lines · Create Campfire Line · Get Campfire Line · Update Campfire Line
Todos
127 read · 5 write · 0 destructive
Create Todoset Todo · Get Everything Completed Todos · Get Everything No Due Date Todos · Get Everything Open Todos
Projects
115 read · 5 write · 1 destructive
List Projects · List Recordings · Create Project · Get Project
Todolists
104 read · 6 write · 0 destructive
List Todos · Create Todo · List Todolist Groups · List Todolists
Questions
94 read · 5 write · 0 destructive
List Question Answerers · Get Answers By Person · List Answers · Create Answer
32 more areas · 130 actions
- Vaults 8
- Gauges 7
- Reports 7
- Schedules 7
- Templates 7
- Boosts 6
- Client 6
- Inbox 6
- Comments 5
- Folders 5
- People 5
- Webhooks 5
- Documents 4
- Lineup 4
- Questionnaires 4
- Tools 4
- Uploads 4
- Account 3
- Google documents 3
- Message boards 3
- Messages 3
- Out of office 3
- Template library 3
- Timesheets 3
- Calendars 2
- Cloud files 2
- Events 2
- Hill charts 2
- Message types 2
- Question answers 2
- Search 2
- Forwards 1
Top actions
The Basecamp API, shaped for agents.
The ids your agent types, what each does, and the one name it shares with other systems. 151 of Basecamp's 155 action names are shared with at least one other connector, so an agent learns them once.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
basecamp.todolists.list_todosList Todos | List Todos | read | work.task.list122 connectors |
basecamp.projects.list_projectsList Projects | List Projects | read | work.project.list109 connectors |
basecamp.people.list_peopleList People | List People | read | identity.user.list474 connectors |
basecamp.comments.list_commentsList Comments | List Comments | read | work.task_comment.list27 connectors |
basecamp.todolists.create_todoCreate Todo | Create Todo | write | work.task.create127 connectors |
basecamp.card_tables.create_cardCreate Card | Create Card | write | work.task.create127 connectors |
basecamp.my.list_recent_projectsList Recent Projects | List Recent Projects | read | work.project.list109 connectors |
basecamp.schedules.list_schedule_entriesList Schedule Entries | List Schedule Entries | read | comm.event.list61 connectors |
basecamp.message_boards.list_messagesList Messages | List Messages | read | comm.message.list42 connectors |
basecamp.vaults.list_uploadsList Uploads | List Uploads | read | content.file.list77 connectors |
basecamp.comments.create_commentCreate Comment | Create Comment | write | work.task_comment.create28 connectors |
basecamp.recordings.trash_recordingTrash Recording | Trash Recording | destructive | work.task.delete107 connectors |
Try it
Prompts to paste into Claude.
Each one names the Basecamp actions it will call, so you know what it reads and what it changes before you send it.
- Readread
Which Basecamp tasks are overdue, and who owns each one?
calls
basecamp.todolists.list_todos - Planwrite
Spin up a project from a template and wait for it to build in Basecamp. Ask me before anything is sent or changed.
calls
basecamp.templates.get_templatebasecamp.templates.create_project_from_templatebasecamp.templates.get_project_constructionbasecamp.projects.record_project_visitbasecamp.projects.get_project - Planread
Report each assignable person's workload for the week in Basecamp.
calls
basecamp.reports.list_assignable_peoplebasecamp.reports.get_upcoming_schedulebasecamp.reports.get_overdue_todosbasecamp.reports.get_assigned_todosbasecamp.reports.get_person_progress - Writewrite
Create Todo in Basecamp. Show me exactly what you will send before you save it.
calls
basecamp.todolists.create_todo - Across systemsread
For each customer, how many projects are in Basecamp and how many invoices in ConnectWise PSA?
calls
basecamp.projects.list_projectsconnectwise_manage.invoices.list
Across your systems
Basecamp, joined to the rest of your business.
One ask fetches from Basecamp and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.
For each customer, how many projects are in Basecamp and how many invoices in ConnectWise PSA?
basecamp.projects.list_projects+connectwise_manage.invoices.list, oncrm.company· ConnectWise PSAFor each customer, how many projects are in Basecamp and how many invoices in NetSuite?
basecamp.projects.list_projects+netsuite.views.invoices, oncrm.company· NetSuite
identity.user 517work.project 116work.task 105content.file 54comm.event 47content.document 17comm.message 15work.task_comment 9ask { intent: "for each customer, how many projects are in Basecamp and how many invoices in ConnectWise PSA", steps: [ { action: "basecamp.projects.list_projects", as: "proj", input: {}, limit: 100, max_pages: 5 }, { action: "connectwise_manage.invoices.list", as: "inv", input: {}, limit: 100, max_pages: 5 }, { join: { left: "proj", right: "inv", on: "crm.company", group_by: "proj.company_name", select: ["proj.company_name", "count(proj.id) as projects", "count(inv.id) as invoices"] } } ]}The plan store
Ready-made plans for Basecamp.
9 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.
Report each assignable person's workload for the week
Use it when Someone wants to see who is carrying what before a planning meeting or a week starts.
Create a kickoff to-do list and fill it with tasks
Use it when A new workstream is starting and its tasks need to exist in Basecamp as one named list.
Sweep overdue to-dos and post a campfire summary
Use it when Someone wants a daily or ad-hoc nudge about what has slipped past its due date, delivered into chat.
Post a project update and pin it
Use it when A status update needs to go out to a project's board and be made prominent and announced.
Archive a project once a human signs off
Use it when A project has finished and someone wants it archived, but not without a person agreeing first.
A person decides
Archive the project 'name', removing it from the active list for member count people.
Log hours against a to-do and check the project total
Use it when Someone needs time booked against a specific to-do and wants the project total confirmed straight after.
Triage a card column and move stale cards on
Use it when A card column has silted up and the cards in it should be commented and moved to another column in one pass.
A person decides
Comment on and move card count cards out of 'title' into column target column id.
Spin up a project from a template and wait for it to build
Use it when A new client or engagement is starting and the standard project template should be instantiated.
A person decides
Create a new project from template 'name' and invite whoever the template carries.
Trash recordings matching a search after sign-off
Use it when A batch of obsolete recordings has been identified by search and someone has agreed they should go to the trash.
A person decides
Archive and then trash hit count recordings matching 'q'. This is not easily undone.
account { op: "plans.install", slug: "basecamp-weekly-workload-report" }
# then ask for it by name; a schedule can run it on a timetableGovernance for Basecamp
Destructive actions wait for a yes.
24 Basecamp actions are destructive. These are all of them:
- Trash Recording
basecamp.recordings.trash_recording - Trash Project
basecamp.projects.trash_project - Delete Campfire Line
basecamp.campfires.delete_campfire_line - Destroy Timesheet Entry
basecamp.timesheets.destroy_timesheet_entry - Delete Lineup Marker
basecamp.lineup.delete_lineup_marker - Delete Template
basecamp.templates.delete_template - Delete Wormhole
basecamp.card_tables.delete_wormhole - Disable Project Clients
basecamp.client.disable_project_clients - Delete Folder
basecamp.folders.delete_folder - Delete Bubble Up
basecamp.recordings.delete_bubble_up - Delete Webhook
basecamp.webhooks.delete_webhook - Delete Boost
basecamp.boosts.delete_boost - Unsubscribe
basecamp.recordings.unsubscribe - Unsubscribe From Card Column
basecamp.card_tables.unsubscribe_from_card_column - Unpin Message
basecamp.recordings.unpin_message - Delete Chatbot
basecamp.campfires.delete_chatbot - Destroy Gauge Needle
basecamp.gauges.destroy_gauge_needle - Delete Message Type
basecamp.recordings.delete_message_type - Deprioritize Assignment
basecamp.my.deprioritize_assignment - Delete Bookmark
basecamp.recordings.delete_bookmark - Unspotlight Recording
basecamp.recordings.unspotlight_recording - Remove Account Logo
basecamp.account.remove_account_logo - Delete Tool
basecamp.tools.delete_tool - Disable Tool
basecamp.recordings.disable_tool
A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.
Delete Campfire Line?
intent: the user asked me to delete Campfire Line
account { op: "keys.create", name: "basecamp-agent", allowed_actions: ["basecamp.*"], cap_calls: 2000, confirm_policy: "human_for_writes", approval_rules: [ { match: "basecamp.recordings.trash_recording", approver: "[email protected]" }, { match: "basecamp.projects.trash_project", approver: "[email protected]" }, { match: "basecamp.campfires.delete_campfire_line", approver: "[email protected]" } ]}Cost
What Basecamp costs on actionlake.
Every Basecamp action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Basecamp refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
- 1upstream call per actionall 262 Basecamp actions
- 56actions pageeach page of a long list is one call
- 130reads can be cacheda cache hit costs nothing
- 100,000calls a month, freepaid plans from US$49 a month for 250,000
Action index
Every Basecamp action.
262 actions by area: the id your agent calls, what it does, and its effect.
Card tables29
basecamp.card_tables.create_cardCreate Cardwritebasecamp.card_tables.create_card_columnCreate Card Columnwritebasecamp.card_tables.create_card_stepCreate Card Stepwritebasecamp.card_tables.create_wormholeCreate Wormholewritebasecamp.card_tables.delete_wormholeDelete Wormholedestructivebasecamp.card_tables.disable_card_column_on_holdDisable Card Column On Holdwritebasecamp.card_tables.enable_card_column_on_holdEnable Card Column On Holdwritebasecamp.card_tables.get_cardGet Cardreadbasecamp.card_tables.get_card_columnGet Card Columnreadbasecamp.card_tables.get_card_stepGet Card Stepreadbasecamp.card_tables.get_card_tableGet Card Tablereadbasecamp.card_tables.get_everything_completed_cardsGet Everything Completed Cardsreadbasecamp.card_tables.get_everything_no_due_date_cardsGet Everything No Due Date Cardsreadbasecamp.card_tables.get_everything_not_now_cardsGet Everything Not Now Cardsreadbasecamp.card_tables.get_everything_open_cardsGet Everything Open Cardsreadbasecamp.card_tables.get_everything_overdue_cardsGet Everything Overdue Cardsreadbasecamp.card_tables.get_everything_unassigned_cardsGet Everything Unassigned Cardsreadbasecamp.card_tables.list_cardsList Cardsreadbasecamp.card_tables.move_cardMove Cardwritebasecamp.card_tables.move_card_columnMove Card Columnwritebasecamp.card_tables.reposition_card_stepReposition Card Stepwritebasecamp.card_tables.set_card_column_colorSet Card Column Colorwritebasecamp.card_tables.set_card_step_completionSet Card Step Completionwritebasecamp.card_tables.subscribe_to_card_columnSubscribe To Card Columnwritebasecamp.card_tables.unsubscribe_from_card_columnUnsubscribe From Card Columndestructivebasecamp.card_tables.update_cardUpdate Cardwritebasecamp.card_tables.update_card_columnUpdate Card Columnwritebasecamp.card_tables.update_card_stepUpdate Card Stepwritebasecamp.card_tables.update_wormholeUpdate Wormholewrite
Recordings29
basecamp.recordings.archive_recordingArchive Recordingwritebasecamp.recordings.create_bookmarkCreate Bookmarkwritebasecamp.recordings.create_bubble_upCreate Bubble Upwritebasecamp.recordings.create_timesheet_entryCreate Timesheet Entrywritebasecamp.recordings.delete_bookmarkDelete Bookmarkdestructivebasecamp.recordings.delete_bubble_upDelete Bubble Updestructivebasecamp.recordings.delete_message_typeDelete Message Typedestructivebasecamp.recordings.disable_toolDisable Tooldestructivebasecamp.recordings.enable_toolEnable Toolwritebasecamp.recordings.get_bookmarkGet Bookmarkreadbasecamp.recordings.get_client_replyGet Client Replyreadbasecamp.recordings.get_message_typeGet Message Typereadbasecamp.recordings.get_recording_timesheetGet Recording Timesheetreadbasecamp.recordings.get_subscriptionGet Subscriptionreadbasecamp.recordings.list_client_approvalsList Client Approvalsreadbasecamp.recordings.list_client_correspondencesList Client Correspondencesreadbasecamp.recordings.list_client_repliesList Client Repliesreadbasecamp.recordings.list_eventsList Eventsreadbasecamp.recordings.pin_messagePin Messagewritebasecamp.recordings.reposition_toolReposition Toolwritebasecamp.recordings.spotlight_recordingSpotlight Recordingwritebasecamp.recordings.subscribeSubscribewritebasecamp.recordings.trash_recordingTrash Recordingdestructivebasecamp.recordings.unarchive_recordingUnarchive Recordingwritebasecamp.recordings.unpin_messageUnpin Messagedestructivebasecamp.recordings.unspotlight_recordingUnspotlight Recordingdestructivebasecamp.recordings.unsubscribeUnsubscribedestructivebasecamp.recordings.update_message_typeUpdate Message Typewritebasecamp.recordings.update_subscriptionUpdate Subscriptionwrite
My19
basecamp.my.deprioritize_assignmentDeprioritize Assignmentdestructivebasecamp.my.get_bubble_upsGet Bubble Upsreadbasecamp.my.get_my_assignmentsGet My Assignmentsreadbasecamp.my.get_my_completed_assignmentsGet My Completed Assignmentsreadbasecamp.my.get_my_due_assignmentsGet My Due Assignmentsreadbasecamp.my.get_my_noteGet My Notereadbasecamp.my.get_my_notificationsGet My Notificationsreadbasecamp.my.get_my_preferencesGet My Preferencesreadbasecamp.my.get_my_profileGet My Profilereadbasecamp.my.get_question_remindersGet Question Remindersreadbasecamp.my.list_my_bookmarksList My Bookmarksreadbasecamp.my.list_my_draftsList My Draftsreadbasecamp.my.list_recent_projectsList Recent Projectsreadbasecamp.my.mark_as_readMark As Readwritebasecamp.my.prioritize_assignmentPrioritize Assignmentwritebasecamp.my.reorder_up_nextReorder Up Nextwritebasecamp.my.update_my_noteUpdate My Notewritebasecamp.my.update_my_preferencesUpdate My Preferenceswritebasecamp.my.update_my_profileUpdate My Profilewrite
Campfires13
basecamp.campfires.create_campfire_lineCreate Campfire Linewritebasecamp.campfires.create_chatbotCreate Chatbotwritebasecamp.campfires.delete_campfire_lineDelete Campfire Linedestructivebasecamp.campfires.delete_chatbotDelete Chatbotdestructivebasecamp.campfires.get_campfireGet Campfirereadbasecamp.campfires.get_campfire_lineGet Campfire Linereadbasecamp.campfires.get_chatbotGet Chatbotreadbasecamp.campfires.list_campfire_linesList Campfire Linesreadbasecamp.campfires.list_campfire_uploadsList Campfire Uploadsreadbasecamp.campfires.list_campfiresList Campfiresreadbasecamp.campfires.list_chatbotsList Chatbotsreadbasecamp.campfires.update_campfire_lineUpdate Campfire Linewritebasecamp.campfires.update_chatbotUpdate Chatbotwrite
Todos12
basecamp.todos.complete_todoComplete Todowritebasecamp.todos.create_todoset_todoCreate Todoset Todowritebasecamp.todos.get_everything_completed_todosGet Everything Completed Todosreadbasecamp.todos.get_everything_no_due_date_todosGet Everything No Due Date Todosreadbasecamp.todos.get_everything_open_todosGet Everything Open Todosreadbasecamp.todos.get_everything_overdue_todosGet Everything Overdue Todosreadbasecamp.todos.get_everything_unassigned_todosGet Everything Unassigned Todosreadbasecamp.todos.get_todoGet Todoreadbasecamp.todos.get_todosetGet Todosetreadbasecamp.todos.replace_todoReplace Todowritebasecamp.todos.reposition_todoReposition Todowritebasecamp.todos.uncomplete_todoUncomplete Todowrite
Projects11
basecamp.projects.archive_projectArchive Projectwritebasecamp.projects.create_projectCreate Projectwritebasecamp.projects.get_projectGet Projectreadbasecamp.projects.get_project_timelineGet Project Timelinereadbasecamp.projects.get_project_timesheetGet Project Timesheetreadbasecamp.projects.list_projectsList Projectsreadbasecamp.projects.list_recordingsList Recordingsreadbasecamp.projects.record_project_visitRecord Project Visitwritebasecamp.projects.trash_projectTrash Projectdestructivebasecamp.projects.unarchive_projectUnarchive Projectwritebasecamp.projects.update_projectUpdate Projectwrite
Todolists10
basecamp.todolists.create_todoCreate Todowritebasecamp.todolists.create_todolistCreate Todolistwritebasecamp.todolists.create_todolist_groupCreate Todolist Groupwritebasecamp.todolists.get_todolist_or_groupGet Todolist Or Groupreadbasecamp.todolists.list_todolist_groupsList Todolist Groupsreadbasecamp.todolists.list_todolistsList Todolistsreadbasecamp.todolists.list_todosList Todosreadbasecamp.todolists.reposition_todolistReposition Todolistwritebasecamp.todolists.reposition_todolist_groupReposition Todolist Groupwritebasecamp.todolists.update_todolist_or_groupUpdate Todolist Or Groupwrite
Questions9
basecamp.questions.create_answerCreate Answerwritebasecamp.questions.get_answers_by_personGet Answers By Personreadbasecamp.questions.get_questionGet Questionreadbasecamp.questions.list_answersList Answersreadbasecamp.questions.list_question_answerersList Question Answerersreadbasecamp.questions.pause_questionPause Questionwritebasecamp.questions.resume_questionResume Questionwritebasecamp.questions.update_questionUpdate Questionwritebasecamp.questions.update_question_notification_settingsUpdate Question Notification Settingswrite
Vaults8
basecamp.vaults.create_cloud_fileCreate Cloud Filewritebasecamp.vaults.create_uploadCreate Uploadwritebasecamp.vaults.create_vaultCreate Vaultwritebasecamp.vaults.get_everything_filesGet Everything Filesreadbasecamp.vaults.get_vaultGet Vaultreadbasecamp.vaults.list_uploadsList Uploadsreadbasecamp.vaults.list_vaultsList Vaultsreadbasecamp.vaults.update_vaultUpdate Vaultwrite
Gauges7
basecamp.gauges.create_gauge_needleCreate Gauge Needlewritebasecamp.gauges.destroy_gauge_needleDestroy Gauge Needledestructivebasecamp.gauges.get_gauge_needleGet Gauge Needlereadbasecamp.gauges.list_gauge_needlesList Gauge Needlesreadbasecamp.gauges.list_gaugesList Gaugesreadbasecamp.gauges.toggle_gaugeToggle Gaugewritebasecamp.gauges.update_gauge_needleUpdate Gauge Needlewrite
Reports7
basecamp.reports.get_assigned_todosGet Assigned Todosreadbasecamp.reports.get_overdue_todosGet Overdue Todosreadbasecamp.reports.get_person_progressGet Person Progressreadbasecamp.reports.get_progress_reportGet Progress Reportreadbasecamp.reports.get_timesheet_reportGet Timesheet Reportreadbasecamp.reports.get_upcoming_scheduleGet Upcoming Schedulereadbasecamp.reports.list_assignable_peopleList Assignable Peopleread
Schedules7
basecamp.schedules.create_schedule_entryCreate Schedule Entrywritebasecamp.schedules.get_scheduleGet Schedulereadbasecamp.schedules.get_schedule_entryGet Schedule Entryreadbasecamp.schedules.get_schedule_entry_occurrenceGet Schedule Entry Occurrencereadbasecamp.schedules.list_schedule_entriesList Schedule Entriesreadbasecamp.schedules.replace_schedule_entryReplace Schedule Entrywritebasecamp.schedules.update_schedule_settingsUpdate Schedule Settingswrite
Templates7
basecamp.templates.create_project_from_templateCreate Project From Templatewritebasecamp.templates.create_templateCreate Templatewritebasecamp.templates.delete_templateDelete Templatedestructivebasecamp.templates.get_project_constructionGet Project Constructionreadbasecamp.templates.get_templateGet Templatereadbasecamp.templates.list_templatesList Templatesreadbasecamp.templates.update_templateUpdate Templatewrite
Boosts6
basecamp.boosts.create_event_boostCreate Event Boostwritebasecamp.boosts.create_recording_boostCreate Recording Boostwritebasecamp.boosts.delete_boostDelete Boostdestructivebasecamp.boosts.get_boostGet Boostreadbasecamp.boosts.list_event_boostsList Event Boostsreadbasecamp.boosts.list_recording_boostsList Recording Boostsread
Client6
basecamp.client.disable_project_clientsDisable Project Clientsdestructivebasecamp.client.enable_project_clientsEnable Project Clientswritebasecamp.client.get_client_approvalGet Client Approvalreadbasecamp.client.get_client_correspondenceGet Client Correspondencereadbasecamp.client.set_client_visibilitySet Client Visibilitywritebasecamp.client.update_project_client_accessUpdate Project Client Accesswrite
Inbox6
basecamp.inbox.get_forwardGet Forwardreadbasecamp.inbox.get_forward_replyGet Forward Replyreadbasecamp.inbox.get_inboxGet Inboxreadbasecamp.inbox.list_forward_repliesList Forward Repliesreadbasecamp.inbox.list_forwardsList Forwardsreadbasecamp.inbox.poll_inboxPoll Inboxread
Comments5
basecamp.comments.create_commentCreate Commentwritebasecamp.comments.get_commentGet Commentreadbasecamp.comments.get_everything_commentsGet Everything Commentsreadbasecamp.comments.list_commentsList Commentsreadbasecamp.comments.update_commentUpdate Commentwrite
Folders5
basecamp.folders.create_folderCreate Folderwritebasecamp.folders.delete_folderDelete Folderdestructivebasecamp.folders.get_folderGet Folderreadbasecamp.folders.list_foldersList Foldersreadbasecamp.folders.update_folderUpdate Folderwrite
People5
basecamp.people.get_personGet Personreadbasecamp.people.list_peopleList Peoplereadbasecamp.people.list_pingable_peopleList Pingable Peoplereadbasecamp.people.list_project_peopleList Project Peoplereadbasecamp.people.update_project_accessUpdate Project Accesswrite
Webhooks5
basecamp.webhooks.create_webhookCreate Webhookwritebasecamp.webhooks.delete_webhookDelete Webhookdestructivebasecamp.webhooks.get_webhookGet Webhookreadbasecamp.webhooks.list_webhooksList Webhooksreadbasecamp.webhooks.update_webhookUpdate Webhookwrite
Documents4
basecamp.documents.create_documentCreate Documentwritebasecamp.documents.get_documentGet Documentreadbasecamp.documents.list_documentsList Documentsreadbasecamp.documents.replace_documentReplace Documentwrite
Lineup4
basecamp.lineup.create_lineup_markerCreate Lineup Markerwritebasecamp.lineup.delete_lineup_markerDelete Lineup Markerdestructivebasecamp.lineup.list_lineup_markersList Lineup Markersreadbasecamp.lineup.update_lineup_markerUpdate Lineup Markerwrite
Questionnaires4
basecamp.questionnaires.create_questionCreate Questionwritebasecamp.questionnaires.get_everything_checkinsGet Everything Checkinsreadbasecamp.questionnaires.get_questionnaireGet Questionnairereadbasecamp.questionnaires.list_questionsList Questionsread
Tools4
basecamp.tools.create_toolCreate Toolwritebasecamp.tools.delete_toolDelete Tooldestructivebasecamp.tools.get_toolGet Toolreadbasecamp.tools.update_toolUpdate Toolwrite
Uploads4
basecamp.uploads.create_upload_versionCreate Upload Versionwritebasecamp.uploads.get_uploadGet Uploadreadbasecamp.uploads.list_upload_versionsList Upload Versionsreadbasecamp.uploads.update_uploadUpdate Uploadwrite
Account3
basecamp.account.get_accountGet Accountreadbasecamp.account.remove_account_logoRemove Account Logodestructivebasecamp.account.update_account_nameUpdate Account Namewrite
Google documents3
basecamp.google_documents.create_google_documentCreate Google Documentwritebasecamp.google_documents.get_google_documentGet Google Documentreadbasecamp.google_documents.update_google_documentUpdate Google Documentwrite
Message boards3
basecamp.message_boards.create_messageCreate Messagewritebasecamp.message_boards.get_message_boardGet Message Boardreadbasecamp.message_boards.list_messagesList Messagesread
Messages3
basecamp.messages.get_everything_messagesGet Everything Messagesreadbasecamp.messages.get_messageGet Messagereadbasecamp.messages.update_messageUpdate Messagewrite
Out of office3
basecamp.out_of_office.disable_out_of_officeDisable Out Of Officewritebasecamp.out_of_office.enable_out_of_officeEnable Out Of Officewritebasecamp.out_of_office.get_out_of_officeGet Out Of Officeread
Template library3
basecamp.template_library.create_template_library_copyCreate Template Library Copywritebasecamp.template_library.get_template_libraryGet Template Libraryreadbasecamp.template_library.get_template_library_copyGet Template Library Copyread
Timesheets3
basecamp.timesheets.destroy_timesheet_entryDestroy Timesheet Entrydestructivebasecamp.timesheets.get_timesheet_entryGet Timesheet Entryreadbasecamp.timesheets.update_timesheet_entryUpdate Timesheet Entrywrite
Calendars2
basecamp.calendars.get_calendarGet Calendarreadbasecamp.calendars.update_calendarUpdate Calendarwrite
Cloud files2
basecamp.cloud_files.get_cloud_fileGet Cloud Filereadbasecamp.cloud_files.update_cloud_fileUpdate Cloud Filewrite
Events2
basecamp.events.create_stream_ticketCreate Stream Ticketwritebasecamp.events.poll_eventsPoll Eventsread
Hill charts2
basecamp.hill_charts.get_hill_chartGet Hill Chartreadbasecamp.hill_charts.update_hill_chart_settingsUpdate Hill Chart Settingswrite
Message types2
basecamp.message_types.create_message_typeCreate Message Typewritebasecamp.message_types.list_message_typesList Message Typesread
Question answers2
basecamp.question_answers.get_answerGet Answerreadbasecamp.question_answers.update_answerUpdate Answerwrite
Search2
basecamp.search.get_search_metadataGet Search Metadatareadbasecamp.search.searchSearchread
Forwards1
basecamp.forwards.get_everything_forwardsGet Everything Forwardsread
Questions
The Basecamp MCP server, answered.
Is there a Basecamp MCP server for Claude?
Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 262 Basecamp actions across card tables, recordings, my and campfires, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Basecamp.
What do I need to connect Basecamp?
Your own Basecamp OAuth app, registered with Basecamp (its client id and client secret), and the access and refresh tokens from one admin sign-in. actionlake has no Basecamp app of its own, so this is not a one-step consent. actionlake renews the access token as it expires. Plus your account id. The free call account { op: "connections.requirements", service: "basecamp" } lists exactly what to paste.
Can an AI agent delete or change things in Basecamp?
Only if its key allows it, and only with an explicit confirmation. 24 Basecamp actions are destructive, including trash Recording, trash Project and delete Campfire Line. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.
Will an AI agent use up my Basecamp API limit?
actionlake paces every call to the limits in the Basecamp service file: 50 calls per 10 seconds per connection. Repeated reads are answered from cache (130 Basecamp actions can be), which never reaches Basecamp.
What does a Basecamp action cost?
One upstream call, the only unit actionlake bills. A list that pages bills one call per page (56 Basecamp actions page). Cache hits, searches, dry runs and calls Basecamp refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
Which Basecamp API does it cover?
The Basecamp 4 (Basecamp 3 API) API bc3 at 3.basecampapi.com, under your account id. It is built from Basecamp's documentation as read on 19 September 2026. 262 actions in 40 areas, each one in the signed service file (version 1.0.0).
Can I combine Basecamp with my other systems?
Yes. ask joins Basecamp to ConnectWise PSA or NetSuite on the same customer and returns the answer rather than every row. Basecamp maps work.project, which 116 other connectors also map.
Does actionlake keep my Basecamp data, and where?
actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Basecamp credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.
Which AI clients can use it?
Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.
Give your agent Basecamp today.
Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.