100+ integrations are ready to connect to your AI.Connect your first MCP

Basecamp MCP server for your AI

Ask what is overdue across your projects, add a to-do from a project's name, post a message, move a card or catch up on a project, all as you and with the access you already have in Basecamp.

PopMCPBasecamp

What is overdue across all my projects, and who is each to-do assigned to?

Supported Basecamp tools

Every Basecamp endpoint is a tool, plus one-call jobs that walk the project for you, so a to-do needs a project and a list name instead of a chain of IDs. Updates keep the fields you did not mention, and links work wherever an ID goes.

312 tools in the full catalog: 148 read and 164 write. 50 load by default, and the rest are found with tool search.

basecamp_create_card

The column id comes from basecamp_get_card_table.

basecamp_get_card

Get a card by ID

basecamp_get_card_table

The card table id is tool_ids.kanban_board of basecamp_get_project.

basecamp_list_cards_in_column

The column id comes from basecamp_get_card_table.

basecamp_move_card

column_id may be a column of another card table in the same project.

basecamp_update_card

Update an existing card

basecamp_complete_todo

Marks the to-do done.

basecamp_create_document

The folder id is tool_ids.vault of basecamp_get_project, or from basecamp_list_vaults.

basecamp_create_todo

The to-do list id comes from basecamp_list_todolists.

basecamp_create_todolist

The to-do set id is tool_ids.todoset of basecamp_get_project.

basecamp_get_document

Get a single document by id

basecamp_get_my_profile

The connected person, with the id and attachable_sgid other tools take.

basecamp_get_todo

Get a single todo by id

basecamp_list_documents

The folder id is tool_ids.vault of basecamp_get_project, or from basecamp_list_vaults.

basecamp_list_people

Everyone visible in the account, with the id and attachable_sgid other tools take.

basecamp_list_project_people

list project people

basecamp_list_todolists

The to-do lists of a project's to-do set.

basecamp_list_todos

The to-dos of one to-do list: basecamp_list_todolists gives the list ids.

basecamp_list_uploads

The folder id is tool_ids.vault of basecamp_get_project, or from basecamp_list_vaults.

basecamp_uncomplete_todo

Mark a todo as incomplete

basecamp_update_todo

Send only the fields to change: PopMCP reads the to-do first and sends everything else back, because Basecamp clears any field a plain update leaves out.

basecamp_create_comment

Works on any recording that takes comments: to-do, message, document, upload, card.

basecamp_create_message

The message board id is tool_ids.message_board of basecamp_get_project.

basecamp_get_message

Get a single message by id

basecamp_list_all_open_todos

Active, incomplete to-dos across all accessible projects, grouped by project (paginated).

basecamp_list_all_overdue_todos

Get every overdue to-do across all accessible projects, oldest-due-date-first.

basecamp_list_comments

Works on any recording that takes comments.

basecamp_list_messages

The message board id is tool_ids.message_board of basecamp_get_project.

basecamp_create_campfire_line

The Campfire id is tool_ids.chat of basecamp_get_project.

basecamp_list_campfire_lines

The Campfire id is tool_ids.chat of basecamp_get_project, or from basecamp_list_campfires.

basecamp_create_schedule_entry

The schedule id is tool_ids.schedule of basecamp_get_project.

basecamp_list_schedule_entries

The schedule id is tool_ids.schedule of basecamp_get_project.

basecamp_get_project

tool_ids in the answer holds the id of each tool switched on in the project (message_board, todoset, vault, schedule, chat, questionnaire, inbox, kanban_board): those ids are what the list and create tools take.

basecamp_list_projects

Start here: every project.

basecamp_trash_recording

Moves any recording to the trash.

basecamp_add_card

Add a card from a project and a column name.

basecamp_add_todo

Add a to-do from a project and a list name.

basecamp_download_file

Read a stored file from its download_url.

basecamp_find_project

Find a project by name, with its id and tool ids.

basecamp_get_project_image

A project's logo or wallpaper.

basecamp_get_project_overview

A project's details, people, to-do lists, messages and recent activity in one call.

basecamp_list_project_todos

Every to-do list of a project with its to-dos.

basecamp_post_message

Post a message to a project's message board.

basecamp_post_to_campfire

Send a line to a project's Campfire.

basecamp_upload_file

Upload a file to a project's Docs & Files.

basecamp_list_my_assignments

What is assigned to the connected person, split into priorities and non_priorities.

basecamp_list_my_notifications

Get the current user's notifications (the "Hey!" menu in Basecamp 4).

basecamp_list_upcoming_schedule

Get upcoming schedule entries and assignable items within a date window.

basecamp_search

Search across the whole account.

basecamp_get_project_timeline

Get project timeline

basecamp_create_card_column

Create a column in a card table

basecamp_create_card_step

Create a step on a card

basecamp_create_wormhole

Add a wormhole to a card table: a standing shortcut that sends cards to a column on another card table, usually in another project.

basecamp_delete_wormhole

Permanently delete a card table's wormhole, the shortcut that sends cards to another card table.

basecamp_disable_card_column_on_hold

Disable on-hold section in a column

basecamp_enable_card_column_on_hold

Enable on-hold section in a column

basecamp_get_card_column

Get a card column by ID

basecamp_get_card_step

Get a step by ID

basecamp_move_card_column

Move a column to a slot within its card table.

basecamp_reposition_card_step

Reposition a step within a card

basecamp_set_card_column_color

Set the color of a column

basecamp_set_card_step_completion

Set card step completion status (PUT with completion: "on" to complete, "" to uncomplete)

basecamp_subscribe_to_card_column

Subscribe to a card column (watch for changes)

basecamp_unsubscribe_from_card_column

Unsubscribe from a card column (stop watching for changes)

basecamp_update_card_column

Update an existing column

basecamp_update_card_step

Update an existing step

basecamp_update_wormhole

Point a card table's wormhole, its shortcut for sending cards to another card table, at a different destination column

basecamp_create_attachment

Send the file as JSON: file_name plus content_base64.

basecamp_create_cloud_file

Create a new cloud file in a vault.

basecamp_create_google_document

Create a new Google document in a vault.

basecamp_create_hill_chart_version

Post a progress update on a todoset's hill chart.

basecamp_create_todolist_group

Create a new group in a todolist

basecamp_create_todoset_todo

Create a to-do directly under a project's to-do set, outside any to-do list.

basecamp_create_upload

Two steps: basecamp_create_attachment gives the attachable_sgid this needs.

basecamp_create_upload_version

Replace an upload's file with a new version The recording keeps its id, its URL and its comments; the previous file becomes a past version.

basecamp_create_vault

Create a new vault (subfolder) in a vault

basecamp_disable_out_of_office

Disable out of office for a person.

basecamp_disable_project_clients

Disable clients on a project 403 while the project still has any client users: revoke them first with UpdateProjectClientAccess.

basecamp_enable_out_of_office

Enable or replace out of office for a person.

basecamp_enable_project_clients

Enable clients on a project so client users can be added to it A deliberate step separate from adding clients: it turns on the project's client-facing surface and applies the default client visibility (the timeline and most docked tools become client-visible; the card table, Campfire, and Doors stay private).

basecamp_enroll_people

Add people to the Basecamp account and send each new person an invitation, optionally granting them several projects at once.

basecamp_get_cloud_file

Get a single cloud file by id

basecamp_get_google_document

Get a single Google document by id

basecamp_get_hill_chart

Get the hill chart for a todoset

basecamp_get_hill_chart_version

Get one progress update from a todoset's hill chart

basecamp_get_my_preferences

Get the current user's preferences

basecamp_get_out_of_office

Get the out of office status for a person

basecamp_get_person

Get a person by ID

basecamp_get_recording_subscription

Get subscription information for a recording

basecamp_get_todolist

get todolist

basecamp_get_todoset

Get a todoset (container for todolists in a project)

basecamp_get_upload

Get a single upload by id

basecamp_get_vault

Get a single vault by id

basecamp_join_project

Join the current person to an all-access project they can see the id of but are not on yet, when the project's admissions policy lets them in.

basecamp_list_assignable_people

List people who can be assigned todos

basecamp_list_hill_chart_versions

List the progress updates on a todoset's hill chart, newest first.

basecamp_list_pingable_people

list pingable people

basecamp_list_todolist_groups

list todolist groups

basecamp_list_upload_versions

list upload versions

basecamp_list_vaults

list vaults

basecamp_reposition_todo

Reposition a todo within its todolist, or move it into another list or the to-do set in the same project.

basecamp_reposition_todolist

Reposition a to-do list within its to-do set.

basecamp_reposition_todolist_group

Reposition a todolist group

basecamp_set_vault_view

Set how the current person sees one folder (vault) in Docs & Files: grid or list.

basecamp_subscribe_to_recording

Subscribe the current user to a recording

basecamp_unsubscribe_from_recording

Unsubscribe the current user from a recording

basecamp_update_cloud_file

Send only the fields to change: PopMCP reads the file first and sends the rest back, because Basecamp clears any field left out.

basecamp_update_document

Send only the fields to change: PopMCP reads the document first and sends the rest back, because Basecamp clears any field left out.

basecamp_update_google_document

Send only the fields to change: PopMCP reads the document first and sends the rest back, because Basecamp clears any field left out.

basecamp_update_hill_chart_settings

Track or untrack todolists on a hill chart

basecamp_update_my_preferences

Update the current user's preferences.

basecamp_update_my_profile

Name, title, bio, location, time zone and display settings.

basecamp_update_project_access

Add or remove people on a project.

basecamp_update_project_client_access

Update project client access (grant/revoke/create client users) The client-side counterpart to UpdateProjectAccess: grant adds existing client users by id, revoke removes client users, and create invites brand-new clients by email (name optional, defaulting to the address).

basecamp_update_recording_subscribers

Update subscriptions by adding or removing specific users

basecamp_update_todolist

Send only the fields to change: PopMCP reads the list first and sends the rest back, because Basecamp clears any field left out.

basecamp_update_upload

Update an existing upload

basecamp_update_vault

Update an existing vault

basecamp_create_message_type

Create a new message type in a project

basecamp_delete_message_type

Delete a message type

basecamp_get_comment

Get a single comment by id

basecamp_get_message_board

Get a message board

basecamp_get_message_type

Get a single message type by id

basecamp_list_all_cards_without_due_date

Open cards with no due date across all accessible projects, grouped by project (paginated).

basecamp_list_all_checkin_answers

Get every automatic check-in answer across all accessible projects, newest-first.

basecamp_list_all_comments

Get every comment across all accessible projects, newest-first (paginated).

basecamp_list_all_completed_cards

Completed cards across all accessible projects, grouped by project (paginated).

basecamp_list_all_completed_todos

Completed to-dos across all accessible projects, grouped by project (paginated).

basecamp_list_all_files

Get every file recording across all accessible projects, newest-first (paginated).

basecamp_list_all_forwards

Get every inbox forward across all accessible projects, newest-first (paginated).

basecamp_list_all_messages

Get every message across all accessible projects, newest-first (paginated).

basecamp_list_all_not_now_cards

Cards parked in a project's "Not now" column across all accessible projects, grouped by project (paginated).

basecamp_list_all_open_cards

Incomplete cards in active columns across all accessible projects, grouped by project (paginated).

basecamp_list_all_overdue_cards

Get every overdue card across all accessible projects, oldest-due-date-first.

basecamp_list_all_todos_without_due_date

Open to-dos with no due date across all accessible projects, grouped by project (paginated).

basecamp_list_all_unassigned_cards

Open, unassigned cards across all accessible projects, grouped by project (paginated).

basecamp_list_all_unassigned_todos

Open, unassigned to-dos across all accessible projects, grouped by project (paginated).

basecamp_list_message_types

list message types

basecamp_pin_message

Pin a message to the top of the message board

basecamp_unpin_message

Unpin a message from the message board

basecamp_update_comment

Update an existing comment

basecamp_update_message

Update an existing message

basecamp_update_message_type

Update an existing message type

basecamp_create_answer

Create a new answer for a question

basecamp_create_campfire_upload

Send the file as JSON: file_name plus content_base64.

basecamp_create_chatbot

Create a new chatbot for a campfire

basecamp_create_project_from_template

Create a project from a template (asynchronous)

basecamp_create_question

Create a new question in a questionnaire

basecamp_create_template

Create a new template

basecamp_create_template_library_card_table

Create a card table template with the default columns

basecamp_create_template_library_copy

Start copying a to-do list or card table template into a project

basecamp_create_template_library_todolist

Create an empty to-do list template

basecamp_create_templatification

Templatify a to-do list or card table

basecamp_delete_campfire_line

Delete a campfire line; allowed for the line's creator or an admin.

basecamp_delete_chatbot

Delete a chatbot

basecamp_delete_template

Delete a template (trash it)

basecamp_get_answer

Get a single answer by id

basecamp_get_campfire

Get a campfire by ID

basecamp_get_campfire_line

Get a campfire line by ID

basecamp_get_chatbot

Get a chatbot by ID

basecamp_get_project_construction

Get the status of a project construction

basecamp_get_question

Get a single question by id

basecamp_get_questionnaire

Get a questionnaire (automatic check-ins container) by id

basecamp_get_template

Get a single template by id

basecamp_get_template_library_copy

Get the current status of a to-do list template copy

basecamp_get_templatification

Get a templatification

basecamp_list_answers

list answers

basecamp_list_answers_by_person

list answers by person

basecamp_list_campfire_uploads

list campfire uploads

basecamp_list_campfires

list campfires

basecamp_list_chatbots

list chatbots

basecamp_list_my_question_reminders

Get pending check-in reminders for the current user Returns questions that are pending a response from the authenticated user.

basecamp_list_question_answerers

list question answerers

basecamp_list_questions

list questions

basecamp_list_template_library_card_tables

Get the account's card table templates

basecamp_list_template_library_todolists

Get the account's to-do list templates

basecamp_list_templates

list templates

basecamp_pause_question

Pause a check-in question (stops sending reminders)

basecamp_post_chatbot_line

Post a line into a Campfire AS a chatbot, with the chatbot's own key.

basecamp_resume_question

Resume a paused check-in question (resumes sending reminders)

basecamp_update_answer

Update an existing answer

basecamp_update_campfire_line

Update an existing campfire line; the content is always treated as rich text (HTML).

basecamp_update_chatbot

Update an existing chatbot

basecamp_update_question

Update an existing question's title, schedule or both.

basecamp_update_question_notification_settings

Update notification settings for a check-in question

basecamp_update_template

Update an existing template

basecamp_create_timesheet_entry

Create a timesheet entry on a recording

basecamp_delete_timesheet_entry

delete timesheet entry

basecamp_get_project_timesheet

Get timesheet for a specific project

basecamp_get_recording_timesheet

Get timesheet for a specific recording

basecamp_get_schedule

Get a schedule

basecamp_get_schedule_entry

Get a single schedule entry by id.

basecamp_get_schedule_entry_occurrence

Get a specific occurrence of a recurring schedule entry

basecamp_get_timesheet_entry

Get a single timesheet entry

basecamp_get_timesheet_report

Get account-wide timesheet report

basecamp_update_schedule_entry

Send only the fields to change: PopMCP reads the entry first and sends the rest back, because Basecamp clears any field left out.

basecamp_update_schedule_settings

Update schedule settings

basecamp_update_timesheet_entry

Update a timesheet entry

basecamp_archive_project

Archive a project, removing it from the active project list (returns 204 No Content).

basecamp_archive_recording

archive recording

basecamp_copy_recording

Start copying a recording into another project; poll GetFiling for the result.

basecamp_create_project

Create a new project

basecamp_get_filing

Get the state of a move or copy started by MoveRecording or CopyRecording.

basecamp_get_recording

Get any recording by id, whatever its type (to-do, message, document, upload, card, comment and more): the generic shape with type, title, status, parent and bucket.

basecamp_list_events

list events

basecamp_list_recent_projects

List the projects the current user has most recently visited, most recent visit first.

basecamp_list_recording_backlinks

List the recordings whose rich text references this recording, newest first (the most recent 20).

basecamp_list_recordings

List one type of content across projects.

basecamp_move_recording

Start moving a recording into another project; poll GetFiling for the result.

basecamp_move_recording_to_vault

Move a document, upload or vault into another vault in its project, or reorder it in its own vault.

basecamp_record_project_visit

Record that the current user visited a project, moving it to the front of ListRecentProjects (returns 204 No Content).

basecamp_remove_project_logo

Remove the project's logo (returns 204 even when absent).

basecamp_remove_project_wallpaper

Remove the project's wallpaper (returns 204 No Content).

basecamp_spotlight_recording

Put a recording's card in the spotlight area on its project or template home page.

basecamp_trash_project

Trashes the whole project and everything in it; Basecamp deletes it for good after 30 days.

basecamp_unarchive_project

Restore a project to active status from trash as well as from the archive (returns 204 No Content).

basecamp_unarchive_recording

Unarchive a recording (restore to active status)

basecamp_unspotlight_recording

Remove a recording from the spotlight area.

basecamp_update_project

Send only the fields to change: PopMCP fills in the name and description from the project when you leave them out.

basecamp_update_project_logo

Send the image as JSON: file_name plus content_base64.

basecamp_update_project_wallpaper

Send the image as JSON: file_name plus content_base64.

basecamp_complete_subtask

Mark a subtask as completed

basecamp_create_external_link

Add an external link (a Figma file, a Dropbox folder, a GitHub repository or any address) to a project's External links section.

basecamp_create_project_tool

Create a tool in a project dock

basecamp_create_subtask

Create a subtask under a to-do or a card Any other recording answers 403 Forbidden.

basecamp_delete_project_tool

Remove a tool from the dock: deletes an external link or an empty extra tool, and disables any other tool (returns 204 No Content either way).

basecamp_delete_subtask

Delete a subtask On accounts where deleting is limited to admins and the creator, everyone else gets 403 Forbidden.

basecamp_disable_project_tool

Disable a tool (hide it from the project dock)

basecamp_enable_project_tool

Enable a tool (show it on the project dock)

basecamp_get_project_tool

Get a dock tool by id

basecamp_get_subtask

Get a subtask by ID

basecamp_list_subtasks

List a recording's subtasks, in position order Only to-dos and cards hold subtasks; check for subtasks_count and subtasks_url on the parent's JSON.

basecamp_rename_project_tool

Update (rename) an existing tool

basecamp_reposition_project_tool

Reposition a tool on the project dock

basecamp_reposition_subtask

Move a subtask to a new position among its siblings

basecamp_uncomplete_subtask

Mark a subtask as not completed

basecamp_update_subtask

Update a subtask A partial update: every omitted parameter is left unchanged.

basecamp_create_event_boost

Create a boost on a specific event within a recording.

basecamp_create_gauge_needle

Create a gauge needle (progress update) for a project

basecamp_create_recording_boost

Create a boost on a recording

basecamp_delete_boost

Delete a boost

basecamp_delete_gauge_needle

Destroy a gauge needle

basecamp_get_boost

Get a single boost

basecamp_get_client_approval

Get a single client approval by id

basecamp_get_client_correspondence

Get a single client correspondence by id

basecamp_get_client_reply

Get a single client reply by id

basecamp_get_gauge_needle

Get a gauge needle by ID

basecamp_list_client_approvals

list client approvals

basecamp_list_client_correspondences

list client correspondences

basecamp_list_client_replies

list client replies

basecamp_list_event_boosts

List boosts on a specific event within a recording.

basecamp_list_gauge_needles

List gauge needles for a project, ordered newest first.

basecamp_list_gauges

List gauges across all projects the authenticated user has access to.

basecamp_list_recording_boosts

List boosts on a recording

basecamp_set_client_visibility

Set client visibility for a recording

basecamp_set_project_gauge

Enable or disable the gauge for a project.

basecamp_update_boost

Replace the content of a boost.

basecamp_update_gauge_needle

Update a gauge needle's description.

basecamp_deprioritize_assignment

Remove a recording from Up Next (returns 204 No Content).

basecamp_list_my_completed_assignments

Get the current user's completed assignments.

basecamp_list_my_due_assignments

Get the current user's assignments filtered by due date scope.

basecamp_prioritize_assignment

Add a recording to Up Next: the current user's ordered list of prioritized assignments (the priorities returned by GetMyAssignments).

basecamp_reorder_up_next

Move an already-prioritized recording to a new 1-based position in Up Next (returns 204 No Content).

basecamp_create_bubble_up

Bubble up a recording for the current user, resurfacing it in the current user's readings (the BC5 successor to "save").

basecamp_create_folder

Create a folder for the authenticated user and file the given projects into it.

basecamp_create_webhook

Webhooks belong to one project: bucketId is the project id.

basecamp_delete_bubble_up

Remove the current user's bubble-up from a recording (returns 204 No Content).

basecamp_delete_folder

Delete a folder and unpin its projects from the home screen (returns 204 No Content).

basecamp_delete_webhook

Delete a webhook

basecamp_get_account

Get the account for the current access token

basecamp_get_authorization

Who this connection signs in as and which Basecamp accounts it reaches: identity, accounts (product bc3 is Basecamp), scope (full or read) and when the token expires.

basecamp_get_folder

Get one folder, with the projects grouped inside it expanded under projects.

basecamp_get_forward

Get a forward by ID

basecamp_get_forward_reply

Get a forward reply by ID

basecamp_get_inbox

Get an inbox by ID

basecamp_get_person_progress

Get a person's activity timeline

basecamp_get_progress_report

Get account-wide activity feed (progress report)

basecamp_get_webhook

Get a single webhook by id

basecamp_list_assigned_todos

Get todos assigned to a specific person

basecamp_list_folders

List the authenticated user's folders in home-screen order.

basecamp_list_forward_replies

list forward replies

basecamp_list_forwards

list forwards

basecamp_list_my_bubble_ups

Get the current user's current and scheduled bubble-ups (paginated, 50 per page).

basecamp_list_overdue_todos

Get overdue todos grouped by lateness

basecamp_list_webhooks

Webhooks belong to one project: bucketId is the project id.

basecamp_mark_as_read

mark as read

basecamp_remove_account_logo

Remove the account logo.

basecamp_update_account_logo

Send the image as JSON: file_name plus content_base64.

basecamp_update_account_name

Rename the current account.

basecamp_update_folder

Rename a folder.

basecamp_update_webhook

Update an existing webhook

basecamp_create_bookmark

Bookmark a recording for the current user.

basecamp_create_lineup_marker

Create a new lineup marker.

basecamp_delete_bookmark

Remove the current user's bookmark from a recording (returns 204 No Content).

basecamp_delete_lineup_marker

Delete a lineup marker

basecamp_get_bookmark

Report whether the current user has bookmarked the recording.

basecamp_list_lineup_markers

List all lineup markers for the account

basecamp_list_my_bookmarks

List the current user's bookmarks, most recently bookmarked first (paginated).

basecamp_update_lineup_marker

Update an existing lineup marker.

basecamp_create_ping

Create a Ping with people, or return the one that already holds exactly them.

basecamp_get_ping

Get a Ping by its id, which is its bucket's id.

basecamp_list_pings

Get Pings: the caller's active Pings that have a line in them, most recently updated first, in one unpaginated response.

basecamp_create_embed

Create an embed for a URL, or return the one Basecamp already has for it.

basecamp_get_calendar

Get a calendar by its bucket id.

basecamp_get_embed

Get an embed by its sgid.

basecamp_get_my_note

Get the authenticated user's note: a per-person notebook singleton at /my/notes.json.

basecamp_get_search_metadata

Get search metadata (available filter options)

basecamp_poll_account_events

The account's event feed, oldest first.

basecamp_poll_my_inbox

Poll the authenticated agent's inbox for the items that addressed it (oldest first, strict item-id order); people receive 403.

basecamp_update_calendar

Update a calendar's display color.

basecamp_update_my_note

Replace the note's content, recording a new revision server-side.

basecamp_list_my_drafts

List the current user's drafts across their active projects, most recently updated first (paginated, capped at 250 like /my/assignments).

Connect Basecamp to Claude, ChatGPT and Claude Code

Authorize once, then an endpoint your client signs into. Nothing to deploy, and nothing to install on the Basecamp side.

Open Basecamp in PopMCP, click Authorize with Basecamp, sign in, pick your account and approve. There is no developer app and no callback URL to set up. If your account offers personal access tokens, one goes under More options instead.

How you connectyour-basecamp-value
Permissionsyour-basecamp-value
Personal access token (instead of signing in)••••••••••••3f7a
Authorize PopMCP on BasecampAuthorize

Then just ask for the work

  • “What is overdue across all my projects, and who is each to-do assigned to?”

    • list_all_overdue_todos
    • list_my_assignments
  • “Catch me up on the Website relaunch project: who is on it, what is left to do and what was said this week”

    • get_project_overview
    • list_project_todos
    • get_project_timeline
  • “Add a to-do to the Launch list in Website relaunch, assign it to Ann and make it due on Friday”

    • add_todo
    • list_project_people
    • update_todo
  • “Move every card in Review that has been approved to Done, and comment on each one with what changed”

    • get_card_table
    • list_cards_in_column
    • move_card
    • create_comment

Use Basecamp from the assistant you already open

One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.

Claude DesktopCustom connector

Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.

Claude WebCustom connector

The same endpoint, registered in the browser. Nothing to install on the machine you are working from.

ChatGPTCustom connector

Register PopMCP as a custom connector, then let ChatGPT read and update the account.

CodexDesktop & CLI

Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.

OpenCodeCoding agent

Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.

ZCodeDesktop app

Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.

Basecamp MCP server questions

What teams ask before putting Basecamp behind an AI client.

Do I need a Basecamp developer app or API key?

No. PopMCP is a registered OAuth client of Basecamp, so you click Authorize with Basecamp, sign in, pick your account and approve. If your account offers personal access tokens, you can use one instead under More options, and a company that wants its own app can register one at Launchpad and enter it there too.

Which Basecamp plans and versions work?

Every Basecamp account has the API, on any plan. Basecamp 3, 4 and 5 all share this API, so older accounts connect the same way. Basecamp 2 and Basecamp Classic have separate, older APIs and do not work with this connector.

Can it reach more than one Basecamp account?

Each PopMCP connection holds one Basecamp account, and a call aimed at another account is refused. If you belong to several, connect each one to its own PopMCP workspace. Basecamp's approval page asks which account to use when you sign in.

Will the AI wipe fields when it updates a to-do?

No. Basecamp clears any field a plain update of a to-do, document, file, schedule entry or to-do list leaves out. These tools read the item first and send everything back with your change on top, so only what you asked for changes. One narrow gap remains: an edit someone else saves in the same moment can be overwritten.

Can it read and upload files?

Yes. basecamp_upload_file stores a file in a project's Docs and Files from one call, up to 25 MB. basecamp_download_file reads a stored file: short text comes back as text, small pictures are attached to the answer, and anything else comes back as a short-lived link.

Are there rate limits?

Basecamp's first limit is about 50 requests per 10 seconds from one address. All PopMCP traffic to Basecamp shares it, so PopMCP counts requests per connection and per account and stops a runaway loop before Basecamp does. A normal conversation never comes near it, and the one-call tools use fewer requests than doing each step separately.

Do I have to run or host the Basecamp MCP server myself?

No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.

Which AI clients can use this MCP server?

Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.

How do I connect Basecamp to Claude Code?

Connect Basecamp in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking Basecamp on the consent screen. The Basecamp tools are then available in that session, and no Basecamp credential is stored on your machine.

Why do only 50 of the 312 tools load by default?

Loading 312 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 50-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.

What is the difference between a tool and a trigger?

A tool is something your AI calls, and there are 312 here. A trigger is something PopMCP watches for you: 25 Basecamp events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Basecamp.

Connect Basecamp to your AI in minutes

Launch a hosted MCP endpoint for Basecamp, keep tool access under control, and start testing real workflow prompts right away.

Connect your first MCP