Update Kanban Card
basecamp_update_kanban_cardUpdate a Basecamp kanban card's title, due date, assignees, content, or steps, using partial edits to change content without replacing the whole card.
Instructions
Update a kanban card including its steps. At least one field (title, content, partial content operations, or steps) must be provided. Use partial content operations when possible to save on token usage.
HTML rules for content:
Allowed tags: p, span, h2, h3, h4, br, strong, em, strike, code, a (with href attribute), pre, ol, ul, li, blockquote, mark, figure, figcaption, table, tbody, tr, th, td, div, bc-attachment.
Wrap every paragraph in ..., and put between one paragraph and the next. Both parts are necessary: newlines and blank lines in your HTML are discarded, and Basecamp shows no space around a on its own, so two paragraphs with nothing between them are shown as one block of text. Do not rely on line breaks in your HTML to separate paragraphs.
Headings: use , , as appropriate.
Inline code: text. Preformatted blocks: text.
Ordered lists: .... Unordered: ....
Tables: Heading...Cell...
To mention a person: . Put the tag where the name must show in the text, for example "Thanks for the fix". The person gets a notification. If the ID is not a person, the tool returns an error and writes nothing. Get person IDs from basecamp_list_people, or from the people in other responses (assignees, creators).
Single image:
Image gallery: wrap multiple in a .
A bc-attachment needs an attachable_sgid. For a file that is already in Basecamp, take the sgid from the HTML content of the message, comment or card that shows it, or use basecamp_list_recordings. For a file that is not in Basecamp yet, such as an image at an external URL or a screenshot on disk, upload it with basecamp_create_attachment and use the sgid that it returns. There is no tag, so an external image URL can never be embedded directly: upload it, or accept that it stays a plain link.
Basecamp auto-enriches bc-attachment tags after saving (adds url, href, filename, content-type, etc.) — you never need to write those.
When you see an existing, already-enriched tag (e.g. from a previous list/get call), leave its inner HTML alone. Before any content_append/content_prepend/search_replace runs, it is automatically collapsed back to its minimal form (sgid, presentation, caption, and content-type for mentions) — you don't need to strip it yourself, and doing so manually is unnecessary and risks mismatched find strings.
Background highlights: ...
Text color highlights: ...
For both, N is 1 (yellow), 2 (amber), 3 (red), 4 (pink), 5 (purple), 6 (blue), 7 (teal), 8 (near-white), or 9 (light gray).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| steps | No | Complete array of desired steps. Array order defines position. Steps not in array will be deleted. | |
| title | No | New card title | |
| due_on | No | Due date (YYYY-MM-DD format) or null to clear | |
| card_id | Yes | Basecamp resource identifier | |
| content | No | If provided, replaces entire HTML content. Cannot be used with content_append, content_prepend, or search_replace. | |
| assignee_ids | No | Array of user IDs to assign to the card | |
| content_append | No | Text to append to the end of current content. Cannot be used with content. | |
| search_replace | No | Array of search-replace operations to apply to current content. Cannot be used with content. | |
| content_prepend | No | Text to prepend to the beginning of current content. Cannot be used with content. |