Skip to main content
Glama

jira_write

Update a JIRA issue by key, modifying description, assignee, reporter, or custom fields. Supports JFM markdown or raw ADF, and includes a dry-run mode for validation.

Instructions

Update a JIRA issue by key (e.g. PROJ-123). content updates the description (JFM markdown by default, or raw ADF JSON when format = "adf"); omit it to leave the description unchanged. Supply the description as content (inline) OR content_path (a filesystem path the server reads) — not both; prefer the path form when the body is already on disk. JFM is GitHub-style markdown — see resource omni-dev://specs/jfm for syntax. To set the parent for hierarchy (Epic → Story, Story → Sub-task) use the jira_link_parent tool — the canonical hierarchy surface. 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. String values targeting rich-text custom fields (e.g. Acceptance Criteria) are auto-converted from JFM to ADF; pass the empty string "" to clear such a field. Pass a JSON object value to bypass conversion (raw ADF). To set fields by display name with automatic value coercion, prefer the jira_edit tool. At least one of content, assignee, reporter, or fields must be supplied. Set dry_run: true first when uncertain about required fields or formatting — validates the input and returns the request that would be sent (method, path, body) without updating the issue. Mirrors the CLI's omni-dev atlassian jira write --dry-run.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
fieldsNoAdditional `fields` keys merged into the issue update payload. 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) — with one ergonomic exception: a string value targeting a rich-text textarea custom field (e.g. `{"customfield_19300": "- bullet\n- bullet"}`) is auto-converted from JFM markdown to ADF, and the empty string `""` clears such a field. Pass a JSON object instead of a string to bypass conversion (raw ADF). Setting `assignee` or `reporter` here collides with the typed parameters and is rejected — pass the typed parameter instead.
formatNoContent format — `jfm` (default) parses Markdown/JFM; `adf` accepts a raw ADF JSON document.
contentNoNew description body. Interpreted per `format`. Omit to leave the existing description unchanged (useful when only updating `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`.
dry_runNoWhen true, validate and return the would-be request (method, path, body) without updating the issue. Defaults to `false`.
assigneeNoAssignee `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`.
reporterNoReporter `accountId`. Same conventions as `assignee` (`""` clears, `"-1"` is JIRA automatic).
content_pathNoFilesystem path the server reads the description body from, instead of `content`. Prefer this when the body is already on disk — it avoids re-emitting a large body inline. Mutually exclusive with `content`.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It explains auto-conversion of JFM to ADF, clearing with empty strings, dry_run behavior, and preferences. However, it does not explicitly state that changes are permanent (though dry_run implies it).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

While lengthy, the description is well-structured and front-loaded. Each sentence adds value. Could be slightly more concise but appropriate for the parameter count.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all parameters and usage thoroughly, but lacks description of return values. Since no output schema is provided, the description should mention the expected response to set context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, baseline 3. Description adds significant nuance: mutual exclusion of content/content_path, format options, assignee/reporter conventions, fields escape hatch behavior with auto-conversion, and dry_run semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it updates a JIRA issue by key, distinguishing it from sibling tools like jira_create (create new) and jira_edit (set fields by display name). It specifies the resource and action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: when to use jira_link_parent for hierarchy, jira_edit for display-name fields, jira_user_search for accountId resolution, and dry_run for validation. States mutual exclusivity of content and content_path, required parameters, and default behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rust-works/omni-dev'

If you have feedback or need assistance with the MCP directory API, please join our Discord server