jira_write
Update a JIRA issue's description, parent, assignee, reporter, or custom fields. Accepts markdown or ADF JSON for content.
Instructions
Update a JIRA issue. content updates the description (JFM markdown by default, or raw ADF JSON when format = "adf"); omit it to leave the description unchanged. JFM is GitHub-style markdown — see resource omni-dev://specs/jfm for syntax. parent sets the system parent field for hierarchy (Epic → Story, Story → Sub-task) — distinct from jira_link actions, which create relationship links (Blocks, Composition, etc.) rather than the parent field. assignee/reporter accept an accountId (use the empty string "" to clear, "-1" for JIRA automatic assignment); call jira_user_search first if you only have a name or email. fields is an escape hatch — a map of canonical JIRA field id to its API JSON value (e.g. {"priority": {"name": "High"}}) — for fields without a typed parameter. At least one of content, parent, assignee, reporter, or fields must be supplied.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| assignee | No | Assignee `accountId`. The empty string `""` clears the assignee; `"-1"` triggers JIRA automatic assignment. Use `jira_user_search` to resolve a name or email to an `accountId`. | |
| content | No | New description body. Interpreted per `format`. Omit to leave the existing description unchanged (useful when only updating `parent`/`assignee`/`reporter`/`fields`). For `format = "jfm"` (the default), this is GitHub-style markdown, NOT JIRA wiki markup. Use `##` not `h2.`, triple-backtick fences not `{code}`, backtick inline code not `{{...}}`. Full reference: MCP resource `omni-dev://specs/jfm`. | |
| fields | No | Additional `fields` keys merged into the issue update payload as-is. Keys must already be canonical JIRA field ids (e.g. `priority`, `labels`, `customfield_10010`). Values must already be in the API's JSON shape (e.g. `{"name": "High"}` for priority, `["a", "b"]` for labels). Setting `assignee` or `reporter` here collides with the typed parameters and is rejected — pass the typed parameter instead. | |
| format | No | Content format — `jfm` (default) parses Markdown/JFM; `adf` accepts a raw ADF JSON document. | |
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| parent | No | Parent issue key (e.g., `PROJ-100`). When set, establishes a parent-child hierarchy on the issue (Epic → Story, Story → Sub-task, etc.). Distinct from `jira_link` actions, which create "Composition"-style links rather than the system parent field. | |
| reporter | No | Reporter `accountId`. Same conventions as `assignee` (`""` clears, `"-1"` is JIRA automatic). |