Edit a doc (notes and handoffs: members; brief: project admins only, 403 `doc_admin_only`). Send the `version` from get_doc; change any fields in one call. Close a handoff with `status: closed`.
update_docEdit a doc (notes and handoffs: members; brief: project admins only, 403 doc_admin_only). Send the version from get_doc; change any fields in one call. Close a handoff with status: closed.
Call get_doc first and pass its version. body is the COMPLETE new markdown (not a diff or an appended piece): take the current body from get_doc, change it and send all of it. Change any fields (title, body, and for handoffs to, issues, status) in ONE call — one call makes one new version. Keep working notes current: when you learn something the next person (or agent) needs — progress, decisions, rules, gotchas — add it to the notes; this is optional, use your judgement. Handoffs: status: closed closes one (or open reopens it); to say you have read one use acknowledge_handoff instead. One doc is at most 1 MB (413 doc_too_large). Notes: labels (D182) is the complete list, [] clears. Say in message what changed. The company brief is read-only here; the project brief is for project admins (403 doc_admin_only otherwise) — put what you learned in the working notes, never rewrite the rules. Optional colour (D137, use sparingly; markdown stays the main format): <mark>text</mark> highlights (yellow; or <mark data-color="green">), <span data-color="red">text</span> colours text; colours yellow, green, red, blue, purple (e.g. green = passed / expected, red = bug / actual, purple = question); any other HTML is shown as plain text; keep the open and close tag in the same paragraph.
WRITE: version = from your latest read (get_issue, list_comments, list_sprints, get_doc, read_file). 409 version_conflict (details.current, details.current_version): re-read, re-apply your change, retry — never overwrite blindly; when the changes disagree, ask the user.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Handoffs only. | |
| body | No | The complete new markdown body. | |
| kind | Yes | Project docs (spec D76): `brief` = why the project exists, goals, business and tech structure; `notes` = working notes / progress; `handoffs` = hand-over to teams or the whole project; `company_brief` = the company's rules and guidelines (read-only in project routes). | |
| slug | Yes | File name of a doc without `.md`: lowercase a–z 0–9 and `-` (brief, notes, company brief) or `H-{n}` (handoffs). | |
| title | No | ||
| issues | No | Handoffs only. | |
| labels | No | Notes only (D182): labels that scope the note to the cards carrying any of them — get_issue_context shows the matching notes (newest 3) in "Notes for this card". The complete list; [] clears. Other kinds → 400 validation_failed. | |
| reason | No | Spec D144: why you make this change (≤ 200 characters). Optional, but give it when you act as an agent account — it is shown in the agent's run log ("moved KJ-12 To Do → In Progress because <reason>"). board-mcp records it in `agent.run`; board-core / board-files accept it and ignore it (it never changes the file, the version or the history). | |
| status | No | Handoffs only: close it, or reopen it. Acknowledge with acknowledge_handoff. | |
| message | No | What changed, shown in the doc history. | |
| version | Yes | Optimistic-lock version of the file; +1 on every write. Every write must send the version it read. | |
| project_key | Yes | Project key, e.g. `KJ`. 2–10 chars, uppercase letters and digits, starts with a letter. |