Skip to content

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/mcp
the first call
do {  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.

  1. 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
  2. 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 app
    • refresh_tokenRefresh token from the same sign-in; the access token is renewed from it
    • client_idBasecamp OAuth client ID (from launchpad.37signals.com/integrations)
    • client_secretBasecamp OAuth client secret
    • account_idYour Basecamp account id
    account { op: "connections.requirements", service: "basecamp" }
    # free: exactly what to paste, and what is found for you
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates 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 bc33.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
  1. Card tables

    29

    11 read · 16 write · 2 destructive

    Create Card · Get Everything Completed Cards · Get Everything No Due Date Cards · Get Everything Not Now Cards

  2. Recordings

    29

    9 read · 12 write · 8 destructive

    Trash Recording · List Client Correspondences · List Client Replies · Get Recording Timesheet

  3. My

    19

    12 read · 6 write · 1 destructive

    Get My Assignments · Get My Completed Assignments · Get My Due Assignments · List Recent Projects

  4. Campfires

    13

    7 read · 4 write · 2 destructive

    List Campfire Lines · Create Campfire Line · Get Campfire Line · Update Campfire Line

  5. Todos

    12

    7 read · 5 write · 0 destructive

    Create Todoset Todo · Get Everything Completed Todos · Get Everything No Due Date Todos · Get Everything Open Todos

  6. Projects

    11

    5 read · 5 write · 1 destructive

    List Projects · List Recordings · Create Project · Get Project

  7. Todolists

    10

    4 read · 6 write · 0 destructive

    List Todos · Create Todo · List Todolist Groups · List Todolists

  8. Questions

    9

    4 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.

ActionWhat it doesEffectSame name in
basecamp.todolists.list_todosList TodosList Todosreadwork.task.list122 connectors
basecamp.projects.list_projectsList ProjectsList Projectsreadwork.project.list109 connectors
basecamp.people.list_peopleList PeopleList Peoplereadidentity.user.list474 connectors
basecamp.comments.list_commentsList CommentsList Commentsreadwork.task_comment.list27 connectors
basecamp.todolists.create_todoCreate TodoCreate Todowritework.task.create127 connectors
basecamp.card_tables.create_cardCreate CardCreate Cardwritework.task.create127 connectors
basecamp.my.list_recent_projectsList Recent ProjectsList Recent Projectsreadwork.project.list109 connectors
basecamp.schedules.list_schedule_entriesList Schedule EntriesList Schedule Entriesreadcomm.event.list61 connectors
basecamp.message_boards.list_messagesList MessagesList Messagesreadcomm.message.list42 connectors
basecamp.vaults.list_uploadsList UploadsList Uploadsreadcontent.file.list77 connectors
basecamp.comments.create_commentCreate CommentCreate Commentwritework.task_comment.create28 connectors
basecamp.recordings.trash_recordingTrash RecordingTrash Recordingdestructivework.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.

  1. Readread

    Which Basecamp tasks are overdue, and who owns each one?

    callsbasecamp.todolists.list_todos

  2. Planwrite

    Spin up a project from a template and wait for it to build in Basecamp. Ask me before anything is sent or changed.

    callsbasecamp.templates.get_templatebasecamp.templates.create_project_from_templatebasecamp.templates.get_project_constructionbasecamp.projects.record_project_visitbasecamp.projects.get_project

  3. Planread

    Report each assignable person's workload for the week in Basecamp.

    callsbasecamp.reports.list_assignable_peoplebasecamp.reports.get_upcoming_schedulebasecamp.reports.get_overdue_todosbasecamp.reports.get_assigned_todosbasecamp.reports.get_person_progress

  4. Writewrite

    Create Todo in Basecamp. Show me exactly what you will send before you save it.

    callsbasecamp.todolists.create_todo

  5. Across systemsread

    For each customer, how many projects are in Basecamp and how many invoices in ConnectWise PSA?

    callsbasecamp.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, on crm.company · ConnectWise PSA

  • For each customer, how many projects are in Basecamp and how many invoices in NetSuite?

    basecamp.projects.list_projects + netsuite.views.invoices, on crm.company · NetSuite

Also mapped by other connectorsidentity.user 517work.project 116work.task 105content.file 54comm.event 47content.document 17comm.message 15work.task_comment 9
ask
ask {  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"]    } }  ]}
Example. Run it through check first: it validates the steps and prices them, and it is free.

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.

  1. 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.

    Effect
    read
    Steps
    5 · loops
    Needs
    window ends on and window starts on
    Install
    basecamp-weekly-workload-report
  2. 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.

    Effect
    write
    Steps
    4 · loops
    Needs
    assignee ids, due on, list name, titles and todoset id
    Install
    basecamp-kickoff-todolist-from-brief
  3. 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.

    Effect
    write
    Steps
    4 · loops
    Needs
    campfire id
    Install
    basecamp-overdue-todo-sweep
  4. 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.

    Effect
    write
    Steps
    4
    Needs
    board id, body, campfire id and subject
    Install
    basecamp-publish-project-update
  5. 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 decidesArchive the project 'name', removing it from the active list for member count people.

    Effect
    write
    Steps
    5
    Needs
    project id
    Install
    basecamp-archive-project-after-approval
  6. 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.

    Effect
    write
    Steps
    5
    Needs
    date, hours, person id, project id and todo id
    Install
    basecamp-log-time-against-todo
  7. 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 decidesComment on and move card count cards out of 'title' into column target column id.

    Effect
    write
    Steps
    5 · loops
    Needs
    column id, note and target column id
    Install
    basecamp-triage-card-column
  8. 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 decidesCreate a new project from template 'name' and invite whoever the template carries.

    Effect
    write
    Steps
    6
    Needs
    project and template id
    Install
    basecamp-project-from-template
  9. 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 decidesArchive and then trash hit count recordings matching 'q'. This is not easily undone.

    Effect
    destructive
    Steps
    4 · loops
    Needs
    bucket ids and q
    Install
    basecamp-trash-stale-recordings
install a plan
account { op: "plans.install", slug: "basecamp-weekly-workload-report" }
# then ask for it by name; a schedule can run it on a timetable

Governance for Basecamp

Destructive actions wait for a yes.

24 Basecamp actions are destructive. These are all of them:

  • Trash Recordingbasecamp.recordings.trash_recording
  • Trash Projectbasecamp.projects.trash_project
  • Delete Campfire Linebasecamp.campfires.delete_campfire_line
  • Destroy Timesheet Entrybasecamp.timesheets.destroy_timesheet_entry
  • Delete Lineup Markerbasecamp.lineup.delete_lineup_marker
  • Delete Templatebasecamp.templates.delete_template
  • Delete Wormholebasecamp.card_tables.delete_wormhole
  • Disable Project Clientsbasecamp.client.disable_project_clients
  • Delete Folderbasecamp.folders.delete_folder
  • Delete Bubble Upbasecamp.recordings.delete_bubble_up
  • Delete Webhookbasecamp.webhooks.delete_webhook
  • Delete Boostbasecamp.boosts.delete_boost
  • Unsubscribebasecamp.recordings.unsubscribe
  • Unsubscribe From Card Columnbasecamp.card_tables.unsubscribe_from_card_column
  • Unpin Messagebasecamp.recordings.unpin_message
  • Delete Chatbotbasecamp.campfires.delete_chatbot
  • Destroy Gauge Needlebasecamp.gauges.destroy_gauge_needle
  • Delete Message Typebasecamp.recordings.delete_message_type
  • Deprioritize Assignmentbasecamp.my.deprioritize_assignment
  • Delete Bookmarkbasecamp.recordings.delete_bookmark
  • Unspotlight Recordingbasecamp.recordings.unspotlight_recording
  • Remove Account Logobasecamp.account.remove_account_logo
  • Delete Toolbasecamp.tools.delete_tool
  • Disable Toolbasecamp.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.

dobasecamp.campfires.delete_campfire_lineconfirm_policy: human

Delete Campfire Line?

intent: the user asked me to delete Campfire Line

run suspended · waiting for a named person · key basecamp-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
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]" }  ]}
Illustrative. Scoped to Basecamp only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

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

See pricing

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 Cardwrite
  • basecamp.card_tables.create_card_columnCreate Card Columnwrite
  • basecamp.card_tables.create_card_stepCreate Card Stepwrite
  • basecamp.card_tables.create_wormholeCreate Wormholewrite
  • basecamp.card_tables.delete_wormholeDelete Wormholedestructive
  • basecamp.card_tables.disable_card_column_on_holdDisable Card Column On Holdwrite
  • basecamp.card_tables.enable_card_column_on_holdEnable Card Column On Holdwrite
  • basecamp.card_tables.get_cardGet Cardread
  • basecamp.card_tables.get_card_columnGet Card Columnread
  • basecamp.card_tables.get_card_stepGet Card Stepread
  • basecamp.card_tables.get_card_tableGet Card Tableread
  • basecamp.card_tables.get_everything_completed_cardsGet Everything Completed Cardsread
  • basecamp.card_tables.get_everything_no_due_date_cardsGet Everything No Due Date Cardsread
  • basecamp.card_tables.get_everything_not_now_cardsGet Everything Not Now Cardsread
  • basecamp.card_tables.get_everything_open_cardsGet Everything Open Cardsread
  • basecamp.card_tables.get_everything_overdue_cardsGet Everything Overdue Cardsread
  • basecamp.card_tables.get_everything_unassigned_cardsGet Everything Unassigned Cardsread
  • basecamp.card_tables.list_cardsList Cardsread
  • basecamp.card_tables.move_cardMove Cardwrite
  • basecamp.card_tables.move_card_columnMove Card Columnwrite
  • basecamp.card_tables.reposition_card_stepReposition Card Stepwrite
  • basecamp.card_tables.set_card_column_colorSet Card Column Colorwrite
  • basecamp.card_tables.set_card_step_completionSet Card Step Completionwrite
  • basecamp.card_tables.subscribe_to_card_columnSubscribe To Card Columnwrite
  • basecamp.card_tables.unsubscribe_from_card_columnUnsubscribe From Card Columndestructive
  • basecamp.card_tables.update_cardUpdate Cardwrite
  • basecamp.card_tables.update_card_columnUpdate Card Columnwrite
  • basecamp.card_tables.update_card_stepUpdate Card Stepwrite
  • basecamp.card_tables.update_wormholeUpdate Wormholewrite
Recordings29
  • basecamp.recordings.archive_recordingArchive Recordingwrite
  • basecamp.recordings.create_bookmarkCreate Bookmarkwrite
  • basecamp.recordings.create_bubble_upCreate Bubble Upwrite
  • basecamp.recordings.create_timesheet_entryCreate Timesheet Entrywrite
  • basecamp.recordings.delete_bookmarkDelete Bookmarkdestructive
  • basecamp.recordings.delete_bubble_upDelete Bubble Updestructive
  • basecamp.recordings.delete_message_typeDelete Message Typedestructive
  • basecamp.recordings.disable_toolDisable Tooldestructive
  • basecamp.recordings.enable_toolEnable Toolwrite
  • basecamp.recordings.get_bookmarkGet Bookmarkread
  • basecamp.recordings.get_client_replyGet Client Replyread
  • basecamp.recordings.get_message_typeGet Message Typeread
  • basecamp.recordings.get_recording_timesheetGet Recording Timesheetread
  • basecamp.recordings.get_subscriptionGet Subscriptionread
  • basecamp.recordings.list_client_approvalsList Client Approvalsread
  • basecamp.recordings.list_client_correspondencesList Client Correspondencesread
  • basecamp.recordings.list_client_repliesList Client Repliesread
  • basecamp.recordings.list_eventsList Eventsread
  • basecamp.recordings.pin_messagePin Messagewrite
  • basecamp.recordings.reposition_toolReposition Toolwrite
  • basecamp.recordings.spotlight_recordingSpotlight Recordingwrite
  • basecamp.recordings.subscribeSubscribewrite
  • basecamp.recordings.trash_recordingTrash Recordingdestructive
  • basecamp.recordings.unarchive_recordingUnarchive Recordingwrite
  • basecamp.recordings.unpin_messageUnpin Messagedestructive
  • basecamp.recordings.unspotlight_recordingUnspotlight Recordingdestructive
  • basecamp.recordings.unsubscribeUnsubscribedestructive
  • basecamp.recordings.update_message_typeUpdate Message Typewrite
  • basecamp.recordings.update_subscriptionUpdate Subscriptionwrite
My19
  • basecamp.my.deprioritize_assignmentDeprioritize Assignmentdestructive
  • basecamp.my.get_bubble_upsGet Bubble Upsread
  • basecamp.my.get_my_assignmentsGet My Assignmentsread
  • basecamp.my.get_my_completed_assignmentsGet My Completed Assignmentsread
  • basecamp.my.get_my_due_assignmentsGet My Due Assignmentsread
  • basecamp.my.get_my_noteGet My Noteread
  • basecamp.my.get_my_notificationsGet My Notificationsread
  • basecamp.my.get_my_preferencesGet My Preferencesread
  • basecamp.my.get_my_profileGet My Profileread
  • basecamp.my.get_question_remindersGet Question Remindersread
  • basecamp.my.list_my_bookmarksList My Bookmarksread
  • basecamp.my.list_my_draftsList My Draftsread
  • basecamp.my.list_recent_projectsList Recent Projectsread
  • basecamp.my.mark_as_readMark As Readwrite
  • basecamp.my.prioritize_assignmentPrioritize Assignmentwrite
  • basecamp.my.reorder_up_nextReorder Up Nextwrite
  • basecamp.my.update_my_noteUpdate My Notewrite
  • basecamp.my.update_my_preferencesUpdate My Preferenceswrite
  • basecamp.my.update_my_profileUpdate My Profilewrite
Campfires13
  • basecamp.campfires.create_campfire_lineCreate Campfire Linewrite
  • basecamp.campfires.create_chatbotCreate Chatbotwrite
  • basecamp.campfires.delete_campfire_lineDelete Campfire Linedestructive
  • basecamp.campfires.delete_chatbotDelete Chatbotdestructive
  • basecamp.campfires.get_campfireGet Campfireread
  • basecamp.campfires.get_campfire_lineGet Campfire Lineread
  • basecamp.campfires.get_chatbotGet Chatbotread
  • basecamp.campfires.list_campfire_linesList Campfire Linesread
  • basecamp.campfires.list_campfire_uploadsList Campfire Uploadsread
  • basecamp.campfires.list_campfiresList Campfiresread
  • basecamp.campfires.list_chatbotsList Chatbotsread
  • basecamp.campfires.update_campfire_lineUpdate Campfire Linewrite
  • basecamp.campfires.update_chatbotUpdate Chatbotwrite
Todos12
  • basecamp.todos.complete_todoComplete Todowrite
  • basecamp.todos.create_todoset_todoCreate Todoset Todowrite
  • basecamp.todos.get_everything_completed_todosGet Everything Completed Todosread
  • basecamp.todos.get_everything_no_due_date_todosGet Everything No Due Date Todosread
  • basecamp.todos.get_everything_open_todosGet Everything Open Todosread
  • basecamp.todos.get_everything_overdue_todosGet Everything Overdue Todosread
  • basecamp.todos.get_everything_unassigned_todosGet Everything Unassigned Todosread
  • basecamp.todos.get_todoGet Todoread
  • basecamp.todos.get_todosetGet Todosetread
  • basecamp.todos.replace_todoReplace Todowrite
  • basecamp.todos.reposition_todoReposition Todowrite
  • basecamp.todos.uncomplete_todoUncomplete Todowrite
Projects11
  • basecamp.projects.archive_projectArchive Projectwrite
  • basecamp.projects.create_projectCreate Projectwrite
  • basecamp.projects.get_projectGet Projectread
  • basecamp.projects.get_project_timelineGet Project Timelineread
  • basecamp.projects.get_project_timesheetGet Project Timesheetread
  • basecamp.projects.list_projectsList Projectsread
  • basecamp.projects.list_recordingsList Recordingsread
  • basecamp.projects.record_project_visitRecord Project Visitwrite
  • basecamp.projects.trash_projectTrash Projectdestructive
  • basecamp.projects.unarchive_projectUnarchive Projectwrite
  • basecamp.projects.update_projectUpdate Projectwrite
Todolists10
  • basecamp.todolists.create_todoCreate Todowrite
  • basecamp.todolists.create_todolistCreate Todolistwrite
  • basecamp.todolists.create_todolist_groupCreate Todolist Groupwrite
  • basecamp.todolists.get_todolist_or_groupGet Todolist Or Groupread
  • basecamp.todolists.list_todolist_groupsList Todolist Groupsread
  • basecamp.todolists.list_todolistsList Todolistsread
  • basecamp.todolists.list_todosList Todosread
  • basecamp.todolists.reposition_todolistReposition Todolistwrite
  • basecamp.todolists.reposition_todolist_groupReposition Todolist Groupwrite
  • basecamp.todolists.update_todolist_or_groupUpdate Todolist Or Groupwrite
Questions9
  • basecamp.questions.create_answerCreate Answerwrite
  • basecamp.questions.get_answers_by_personGet Answers By Personread
  • basecamp.questions.get_questionGet Questionread
  • basecamp.questions.list_answersList Answersread
  • basecamp.questions.list_question_answerersList Question Answerersread
  • basecamp.questions.pause_questionPause Questionwrite
  • basecamp.questions.resume_questionResume Questionwrite
  • basecamp.questions.update_questionUpdate Questionwrite
  • basecamp.questions.update_question_notification_settingsUpdate Question Notification Settingswrite
Vaults8
  • basecamp.vaults.create_cloud_fileCreate Cloud Filewrite
  • basecamp.vaults.create_uploadCreate Uploadwrite
  • basecamp.vaults.create_vaultCreate Vaultwrite
  • basecamp.vaults.get_everything_filesGet Everything Filesread
  • basecamp.vaults.get_vaultGet Vaultread
  • basecamp.vaults.list_uploadsList Uploadsread
  • basecamp.vaults.list_vaultsList Vaultsread
  • basecamp.vaults.update_vaultUpdate Vaultwrite
Gauges7
  • basecamp.gauges.create_gauge_needleCreate Gauge Needlewrite
  • basecamp.gauges.destroy_gauge_needleDestroy Gauge Needledestructive
  • basecamp.gauges.get_gauge_needleGet Gauge Needleread
  • basecamp.gauges.list_gauge_needlesList Gauge Needlesread
  • basecamp.gauges.list_gaugesList Gaugesread
  • basecamp.gauges.toggle_gaugeToggle Gaugewrite
  • basecamp.gauges.update_gauge_needleUpdate Gauge Needlewrite
Reports7
  • basecamp.reports.get_assigned_todosGet Assigned Todosread
  • basecamp.reports.get_overdue_todosGet Overdue Todosread
  • basecamp.reports.get_person_progressGet Person Progressread
  • basecamp.reports.get_progress_reportGet Progress Reportread
  • basecamp.reports.get_timesheet_reportGet Timesheet Reportread
  • basecamp.reports.get_upcoming_scheduleGet Upcoming Scheduleread
  • basecamp.reports.list_assignable_peopleList Assignable Peopleread
Schedules7
  • basecamp.schedules.create_schedule_entryCreate Schedule Entrywrite
  • basecamp.schedules.get_scheduleGet Scheduleread
  • basecamp.schedules.get_schedule_entryGet Schedule Entryread
  • basecamp.schedules.get_schedule_entry_occurrenceGet Schedule Entry Occurrenceread
  • basecamp.schedules.list_schedule_entriesList Schedule Entriesread
  • basecamp.schedules.replace_schedule_entryReplace Schedule Entrywrite
  • basecamp.schedules.update_schedule_settingsUpdate Schedule Settingswrite
Templates7
  • basecamp.templates.create_project_from_templateCreate Project From Templatewrite
  • basecamp.templates.create_templateCreate Templatewrite
  • basecamp.templates.delete_templateDelete Templatedestructive
  • basecamp.templates.get_project_constructionGet Project Constructionread
  • basecamp.templates.get_templateGet Templateread
  • basecamp.templates.list_templatesList Templatesread
  • basecamp.templates.update_templateUpdate Templatewrite
Boosts6
  • basecamp.boosts.create_event_boostCreate Event Boostwrite
  • basecamp.boosts.create_recording_boostCreate Recording Boostwrite
  • basecamp.boosts.delete_boostDelete Boostdestructive
  • basecamp.boosts.get_boostGet Boostread
  • basecamp.boosts.list_event_boostsList Event Boostsread
  • basecamp.boosts.list_recording_boostsList Recording Boostsread
Client6
  • basecamp.client.disable_project_clientsDisable Project Clientsdestructive
  • basecamp.client.enable_project_clientsEnable Project Clientswrite
  • basecamp.client.get_client_approvalGet Client Approvalread
  • basecamp.client.get_client_correspondenceGet Client Correspondenceread
  • basecamp.client.set_client_visibilitySet Client Visibilitywrite
  • basecamp.client.update_project_client_accessUpdate Project Client Accesswrite
Inbox6
  • basecamp.inbox.get_forwardGet Forwardread
  • basecamp.inbox.get_forward_replyGet Forward Replyread
  • basecamp.inbox.get_inboxGet Inboxread
  • basecamp.inbox.list_forward_repliesList Forward Repliesread
  • basecamp.inbox.list_forwardsList Forwardsread
  • basecamp.inbox.poll_inboxPoll Inboxread
Comments5
  • basecamp.comments.create_commentCreate Commentwrite
  • basecamp.comments.get_commentGet Commentread
  • basecamp.comments.get_everything_commentsGet Everything Commentsread
  • basecamp.comments.list_commentsList Commentsread
  • basecamp.comments.update_commentUpdate Commentwrite
Folders5
  • basecamp.folders.create_folderCreate Folderwrite
  • basecamp.folders.delete_folderDelete Folderdestructive
  • basecamp.folders.get_folderGet Folderread
  • basecamp.folders.list_foldersList Foldersread
  • basecamp.folders.update_folderUpdate Folderwrite
People5
  • basecamp.people.get_personGet Personread
  • basecamp.people.list_peopleList Peopleread
  • basecamp.people.list_pingable_peopleList Pingable Peopleread
  • basecamp.people.list_project_peopleList Project Peopleread
  • basecamp.people.update_project_accessUpdate Project Accesswrite
Webhooks5
  • basecamp.webhooks.create_webhookCreate Webhookwrite
  • basecamp.webhooks.delete_webhookDelete Webhookdestructive
  • basecamp.webhooks.get_webhookGet Webhookread
  • basecamp.webhooks.list_webhooksList Webhooksread
  • basecamp.webhooks.update_webhookUpdate Webhookwrite
Documents4
  • basecamp.documents.create_documentCreate Documentwrite
  • basecamp.documents.get_documentGet Documentread
  • basecamp.documents.list_documentsList Documentsread
  • basecamp.documents.replace_documentReplace Documentwrite
Lineup4
  • basecamp.lineup.create_lineup_markerCreate Lineup Markerwrite
  • basecamp.lineup.delete_lineup_markerDelete Lineup Markerdestructive
  • basecamp.lineup.list_lineup_markersList Lineup Markersread
  • basecamp.lineup.update_lineup_markerUpdate Lineup Markerwrite
Questionnaires4
  • basecamp.questionnaires.create_questionCreate Questionwrite
  • basecamp.questionnaires.get_everything_checkinsGet Everything Checkinsread
  • basecamp.questionnaires.get_questionnaireGet Questionnaireread
  • basecamp.questionnaires.list_questionsList Questionsread
Tools4
  • basecamp.tools.create_toolCreate Toolwrite
  • basecamp.tools.delete_toolDelete Tooldestructive
  • basecamp.tools.get_toolGet Toolread
  • basecamp.tools.update_toolUpdate Toolwrite
Uploads4
  • basecamp.uploads.create_upload_versionCreate Upload Versionwrite
  • basecamp.uploads.get_uploadGet Uploadread
  • basecamp.uploads.list_upload_versionsList Upload Versionsread
  • basecamp.uploads.update_uploadUpdate Uploadwrite
Account3
  • basecamp.account.get_accountGet Accountread
  • basecamp.account.remove_account_logoRemove Account Logodestructive
  • basecamp.account.update_account_nameUpdate Account Namewrite
Google documents3
  • basecamp.google_documents.create_google_documentCreate Google Documentwrite
  • basecamp.google_documents.get_google_documentGet Google Documentread
  • basecamp.google_documents.update_google_documentUpdate Google Documentwrite
Message boards3
  • basecamp.message_boards.create_messageCreate Messagewrite
  • basecamp.message_boards.get_message_boardGet Message Boardread
  • basecamp.message_boards.list_messagesList Messagesread
Messages3
  • basecamp.messages.get_everything_messagesGet Everything Messagesread
  • basecamp.messages.get_messageGet Messageread
  • basecamp.messages.update_messageUpdate Messagewrite
Out of office3
  • basecamp.out_of_office.disable_out_of_officeDisable Out Of Officewrite
  • basecamp.out_of_office.enable_out_of_officeEnable Out Of Officewrite
  • basecamp.out_of_office.get_out_of_officeGet Out Of Officeread
Template library3
  • basecamp.template_library.create_template_library_copyCreate Template Library Copywrite
  • basecamp.template_library.get_template_libraryGet Template Libraryread
  • basecamp.template_library.get_template_library_copyGet Template Library Copyread
Timesheets3
  • basecamp.timesheets.destroy_timesheet_entryDestroy Timesheet Entrydestructive
  • basecamp.timesheets.get_timesheet_entryGet Timesheet Entryread
  • basecamp.timesheets.update_timesheet_entryUpdate Timesheet Entrywrite
Calendars2
  • basecamp.calendars.get_calendarGet Calendarread
  • basecamp.calendars.update_calendarUpdate Calendarwrite
Cloud files2
  • basecamp.cloud_files.get_cloud_fileGet Cloud Fileread
  • basecamp.cloud_files.update_cloud_fileUpdate Cloud Filewrite
Events2
  • basecamp.events.create_stream_ticketCreate Stream Ticketwrite
  • basecamp.events.poll_eventsPoll Eventsread
Hill charts2
  • basecamp.hill_charts.get_hill_chartGet Hill Chartread
  • basecamp.hill_charts.update_hill_chart_settingsUpdate Hill Chart Settingswrite
Message types2
  • basecamp.message_types.create_message_typeCreate Message Typewrite
  • basecamp.message_types.list_message_typesList Message Typesread
Question answers2
  • basecamp.question_answers.get_answerGet Answerread
  • basecamp.question_answers.update_answerUpdate Answerwrite
Search2
  • basecamp.search.get_search_metadataGet Search Metadataread
  • basecamp.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.