Skip to main content
Glama

jira_create

Create a JIRA issue from explicit fields or a JFM document for round-trip editing. Validate with dry run before creating.

Instructions

Create a new JIRA issue, from explicit fields or from a full JFM document (frontmatter + body, e.g. the output of jira_read). With a document, project/summary/issue_type, labels and custom fields come from the frontmatter (project is derived from key: when no project: is set) and the body becomes the description — enabling the read → edit → create round-trip. Explicit project/summary/issue_type override frontmatter and a warning is returned when they do. Without a document, custom_fields is an optional map of field name or canonical id (e.g. {"Story Points": 8} or {"Planned / Unplanned Work": "Unplanned"}) to value, resolved against the create screen and shaped for the API — use it to satisfy fields a project requires at create time (otherwise JIRA returns HTTP 400). The document/description bodies each also accept a filesystem-path form (document_path/description_path) the server reads from disk — prefer it when the body is already on disk, to avoid emitting a large body inline. Set dry_run: true first when uncertain about required fields or formatting — validates and resolves the input and returns the request that would be sent (method, path, body) without creating the issue (mirrors the CLI's omni-dev atlassian jira create --dry-run). Returns the new issue key and self URL as YAML. Creates a single issue; to create several issues at once (and optionally link them, e.g. epic decomposition) use jira_bulk_create.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dry_runNoWhen true, validate and return the would-be request (method, path, body) without creating the issue. Defaults to `false`.
projectNoProject key (e.g., `PROJ`). Required unless `document` carries a `project:` (or a `key:` it can be derived from). Overrides frontmatter.
summaryNoIssue summary / title. Required unless `document` carries one. Overrides frontmatter.
documentNoFull JFM document (YAML frontmatter + markdown body), e.g. the output of `jira_read` with the frontmatter edited. When provided, `project`, `summary`, `issue_type`, labels and custom fields are taken from the frontmatter (the project derives from `key:` when no `project:` is set) and the body becomes the description — so the read → edit → create round-trip works without re-specifying fields. The `project`/`summary`/ `issue_type` parameters below still override their frontmatter counterparts (a warning is returned when they do); passing `description` or `custom_fields` together with `document` is an error (put custom fields in the document's `custom_fields:` frontmatter). See resource `omni-dev://specs/jfm`.
issue_typeNoIssue type (defaults to `Task`). Overrides frontmatter.
descriptionNoOptional description in JFM markdown — see resource `omni-dev://specs/jfm` for syntax. JFM is GitHub-style markdown, NOT JIRA wiki markup (use `##` not `h2.`, triple-backtick fences not `{code}`, backtick inline code not `{{...}}`). Rejected when `document` is provided (the document body is the description).
custom_fieldsNoCustom fields to set at create time, as a map of field name *or* canonical id (e.g. `"Story Points"` or `"customfield_10016"`) to its value. Names are resolved against the project/issue-type create screen (`createmeta`), so pass the name back from a `400` "`<Field> is required`" error directly. Values are natural JSON: a string or number for scalar/number/date fields, a string for select/option fields (sent as `{"value": ...}`), an array of strings for multi-selects and labels, an issue key string for issue-link fields such as `Parent` (sent as `{"key": ...}`). Use this for fields a project requires at create time — without them JIRA rejects the create with HTTP 400. To change fields after creation use `jira_edit`.
document_pathNoFilesystem path the server reads the JFM `document` from, instead of `document`. Prefer this when the document is already on disk — it avoids re-emitting the whole document inline. Mutually exclusive with `document`.
description_pathNoFilesystem path the server reads the description from, instead of `description`. Prefer this when the description is already on disk — it avoids re-emitting a large body inline. Mutually exclusive with `description` (and, like `description`, rejected when `document`/`document_path` is given).
Behavior5/5

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

Despite no annotations, the description fully discloses behavioral traits: dry_run validation, override behavior with warnings, error conditions (HTTP 400 for missing required custom fields), return value format (new issue key and self URL as YAML), and mutual exclusivity of certain parameters. No contradictions with structured fields.

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

Conciseness5/5

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

The description is long but efficiently structured: starts with primary function, then explains document mode, explicit mode, dry_run, return, and sibling distinction. Every sentence adds value without redundancy. It is front-loaded with the main purpose and organized logically.

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

Completeness5/5

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

Given 9 parameters, no required ones, no output schema, and sibling tools, the description is exceptionally complete. It covers all inputs, edge cases (e.g., derivation of project from key: frontmatter), error handling, and usage recommendations. No gaps remain for an agent to make incorrect assumptions.

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

Parameters5/5

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

With 100% schema coverage, baseline is 3, but the description significantly adds meaning: explains how `document` enables round-trip editing, how `custom_fields` resolves names against createmeta with examples, how overrides work, and the purpose of path variants. This goes well beyond parameter names and types.

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 'Create a new JIRA issue' and distinguishes between two modes (explicit fields vs full JFM document). It also differentiates from sibling 'jira_bulk_create' by noting single vs multiple issue creation. The verb 'create' and resource 'JIRA issue' are specific and unambiguous.

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?

The description explicitly advises when to use each parameter combination (e.g., prefer `document_path` when body is on disk, use `dry_run: true` when uncertain). It contrasts with `jira_bulk_create` for multiple issues, provides explicit alternatives, and warns about conditions that cause rejection (e.g., combining `document` with `description` or `custom_fields`).

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