basecamp_create_ cardThe column id comes from basecamp_get_card_table.
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
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_ cardThe column id comes from basecamp_get_card_table.
basecamp_get_ cardGet a card by ID
basecamp_get_ card_ tableThe card table id is tool_ids.kanban_board of basecamp_get_project.
basecamp_list_ cards_ in_ columnThe column id comes from basecamp_get_card_table.
basecamp_move_ cardcolumn_id may be a column of another card table in the same project.
basecamp_update_ cardUpdate an existing card
basecamp_complete_ todoMarks the to-do done.
basecamp_create_ documentThe folder id is tool_ids.vault of basecamp_get_project, or from basecamp_list_vaults.
basecamp_create_ todoThe to-do list id comes from basecamp_list_todolists.
basecamp_create_ todolistThe to-do set id is tool_ids.todoset of basecamp_get_project.
basecamp_get_ documentGet a single document by id
basecamp_get_ my_ profileThe connected person, with the id and attachable_sgid other tools take.
basecamp_get_ todoGet a single todo by id
basecamp_list_ documentsThe folder id is tool_ids.vault of basecamp_get_project, or from basecamp_list_vaults.
basecamp_list_ peopleEveryone visible in the account, with the id and attachable_sgid other tools take.
basecamp_list_ project_ peoplelist project people
basecamp_list_ todolistsThe to-do lists of a project's to-do set.
basecamp_list_ todosThe to-dos of one to-do list: basecamp_list_todolists gives the list ids.
basecamp_list_ uploadsThe folder id is tool_ids.vault of basecamp_get_project, or from basecamp_list_vaults.
basecamp_uncomplete_ todoMark a todo as incomplete
basecamp_update_ todoSend 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_ commentWorks on any recording that takes comments: to-do, message, document, upload, card.
basecamp_create_ messageThe message board id is tool_ids.message_board of basecamp_get_project.
basecamp_get_ messageGet a single message by id
basecamp_list_ all_ open_ todosActive, incomplete to-dos across all accessible projects, grouped by project (paginated).
basecamp_list_ all_ overdue_ todosGet every overdue to-do across all accessible projects, oldest-due-date-first.
basecamp_list_ commentsWorks on any recording that takes comments.
basecamp_list_ messagesThe message board id is tool_ids.message_board of basecamp_get_project.
basecamp_create_ campfire_ lineThe Campfire id is tool_ids.chat of basecamp_get_project.
basecamp_list_ campfire_ linesThe Campfire id is tool_ids.chat of basecamp_get_project, or from basecamp_list_campfires.
basecamp_create_ schedule_ entryThe schedule id is tool_ids.schedule of basecamp_get_project.
basecamp_list_ schedule_ entriesThe schedule id is tool_ids.schedule of basecamp_get_project.
basecamp_get_ projecttool_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_ projectsStart here: every project.
basecamp_trash_ recordingMoves any recording to the trash.
basecamp_add_ cardAdd a card from a project and a column name.
basecamp_add_ todoAdd a to-do from a project and a list name.
basecamp_download_ fileRead a stored file from its download_url.
basecamp_find_ projectFind a project by name, with its id and tool ids.
basecamp_get_ project_ imageA project's logo or wallpaper.
basecamp_get_ project_ overviewA project's details, people, to-do lists, messages and recent activity in one call.
basecamp_list_ project_ todosEvery to-do list of a project with its to-dos.
basecamp_post_ messagePost a message to a project's message board.
basecamp_post_ to_ campfireSend a line to a project's Campfire.
basecamp_upload_ fileUpload a file to a project's Docs & Files.
basecamp_list_ my_ assignmentsWhat is assigned to the connected person, split into priorities and non_priorities.
basecamp_list_ my_ notificationsGet the current user's notifications (the "Hey!" menu in Basecamp 4).
basecamp_list_ upcoming_ scheduleGet upcoming schedule entries and assignable items within a date window.
basecamp_searchSearch across the whole account.
basecamp_get_ project_ timelineGet project timeline
basecamp_create_ card_ columnCreate a column in a card table
basecamp_create_ card_ stepCreate a step on a card
basecamp_create_ wormholeAdd 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_ wormholePermanently delete a card table's wormhole, the shortcut that sends cards to another card table.
basecamp_disable_ card_ column_ on_ holdDisable on-hold section in a column
basecamp_enable_ card_ column_ on_ holdEnable on-hold section in a column
basecamp_get_ card_ columnGet a card column by ID
basecamp_get_ card_ stepGet a step by ID
basecamp_move_ card_ columnMove a column to a slot within its card table.
basecamp_reposition_ card_ stepReposition a step within a card
basecamp_set_ card_ column_ colorSet the color of a column
basecamp_set_ card_ step_ completionSet card step completion status (PUT with completion: "on" to complete, "" to uncomplete)
basecamp_subscribe_ to_ card_ columnSubscribe to a card column (watch for changes)
basecamp_unsubscribe_ from_ card_ columnUnsubscribe from a card column (stop watching for changes)
basecamp_update_ card_ columnUpdate an existing column
basecamp_update_ card_ stepUpdate an existing step
basecamp_update_ wormholePoint a card table's wormhole, its shortcut for sending cards to another card table, at a different destination column
basecamp_create_ attachmentSend the file as JSON: file_name plus content_base64.
basecamp_create_ cloud_ fileCreate a new cloud file in a vault.
basecamp_create_ google_ documentCreate a new Google document in a vault.
basecamp_create_ hill_ chart_ versionPost a progress update on a todoset's hill chart.
basecamp_create_ todolist_ groupCreate a new group in a todolist
basecamp_create_ todoset_ todoCreate a to-do directly under a project's to-do set, outside any to-do list.
basecamp_create_ uploadTwo steps: basecamp_create_attachment gives the attachable_sgid this needs.
basecamp_create_ upload_ versionReplace 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_ vaultCreate a new vault (subfolder) in a vault
basecamp_disable_ out_ of_ officeDisable out of office for a person.
basecamp_disable_ project_ clientsDisable clients on a project 403 while the project still has any client users: revoke them first with UpdateProjectClientAccess.
basecamp_enable_ out_ of_ officeEnable or replace out of office for a person.
basecamp_enable_ project_ clientsEnable 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_ peopleAdd people to the Basecamp account and send each new person an invitation, optionally granting them several projects at once.
basecamp_get_ cloud_ fileGet a single cloud file by id
basecamp_get_ google_ documentGet a single Google document by id
basecamp_get_ hill_ chartGet the hill chart for a todoset
basecamp_get_ hill_ chart_ versionGet one progress update from a todoset's hill chart
basecamp_get_ my_ preferencesGet the current user's preferences
basecamp_get_ out_ of_ officeGet the out of office status for a person
basecamp_get_ personGet a person by ID
basecamp_get_ recording_ subscriptionGet subscription information for a recording
basecamp_get_ todolistget todolist
basecamp_get_ todosetGet a todoset (container for todolists in a project)
basecamp_get_ uploadGet a single upload by id
basecamp_get_ vaultGet a single vault by id
basecamp_join_ projectJoin 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_ peopleList people who can be assigned todos
basecamp_list_ hill_ chart_ versionsList the progress updates on a todoset's hill chart, newest first.
basecamp_list_ pingable_ peoplelist pingable people
basecamp_list_ todolist_ groupslist todolist groups
basecamp_list_ upload_ versionslist upload versions
basecamp_list_ vaultslist vaults
basecamp_reposition_ todoReposition a todo within its todolist, or move it into another list or the to-do set in the same project.
basecamp_reposition_ todolistReposition a to-do list within its to-do set.
basecamp_reposition_ todolist_ groupReposition a todolist group
basecamp_set_ vault_ viewSet how the current person sees one folder (vault) in Docs & Files: grid or list.
basecamp_subscribe_ to_ recordingSubscribe the current user to a recording
basecamp_unsubscribe_ from_ recordingUnsubscribe the current user from a recording
basecamp_update_ cloud_ fileSend only the fields to change: PopMCP reads the file first and sends the rest back, because Basecamp clears any field left out.
basecamp_update_ documentSend 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_ documentSend 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_ settingsTrack or untrack todolists on a hill chart
basecamp_update_ my_ preferencesUpdate the current user's preferences.
basecamp_update_ my_ profileName, title, bio, location, time zone and display settings.
basecamp_update_ project_ accessAdd or remove people on a project.
basecamp_update_ project_ client_ accessUpdate 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_ subscribersUpdate subscriptions by adding or removing specific users
basecamp_update_ todolistSend only the fields to change: PopMCP reads the list first and sends the rest back, because Basecamp clears any field left out.
basecamp_update_ uploadUpdate an existing upload
basecamp_update_ vaultUpdate an existing vault
basecamp_create_ message_ typeCreate a new message type in a project
basecamp_delete_ message_ typeDelete a message type
basecamp_get_ commentGet a single comment by id
basecamp_get_ message_ boardGet a message board
basecamp_get_ message_ typeGet a single message type by id
basecamp_list_ all_ cards_ without_ due_ dateOpen cards with no due date across all accessible projects, grouped by project (paginated).
basecamp_list_ all_ checkin_ answersGet every automatic check-in answer across all accessible projects, newest-first.
basecamp_list_ all_ commentsGet every comment across all accessible projects, newest-first (paginated).
basecamp_list_ all_ completed_ cardsCompleted cards across all accessible projects, grouped by project (paginated).
basecamp_list_ all_ completed_ todosCompleted to-dos across all accessible projects, grouped by project (paginated).
basecamp_list_ all_ filesGet every file recording across all accessible projects, newest-first (paginated).
basecamp_list_ all_ forwardsGet every inbox forward across all accessible projects, newest-first (paginated).
basecamp_list_ all_ messagesGet every message across all accessible projects, newest-first (paginated).
basecamp_list_ all_ not_ now_ cardsCards parked in a project's "Not now" column across all accessible projects, grouped by project (paginated).
basecamp_list_ all_ open_ cardsIncomplete cards in active columns across all accessible projects, grouped by project (paginated).
basecamp_list_ all_ overdue_ cardsGet every overdue card across all accessible projects, oldest-due-date-first.
basecamp_list_ all_ todos_ without_ due_ dateOpen to-dos with no due date across all accessible projects, grouped by project (paginated).
basecamp_list_ all_ unassigned_ cardsOpen, unassigned cards across all accessible projects, grouped by project (paginated).
basecamp_list_ all_ unassigned_ todosOpen, unassigned to-dos across all accessible projects, grouped by project (paginated).
basecamp_list_ message_ typeslist message types
basecamp_pin_ messagePin a message to the top of the message board
basecamp_unpin_ messageUnpin a message from the message board
basecamp_update_ commentUpdate an existing comment
basecamp_update_ messageUpdate an existing message
basecamp_update_ message_ typeUpdate an existing message type
basecamp_create_ answerCreate a new answer for a question
basecamp_create_ campfire_ uploadSend the file as JSON: file_name plus content_base64.
basecamp_create_ chatbotCreate a new chatbot for a campfire
basecamp_create_ project_ from_ templateCreate a project from a template (asynchronous)
basecamp_create_ questionCreate a new question in a questionnaire
basecamp_create_ templateCreate a new template
basecamp_create_ template_ library_ card_ tableCreate a card table template with the default columns
basecamp_create_ template_ library_ copyStart copying a to-do list or card table template into a project
basecamp_create_ template_ library_ todolistCreate an empty to-do list template
basecamp_create_ templatificationTemplatify a to-do list or card table
basecamp_delete_ campfire_ lineDelete a campfire line; allowed for the line's creator or an admin.
basecamp_delete_ chatbotDelete a chatbot
basecamp_delete_ templateDelete a template (trash it)
basecamp_get_ answerGet a single answer by id
basecamp_get_ campfireGet a campfire by ID
basecamp_get_ campfire_ lineGet a campfire line by ID
basecamp_get_ chatbotGet a chatbot by ID
basecamp_get_ project_ constructionGet the status of a project construction
basecamp_get_ questionGet a single question by id
basecamp_get_ questionnaireGet a questionnaire (automatic check-ins container) by id
basecamp_get_ templateGet a single template by id
basecamp_get_ template_ library_ copyGet the current status of a to-do list template copy
basecamp_get_ templatificationGet a templatification
basecamp_list_ answerslist answers
basecamp_list_ answers_ by_ personlist answers by person
basecamp_list_ campfire_ uploadslist campfire uploads
basecamp_list_ campfireslist campfires
basecamp_list_ chatbotslist chatbots
basecamp_list_ my_ question_ remindersGet pending check-in reminders for the current user Returns questions that are pending a response from the authenticated user.
basecamp_list_ question_ answererslist question answerers
basecamp_list_ questionslist questions
basecamp_list_ template_ library_ card_ tablesGet the account's card table templates
basecamp_list_ template_ library_ todolistsGet the account's to-do list templates
basecamp_list_ templateslist templates
basecamp_pause_ questionPause a check-in question (stops sending reminders)
basecamp_post_ chatbot_ linePost a line into a Campfire AS a chatbot, with the chatbot's own key.
basecamp_resume_ questionResume a paused check-in question (resumes sending reminders)
basecamp_update_ answerUpdate an existing answer
basecamp_update_ campfire_ lineUpdate an existing campfire line; the content is always treated as rich text (HTML).
basecamp_update_ chatbotUpdate an existing chatbot
basecamp_update_ questionUpdate an existing question's title, schedule or both.
basecamp_update_ question_ notification_ settingsUpdate notification settings for a check-in question
basecamp_update_ templateUpdate an existing template
basecamp_create_ timesheet_ entryCreate a timesheet entry on a recording
basecamp_delete_ timesheet_ entrydelete timesheet entry
basecamp_get_ project_ timesheetGet timesheet for a specific project
basecamp_get_ recording_ timesheetGet timesheet for a specific recording
basecamp_get_ scheduleGet a schedule
basecamp_get_ schedule_ entryGet a single schedule entry by id.
basecamp_get_ schedule_ entry_ occurrenceGet a specific occurrence of a recurring schedule entry
basecamp_get_ timesheet_ entryGet a single timesheet entry
basecamp_get_ timesheet_ reportGet account-wide timesheet report
basecamp_update_ schedule_ entrySend 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_ settingsUpdate schedule settings
basecamp_update_ timesheet_ entryUpdate a timesheet entry
basecamp_archive_ projectArchive a project, removing it from the active project list (returns 204 No Content).
basecamp_archive_ recordingarchive recording
basecamp_copy_ recordingStart copying a recording into another project; poll GetFiling for the result.
basecamp_create_ projectCreate a new project
basecamp_get_ filingGet the state of a move or copy started by MoveRecording or CopyRecording.
basecamp_get_ recordingGet 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_ eventslist events
basecamp_list_ recent_ projectsList the projects the current user has most recently visited, most recent visit first.
basecamp_list_ recording_ backlinksList the recordings whose rich text references this recording, newest first (the most recent 20).
basecamp_list_ recordingsList one type of content across projects.
basecamp_move_ recordingStart moving a recording into another project; poll GetFiling for the result.
basecamp_move_ recording_ to_ vaultMove a document, upload or vault into another vault in its project, or reorder it in its own vault.
basecamp_record_ project_ visitRecord that the current user visited a project, moving it to the front of ListRecentProjects (returns 204 No Content).
basecamp_remove_ project_ logoRemove the project's logo (returns 204 even when absent).
basecamp_remove_ project_ wallpaperRemove the project's wallpaper (returns 204 No Content).
basecamp_spotlight_ recordingPut a recording's card in the spotlight area on its project or template home page.
basecamp_trash_ projectTrashes the whole project and everything in it; Basecamp deletes it for good after 30 days.
basecamp_unarchive_ projectRestore a project to active status from trash as well as from the archive (returns 204 No Content).
basecamp_unarchive_ recordingUnarchive a recording (restore to active status)
basecamp_unspotlight_ recordingRemove a recording from the spotlight area.
basecamp_update_ projectSend only the fields to change: PopMCP fills in the name and description from the project when you leave them out.
basecamp_update_ project_ logoSend the image as JSON: file_name plus content_base64.
basecamp_update_ project_ wallpaperSend the image as JSON: file_name plus content_base64.
basecamp_complete_ subtaskMark a subtask as completed
basecamp_create_ external_ linkAdd 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_ toolCreate a tool in a project dock
basecamp_create_ subtaskCreate a subtask under a to-do or a card Any other recording answers 403 Forbidden.
basecamp_delete_ project_ toolRemove 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_ subtaskDelete a subtask On accounts where deleting is limited to admins and the creator, everyone else gets 403 Forbidden.
basecamp_disable_ project_ toolDisable a tool (hide it from the project dock)
basecamp_enable_ project_ toolEnable a tool (show it on the project dock)
basecamp_get_ project_ toolGet a dock tool by id
basecamp_get_ subtaskGet a subtask by ID
basecamp_list_ subtasksList 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_ toolUpdate (rename) an existing tool
basecamp_reposition_ project_ toolReposition a tool on the project dock
basecamp_reposition_ subtaskMove a subtask to a new position among its siblings
basecamp_uncomplete_ subtaskMark a subtask as not completed
basecamp_update_ subtaskUpdate a subtask A partial update: every omitted parameter is left unchanged.
basecamp_create_ event_ boostCreate a boost on a specific event within a recording.
basecamp_create_ gauge_ needleCreate a gauge needle (progress update) for a project
basecamp_create_ recording_ boostCreate a boost on a recording
basecamp_delete_ boostDelete a boost
basecamp_delete_ gauge_ needleDestroy a gauge needle
basecamp_get_ boostGet a single boost
basecamp_get_ client_ approvalGet a single client approval by id
basecamp_get_ client_ correspondenceGet a single client correspondence by id
basecamp_get_ client_ replyGet a single client reply by id
basecamp_get_ gauge_ needleGet a gauge needle by ID
basecamp_list_ client_ approvalslist client approvals
basecamp_list_ client_ correspondenceslist client correspondences
basecamp_list_ client_ replieslist client replies
basecamp_list_ event_ boostsList boosts on a specific event within a recording.
basecamp_list_ gauge_ needlesList gauge needles for a project, ordered newest first.
basecamp_list_ gaugesList gauges across all projects the authenticated user has access to.
basecamp_list_ recording_ boostsList boosts on a recording
basecamp_set_ client_ visibilitySet client visibility for a recording
basecamp_set_ project_ gaugeEnable or disable the gauge for a project.
basecamp_update_ boostReplace the content of a boost.
basecamp_update_ gauge_ needleUpdate a gauge needle's description.
basecamp_deprioritize_ assignmentRemove a recording from Up Next (returns 204 No Content).
basecamp_list_ my_ completed_ assignmentsGet the current user's completed assignments.
basecamp_list_ my_ due_ assignmentsGet the current user's assignments filtered by due date scope.
basecamp_prioritize_ assignmentAdd a recording to Up Next: the current user's ordered list of prioritized assignments (the priorities returned by GetMyAssignments).
basecamp_reorder_ up_ nextMove an already-prioritized recording to a new 1-based position in Up Next (returns 204 No Content).
basecamp_create_ bubble_ upBubble up a recording for the current user, resurfacing it in the current user's readings (the BC5 successor to "save").
basecamp_create_ folderCreate a folder for the authenticated user and file the given projects into it.
basecamp_create_ webhookWebhooks belong to one project: bucketId is the project id.
basecamp_delete_ bubble_ upRemove the current user's bubble-up from a recording (returns 204 No Content).
basecamp_delete_ folderDelete a folder and unpin its projects from the home screen (returns 204 No Content).
basecamp_delete_ webhookDelete a webhook
basecamp_get_ accountGet the account for the current access token
basecamp_get_ authorizationWho 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_ folderGet one folder, with the projects grouped inside it expanded under projects.
basecamp_get_ forwardGet a forward by ID
basecamp_get_ forward_ replyGet a forward reply by ID
basecamp_get_ inboxGet an inbox by ID
basecamp_get_ person_ progressGet a person's activity timeline
basecamp_get_ progress_ reportGet account-wide activity feed (progress report)
basecamp_get_ webhookGet a single webhook by id
basecamp_list_ assigned_ todosGet todos assigned to a specific person
basecamp_list_ foldersList the authenticated user's folders in home-screen order.
basecamp_list_ forward_ replieslist forward replies
basecamp_list_ forwardslist forwards
basecamp_list_ my_ bubble_ upsGet the current user's current and scheduled bubble-ups (paginated, 50 per page).
basecamp_list_ overdue_ todosGet overdue todos grouped by lateness
basecamp_list_ webhooksWebhooks belong to one project: bucketId is the project id.
basecamp_mark_ as_ readmark as read
basecamp_remove_ account_ logoRemove the account logo.
basecamp_update_ account_ logoSend the image as JSON: file_name plus content_base64.
basecamp_update_ account_ nameRename the current account.
basecamp_update_ folderRename a folder.
basecamp_update_ webhookUpdate an existing webhook
basecamp_create_ bookmarkBookmark a recording for the current user.
basecamp_create_ lineup_ markerCreate a new lineup marker.
basecamp_delete_ bookmarkRemove the current user's bookmark from a recording (returns 204 No Content).
basecamp_delete_ lineup_ markerDelete a lineup marker
basecamp_get_ bookmarkReport whether the current user has bookmarked the recording.
basecamp_list_ lineup_ markersList all lineup markers for the account
basecamp_list_ my_ bookmarksList the current user's bookmarks, most recently bookmarked first (paginated).
basecamp_update_ lineup_ markerUpdate an existing lineup marker.
basecamp_create_ pingCreate a Ping with people, or return the one that already holds exactly them.
basecamp_get_ pingGet a Ping by its id, which is its bucket's id.
basecamp_list_ pingsGet Pings: the caller's active Pings that have a line in them, most recently updated first, in one unpaginated response.
basecamp_create_ embedCreate an embed for a URL, or return the one Basecamp already has for it.
basecamp_get_ calendarGet a calendar by its bucket id.
basecamp_get_ embedGet an embed by its sgid.
basecamp_get_ my_ noteGet the authenticated user's note: a per-person notebook singleton at /my/notes.json.
basecamp_get_ search_ metadataGet search metadata (available filter options)
basecamp_poll_ account_ eventsThe account's event feed, oldest first.
basecamp_poll_ my_ inboxPoll the authenticated agent's inbox for the items that addressed it (oldest first, strict item-id order); people receive 403.
basecamp_update_ calendarUpdate a calendar's display color.
basecamp_update_ my_ noteReplace the note's content, recording a new revision server-side.
basecamp_list_ my_ draftsList the current user's drafts across their active projects, most recently updated first (paginated, capped at 250 like /my/assignments).
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.
your-basecamp-valueyour-basecamp-value••••••••••••3f7aThe AI sees and changes only what you can in Basecamp. Reading changes nothing. Adding, editing, moving and trashing wait until an owner or admin allows write actions in PopMCP, and new connections start read-only. Choosing Read-only access on Basecamp's approval page holds it to reading whatever PopMCP allows.
Drop the PopMCP URL into Claude, ChatGPT, Claude Code, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Basecamp credential never leaves the server.
app.popmcp.com/mcpAsk for something harmless before the agent changes anything. Writes run as soon as it calls them, so confirm it reads the right account first.
What is overdue across all my projects, and who is each to-do assigned to?
basecamp_list_all_overdue_todosok
Then just ask for the work
“What is overdue across all my projects, and who is each to-do assigned to?”
“Catch me up on the Website relaunch project: who is on it, what is left to do and what was said this week”
“Add a to-do to the Launch list in Website relaunch, assign it to Ann and make it due on Friday”
“Move every card in Review that has been approved to Done, and comment on each one with what changed”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting Basecamp behind an AI client.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Launch a hosted MCP endpoint for Basecamp, keep tool access under control, and start testing real workflow prompts right away.