currents-cancel-run

Cancel a run in progress. This will stop the run and mark it as cancelled. Requires runId.

The run ID to cancel.

currents-cancel-run-github-ci

Cancel a run by GitHub Actions workflow run ID and attempt number. Optionally scope by projectId or ciBuildId. Requires githubRunId and githubRunAttempt.

Optional CI build ID to scope the cancellation.

GitHub Actions workflow run attempt number.

GitHub Actions workflow run ID.

Optional project ID to scope the cancellation.

currents-create-action

Create a new action for a project. Actions define rules that automatically skip, quarantine, or tag tests based on conditions like test title, file path, git branch, etc. Requires projectId, name, action array, and matcher object.

Actions to perform when conditions match.

Tags to add to matching tests

Optional description for the action.

Optional expiration date in ISO 8601 format.

Matcher defining which tests this action applies to.

List of conditions to match

eq neq any empty in notIn inc notInc incAll notIncAll

How to combine multiple conditions

Human-readable name for the action.

The project ID to create the action for.

currents-create-jira-issue

Create a Jira issue from a run test using the organization Jira integration. Requires projectId, runId, testId, jiraInstallationId, jiraProjectId, and jiraIssueType. Optional customFields array.

Optional Jira custom fields for issue creation.

Jira field ID from issue type discovery.

String value for the Jira custom field.

Jira installation ID for the org integration (dashboard Installation ID).

Jira issue type ID.

Jira project ID in which to create the issue.

Currents project ID.

Currents run ID containing the test.

Test ID within the run.

projectId runId testId jiraInstallationId jiraProjectId jiraIssueType

currents-create-webhook

Create a new webhook for a project. Specify the URL to receive POST notifications, optional custom headers (as JSON string), events to trigger on (RUN_FINISH, RUN_START, RUN_TIMEOUT, RUN_CANCELED), and an optional label. Requires projectId and url.

Custom headers as a JSON object string (e.g., {"Authorization": "Bearer token"}).

Events that trigger this webhook. Options: RUN_FINISH (run completed), RUN_START (run started), RUN_TIMEOUT (run timed out), RUN_CANCELED (run was cancelled).

Human-readable label for the webhook.

The project ID to create the webhook for.

URL to send webhook POST requests to.

currents-delete-action

Delete (archive) an action. This is a soft delete - the action will be marked as archived but not permanently removed. The actionId is globally unique.

The action ID to delete (archive).

currents-delete-run

Delete a run and all associated data. This is a permanent deletion. Requires runId.

The run ID to delete.

currents-delete-webhook

Delete a webhook. This permanently removes the webhook. The hookId is a UUID.

The webhook ID (UUID).

currents-disable-action

Disable an active action. Changes the action status to disabled, temporarily preventing it from applying to tests. The actionId is globally unique.

The action ID to disable.

currents-enable-action

Enable a disabled action. Changes the action status from disabled to active, making it apply to matching tests again. The actionId is globally unique.

The action ID to enable.

currents-find-run

Find a run by query parameters. Returns the most recent completed run matching the criteria. Can search by ciBuildId (exact match) or by branch/tags. Supports pwLastRun flag for Playwright last run info. Requires projectId.

Git branch name. Used when ciBuildId is not provided.

The CI build ID. If provided, returns the run with this exact ciBuildId.

The project ID to search for runs in.

If true, includes information about failed tests from the last run (Playwright only).

Run tags to filter by (can be specified multiple times).

currents-get-action

Get a single action by ID. The actionId is globally unique, so projectId is not required. Returns full action details including matcher conditions and current status.

The action ID to fetch.

currents-get-affected-executions

List test executions where a specific action/rule was applied, within a date range. Uses cursor-based pagination. Requires actionId, date_start, and date_end.

The action ID to fetch affected test executions for.

End date in ISO 8601 format (required).

Start date in ISO 8601 format (required).

Cursor for pagination. Returns items before this cursor value.

Maximum number of executions (1-50). Defaults to 25.

Search by action name (case-insensitive).

Cursor for pagination. Returns items after this cursor value.

currents-get-affected-test-executions

Get execution details for a specific affected test (by signature) within a date range. Returns individual test execution records with action info. Uses cursor-based pagination. Requires projectId, signature, date_start, and date_end.

End date in ISO 8601 format (required).

The project ID.

The test signature hash to fetch affected executions for.

currents-get-context

Get test failure context for AI debugging at run, instance, or test level. Supports json or md format, detail level, and pagination for failed tests. Requires run_id for run-level, or instance_id with optional test_id.

Attempt number (0-indexed); defaults to latest.

Controls output verbosity. default returns all available data; compact omits full steps and limits assets; summary minimizes output. Defaults to default.

Response format. Falls back to Accept header when absent. Defaults to json.

Instance identifier. Required for instance-level and test-level. Omit for run-level (use run_id only).

Maximum number of failed tests per page (run-level and instance-level only). Default 10.

Truncate markdown response to this character limit (only applies when format=md).

Page number for failed tests pagination, 0-indexed (run-level and instance-level only). Default 0.

Run identifier. Required for run-level (run_id only) and instance-level (run_id + instance_id, no test_id). Omit for test-level (instance_id + test_id).

Test identifier. When set, selects test-level detail and requires instance_id. run_id is not required in this case.

currents-get-errors-explorer

Get aggregated error metrics for a project within a date range. Supports filtering by error_target, error_message, error_category, error_action, tags, branches, authors, and groups. Supports grouping by target, action, category, or message. Returns error counts, affected tests and branches, with timeline data. Requires projectId, date_start, and date_end.

Filter by git authors (can be specified multiple times).

Filter by branches (can be specified multiple times).

End date in ISO 8601 format (required).

Start date in ISO 8601 format (required).

Sort direction. Defaults to 'desc'.

Filter by error action.

Filter by error category.

Filter by error message (case-insensitive partial match).

Filter by error target (e.g. CSS selector, URL).

Group results by dimension (can be specified multiple times). Order matters: the first value is the primary grouping and filters out nulls for that dimension.

Filter by groups (can be specified multiple times).

Maximum number of results (1-100). Defaults to 50.

Metric used for timeline ranking. Defaults to 'occurrence'.

Field to order results by. Defaults to 'count'.

Page number (0-indexed). Defaults to 0.

The project ID to fetch error metrics from.

Filter by tags (can be specified multiple times).

Logical operator for tags filter: OR (match any) or AND (match all). Default: OR.

Maximum number of top errors per timeline bucket (1-50). Default: 5.

currents-get-project

Get a single project by ID. Returns project details including name, creation date, failFast setting, inactivity timeout, and default branch name.

The project ID to fetch details for.

currents-get-project-insights

Get aggregated run and test metrics for a project within a date range. Returns overall metrics and timeline data with configurable resolution (1h/1d/1w). Supports filtering by tags, branches, groups, and authors. Requires projectId, date_start, and date_end.

End date in ISO 8601 format (required).

The project ID to fetch insights for.

Time resolution for histogram data. Defaults to '1d'.

currents-get-projects

Retrieves projects available in the Currents platform. Supports cursor-based pagination with limit, starting_after, ending_before parameters, or set fetchAll=true for automatic pagination. This is a prerequisite for using any other tools that require project-specific information.

Cursor for pagination. Returns items before this cursor value.

If true, fetches all projects using automatic pagination. Ignores limit, starting_after, and ending_before.

Maximum number of items to return (default: 10, max: 100).

Cursor for pagination. Returns items after this cursor value.

currents-get-run-details

Retrieves details of a specific test run. Requires a user-provided runId.

The run ID to fetch details for.

currents-get-runs

Retrieves a list of runs for a specific project with optional filtering. Supports filtering by branch, tags (with AND/OR operators), status (PASSED/FAILED/RUNNING/FAILING), completion state, date range, commit author, and search by ciBuildId or commit message. Requires a projectId. If the projectId is not known, first call 'currents-get-projects' and ask the user to select the project.

Filter runs by git commit author names (can be specified multiple times).

Filter runs by git branch names (can be specified multiple times).

Filter runs by completion state. COMPLETE: run finished normally, IN_PROGRESS: run is still executing, CANCELED: run was canceled, TIMEOUT: run timed out.

Filter runs created before this date (ISO 8601 format).

Filter runs created on or after this date (ISO 8601 format).

The maximum number of results to return per page (default: 10, max: 100).

Filter runs by normalized pull request id (meta.pr.id). Printable ASCII only, max 128 characters.

The project ID to fetch runs from.

Search runs by ciBuildId or commit message. Case-insensitive.

Filter runs by status. PASSED: all tests passed, FAILED: some tests failed, RUNNING: run is in progress and passing, FAILING: run is in progress but has failures.

Logical operator for tag filtering. AND requires all tags to be present (default), OR requires any tag to be present.

Filter runs by tags (can be specified multiple times). Use tag_operator to control matching behavior.

currents-get-spec-files-performance

Retrieves spec files performance metrics for a specific project within a date range. Supports ordering by avgDuration, failedExecutions, failureRate, flakeRate, flakyExecutions, fullyReported, overallExecutions, suiteSize, timeoutExecutions, or timeoutRate. Supports filtering by tags, branches, groups, and authors. Requires a projectId. If the projectId is not known, first call 'currents-get-projects' and ask the user to select the project.

Filter results by git authors (can be specified multiple times).

Filter results by branches (can be specified multiple times).

The end of the date range to fetch the metrics from. ISO 8601 date format (required).

The start of the date range to fetch the metrics from. ISO 8601 date format (required).

The direction to sort the results in. Defaults to 'desc'.

Filter results by groups (can be specified multiple times).

Include failed executions in duration calculation. Defaults to false.

The maximum number of results to return per page (default: 50, max: 50).

The field to order the spec files by. Defaults to 'avgDuration'.

avgDuration failedExecutions failureRate flakeRate flakyExecutions fullyReported overallExecutions suiteSize timeoutExecutions timeoutRate

The page number to fetch (0-indexed). Defaults to 0.

The project ID to fetch spec files performance metrics from.

Filter spec files by name (partial match).

Filter results by tags (can be specified multiple times).

currents-get-spec-instance

Retrieves debugging data from a specific execution of a test spec file by instanceId.

The instance ID to fetch debugging data from.

currents-get-test-evidence

Collect evidence artifacts (screenshots, videos, traces, attachments) produced by tests in a CI run, with signed download URLs grouped per test. Use to gather proof or a demo of an implemented feature from CI — e.g. before/after screenshots, text output stored as test attachments, or Playwright videos and traces — instead of running tests locally. Locates the run by runId, or by projectId with ciBuildId or branch (latest run). Supports filtering by spec file, test title, and test status. URLs are signed and time-limited, so download the files promptly.

Git branch name. The most recent completed run on this branch is used. Requires projectId.

CI build ID for exact run lookup. Requires projectId. Takes precedence over branch.

Maximum number of spec file instances to fetch artifacts for (default: 10, max: 25). Narrow with the spec filter instead of raising this.

The project ID. Required unless runId is provided. Used to locate the run by ciBuildId or branch.

The run ID to collect evidence from. When provided, projectId, ciBuildId, and branch are ignored.

Filter spec files by substring match on the spec file path (case-insensitive).

Filter tests by status. When omitted, all tests are included.

Filter tests by substring match on the full test title, including describe blocks (case-insensitive).

currents-get-test-results

Retrieves historical test execution results for a specific test signature. Supports filtering by date range, branch, tags, git author, test status (passed/failed/pending/skipped), run group, flaky status, and annotations. Requires the test signature. If the signature is not known, first call 'currents-get-tests-signatures'.

Filter by test annotations. JSON-stringified array of objects: [{"type": "string", "description": "string" | ["string"] or null}]. Omit description or set to null to match any value for that annotation type.

Filter by git authors (can be specified multiple times).

Filter by git branches (can be specified multiple times).

End date in ISO 8601 format (required).

Start date in ISO 8601 format (required).

Cursor for pagination. Returns items before this cursor value.

Filter by flaky status. When true, returns only flaky tests. When false, returns only non-flaky tests. When omitted, returns all tests regardless of flaky status.

Filter by run groups (can be specified multiple times).

Maximum number of items to return (default: 10, max: 100).

The test signature.

Cursor for pagination. Returns items after this cursor value.

Filter by test status (can be specified multiple times).

Filter by run tags (can be specified multiple times).

currents-get-tests-performance

Retrieves aggregated test metrics for a specific project within a date range. Supports ordering by failures, passes, flakiness, duration, executions, title, and various delta metrics. Supports filtering by spec name, test title, tags, branches, groups, authors, minimum executions, test state, and annotations. Requires a projectId. If the projectId is not known, first call 'currents-get-projects' and ask the user to select the project.

Filter results by git authors (can be specified multiple times).

Filter results by branches (can be specified multiple times).

The end of the date range to fetch the metrics from. ISO 8601 date format (required).

The start of the date range to fetch the metrics from. ISO 8601 date format (required).

The direction to sort the results in. Defaults to 'desc'.

Filter results by groups (can be specified multiple times).

The maximum number of results to return per page (default: 50).

Override which test statuses are included in metric calculations. Pass a JSON object with optional keys: executions, avgDuration, flakinessRate, failureRate. Each value is an array of status strings: passed, failed, pending, skipped. Example: {"executions":["failed","passed"],"failureRate":["failed"]}

Minimum number of executions to include.

The field to order the results by. Defaults to 'title'.

failures passes flakiness flakinessXSamples failRateXSamples duration durationDelta flakinessRateDelta failureRateDelta durationXSamples executions title

The page number to fetch (0-indexed). Defaults to 0.

The project ID to fetch test performance metrics from.

Filter tests by spec file name (partial match).

Filter results by tags (can be specified multiple times).

Filter by test state (can be specified multiple times).

Filter tests by title (partial match).

currents-get-tests-signatures

Generates a unique test signature based on project, spec file path, and test title. The test title can be a string or array of strings (for nested describe blocks). Requires a projectId. If the projectId is not known, first call 'currents-get-projects' and ask the user to select the project.

The project ID to generate the test signature for.

Full path to the spec file.

Test title or array of titles (for nested describe blocks).

currents-get-webhook

Get a single webhook by ID. The hookId is a UUID. Returns full webhook details including url, headers, events, label, and timestamps.

The webhook ID (UUID).

currents-link-jira-issue

Link an existing Jira issue to a run test using the organization Jira integration. Requires projectId, jiraIssueKey, runId, testId, jiraInstallationId, jiraProjectId, and jiraIssueType. Optional comment and includeContextInComment.

Optional text prepended to the Jira comment and Currents issue description before automated test context.

When true (default), appends automated test context to the Jira comment. When false, comment is required and used alone.

Jira installation ID for the org integration (dashboard Installation ID).

Existing Jira issue key to link (e.g. PROJ-123).

Jira issue type identifier stored on the Currents ticket.

Jira project ID for the linked issue.

Currents project ID.

Currents run ID containing the test.

Test ID within the run.

projectId jiraIssueKey runId testId jiraInstallationId jiraProjectId jiraIssueType

currents-list-actions

List all actions for a project with optional filtering. Actions are rules that automatically modify test behavior (skip, quarantine, tag). Supports filtering by status (active/disabled/archived/expired) and search by name. Requires a projectId.

The project ID to fetch actions from.

Search actions by name.

Filter actions by status (can be specified multiple times).

currents-list-affected-tests

List tests affected by actions (quarantine, skip, tag) for a project within a date range. Returns aggregated data grouped by test signature. Supports filtering by action types, action ID, status, and search. Requires projectId, date_start, and date_end. Preview endpoint: fields and path may change.

Filter by a specific action ID.

Filter by action types (can be specified multiple times).

End date in ISO 8601 format (required).

Start date in ISO 8601 format (required).

Sort direction for lastSeen. Defaults to 'desc'.

Maximum number of results (1-100). Defaults to 25.

Page number (0-indexed). Defaults to 0.

The project ID to fetch affected tests from.

Search by spec file path, test title, or action name (case-insensitive).

Filter by action status. Accepts multiple values. Omit for all statuses.

currents-list-jira-issue-types

List Jira issue types and custom fields for a Jira project. Requires jiraProjectId and jira_installation_id.

Jira project ID.

Jira installation ID for the organization integration.

Maximum issue types per page (default: 50, max: 100).

Page number for discovery results (default: 0).

Search issue types by name.

currents-list-jira-projects

List Jira projects available for the organization integration. Use returned project IDs as jiraProjectId when creating issues. Requires jira_installation_id.

Maximum projects per page (default: 50, max: 100).

Search Jira projects by name or key.

currents-list-project-terms

List cursor-paginated project terms for one type (tag, branch, authorName, etc.). Supports search, sort direction, and starting_after or ending_before cursors. Requires projectId and termType.

Sort direction by last update time (default: desc).

Cursor for backward pagination.

Maximum items per page (default: 100, max: 100).

The project ID.

Case-insensitive search filter for term values.

Cursor for forward pagination.

Term kind to list: tag, group, branch, authorName, authorEmail, framework, frameworkVersion, clientVersion, ann_type, or ann_desc.

tag group branch authorName authorEmail framework frameworkVersion clientVersion ann_type ann_desc

currents-list-pull-requests

List pull-request cards for a project (runs grouped by meta.pr.id). Supports cursor pagination, runs_per_pr preview count, and filters by tags, branches, authors, and latest-run status. Requires projectId.

Filter by git commit author glob patterns (can be specified multiple times).

Filter by git branch names (can be specified multiple times).

Cursor for backward pagination.

Maximum number of PR cards per page (default: 10, max: 50).

The project ID to list pull requests for.

Number of recent runs to preview per PR card (default: 1, max: 10).

Cursor for forward pagination.

Filter PR cards by latest run status (can be specified multiple times).

Logical operator for tag filtering. AND requires all tags (default), OR requires any tag.

Filter by run tags (can be specified multiple times).

currents-list-webhooks

List all webhooks for a project. Webhooks allow you to receive HTTP POST notifications when certain events occur in your test runs: RUN_FINISH (run completed), RUN_START (run started), RUN_TIMEOUT (run timed out), RUN_CANCELED (run was cancelled). Requires a projectId.

The project ID to fetch webhooks from.

currents-reset-run

Reset failed spec files in a run to allow re-execution. Requires runId and machineId array (1-63 machine IDs). Optionally supports batched orchestration.

Whether to use batched orchestration.

Machine ID(s) to reset.

The run ID to reset.

currents-update-action

Update an existing action. The actionId is globally unique. You can update name, description, action array, matcher, or expiration date. All fields are optional.

Actions to perform when conditions match.

Tags to add to matching tests

The action ID to update.

Optional description for the action.

Optional expiration date in ISO 8601 format.

Matcher defining which tests this action applies to.

List of conditions to match

How to combine multiple conditions

Human-readable name for the action.

currents-update-webhook

Update an existing webhook. You can update the url, headers (as JSON string), hookEvents array, or label. All fields are optional. The hookId is a UUID.

Custom headers as a JSON object string (e.g., {"Authorization": "Bearer token"}).

The webhook ID (UUID).

Human-readable label for the webhook.

URL to send webhook POST requests to.


Delete a note from the Obsidian vault (requires confirmation). Supports permanent delete, vault trash, or system trash.

Confirmation: must exactly match the path parameter to proceed with deletion

Path to the note relative to vault root

Deletion mode: 'none' = permanent delete (default), 'local' = move to .trash inside vault, 'system' = move to OS trash

Extract frontmatter from a note without reading the content

Path to the note relative to vault root

Format JSON response with indentation (default: false)

Get the heading structure of a note without reading its full content. Returns headings with level, text, and line number. Use this first to navigate large notes efficiently, then call read_note_lines to read only the section you need.

Path to the note relative to vault root

Get metadata for notes without reading full content

Array of note paths to get info for

Get vault statistics including total notes, folders, size, and recently modified files. Useful for understanding vault scope before batch operations.

Number of recently modified files to return (default: 5, max: 20)

List all tags across the vault with occurrence counts. Returns both frontmatter tags and inline #hashtags, deduplicated and sorted by frequency. Useful for discovering existing tags before creating or organizing notes.

List files and directories in the vault (includes non-note filenames, while read/write tools remain note-only)

Path relative to vault root (default: '/')

Add, remove, or list tags in a note

Operation to perform: 'add', 'remove', or 'list'

Path to the note relative to vault root

Array of tags (required for 'add' and 'remove' operations)

Move or rename any file in the vault (binary-safe, file-only, requires confirmation)

Confirmation: must exactly match newPath

Confirmation: must exactly match oldPath

New path for the file

Current path of the file

Allow overwriting existing file (default: false)

oldPath newPath confirmOldPath confirmNewPath

Move or rename a note in the vault

New path for the note

Current path of the note

Efficiently update part of a note by replacing a specific string. This is more efficient than rewriting the entire note for small changes.

The new string to insert in place of oldString

The exact string to replace. Must match exactly including whitespace and line breaks.

Path to the note relative to vault root

If true, replace all occurrences. If false (default), the operation will fail if multiple matches are found to prevent unintended replacements.

Read multiple notes in a batch (max 10 files)

Include note content (default: true)

Include frontmatter (default: true)

Array of note paths to read

Read a note from the Obsidian vault

Path to the note relative to vault root

Read a specific line range from a note. Use after get_note_outline to read only the section you need instead of the full file.

Last line to read (1-indexed, inclusive)

Path to the note relative to vault root

First line to read (1-indexed, inclusive)

Search for notes in the vault by content or frontmatter

Case sensitive search (default: false)

Skip files under these subtrees, e.g. ["Archive", "meta"] (directory prefixes)

Maximum number of results (default: 5, max: 20)

Restrict the search to a vault subtree, e.g. "Projects/2026" (directory prefix)

Search query text

Search in note content (default: true)

Search in frontmatter (default: false)

Update frontmatter of a note without changing content

Frontmatter object to update

Merge with existing frontmatter (default: true)

Path to the note

Read an Obsidian wiki link. Accepts the same syntax as Obsidian: [[Document Name]] or [[Document Name|Display Text]], including table-authored escapes like [[Document Name\|Display]] and path-qualified links like [[folder/Document Name]]. A #fragment suffix in the input is ignored. Searches the vault for an exact basename match (or exact vault-relative path match when the name contains '/') and returns the file's content. When multiple files share the basename, picks the first (vault root first, then alphabetical by path) and lists the other paths in structuredContent.alternatives. Content is returned bare — ready for direct use in context.

The document name — what goes inside [[ ]]. e.g. 'My-Document'. Brackets and display text (|...) are stripped if present. The .md extension is always appended (never include it).

Write a note to the Obsidian vault

Content of the note

Frontmatter object (optional)

Write mode: 'overwrite' (default), 'append', or 'prepend'

Path to the note relative to vault root


Delete Jira resources. Returns TOON format by default.

**Output format:** TOON (default) or JSON (`outputFormat: "json"`)

**Common operations:**

1. **Delete issue:** `/rest/api/3/issue/{issueIdOrKey}`
   Query param: `deleteSubtasks=true` to delete subtasks

2. **Delete comment:** `/rest/api/3/issue/{issueIdOrKey}/comment/{commentId}`

3. **Delete worklog:** `/rest/api/3/issue/{issueIdOrKey}/worklog/{worklogId}`

4. **Delete attachment:** `/rest/api/3/attachment/{attachmentId}`

5. **Remove watcher:** `/rest/api/3/issue/{issueIdOrKey}/watchers`
   Query param: `accountId={accountId}`

Note: Most DELETE endpoints return 204 No Content on success.

API reference: https://developer.atlassian.com/cloud/jira/platform/rest/v3/

JMESPath expression to filter/transform the response. IMPORTANT: Always use this to extract only needed fields and reduce token costs. Examples: "issues[*].{key: key, summary: fields.summary}" (extract specific fields), "issues[0]" (first result), "issues[*].key" (keys only). See https://jmespath.org

Output format: "toon" (default, 30-60% fewer tokens) or "json". TOON is optimized for LLMs with tabular arrays and minimal syntax.

The Jira API endpoint path (without base URL). Must start with "/". Examples: "/rest/api/3/project", "/rest/api/3/search/jql", "/rest/api/3/issue/{issueIdOrKey}"

Optional query parameters as key-value pairs. Examples: {"maxResults": "50", "startAt": "0", "jql": "project=PROJ", "fields": "summary,status"}

Jira DELETE Request

Read any Jira data. Returns TOON format by default (30-60% fewer tokens than JSON).

**IMPORTANT - Cost Optimization:**
- ALWAYS use `jq` param to filter response fields. Unfiltered responses are very expensive!
- Use `maxResults` query param to restrict result count (e.g., `maxResults: "5"`)
- If unsure about available fields, first fetch ONE item with `maxResults: "1"` and NO jq filter to explore the schema, then use jq in subsequent calls

**Schema Discovery Pattern:**
1. First call: `path: "/rest/api/3/search/jql", queryParams: {"maxResults": "1", "jql": "project=PROJ"}` (no jq) - explore available fields
2. Then use: `jq: "issues[*].{key: key, summary: fields.summary, status: fields.status.name}"` - extract only what you need

**Output format:** TOON (default, token-efficient) or JSON (`outputFormat: "json"`)

**Common paths:**
- `/rest/api/3/project` - list all projects
- `/rest/api/3/project/{projectKeyOrId}` - get project details
- `/rest/api/3/search/jql` - search issues with JQL (use `jql` query param). NOTE: `/rest/api/3/search` is deprecated!
- `/rest/api/3/issue/{issueIdOrKey}` - get issue details
- `/rest/api/3/issue/{issueIdOrKey}/comment` - list issue comments
- `/rest/api/3/issue/{issueIdOrKey}/worklog` - list issue worklogs
- `/rest/api/3/issue/{issueIdOrKey}/transitions` - get available transitions
- `/rest/api/3/user/search` - search users (use `query` param)
- `/rest/api/3/status` - list all statuses
- `/rest/api/3/issuetype` - list issue types
- `/rest/api/3/priority` - list priorities

**JQ examples:** `issues[*].key`, `issues[0]`, `issues[*].{key: key, summary: fields.summary}`

**Example JQL queries:** `project=PROJ`, `assignee=currentUser()`, `status="In Progress"`, `created >= -7d`

API reference: https://developer.atlassian.com/cloud/jira/platform/rest/v3/

Jira GET Request

Partially update Jira resources. Returns TOON format by default.

**IMPORTANT - Cost Optimization:** Use `jq` param to filter response fields.

**Output format:** TOON (default) or JSON (`outputFormat: "json"`)

**Common operations:**

1. **Update issue fields:** `/rest/api/3/issue/{issueIdOrKey}`
   body: `{"fields": {"summary": "Updated title"}}` (only updates specified fields)

2. **Update comment:** `/rest/api/3/issue/{issueIdOrKey}/comment/{commentId}`
   body: `{"body": {"type": "doc", "version": 1, "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Updated comment"}]}]}}`

3. **Update worklog:** `/rest/api/3/issue/{issueIdOrKey}/worklog/{worklogId}`
   body: `{"timeSpentSeconds": 7200}`

Note: PATCH only updates the fields you specify, leaving others unchanged.

API reference: https://developer.atlassian.com/cloud/jira/platform/rest/v3/

Request body as a JSON object. Structure depends on the endpoint. Example for issue: {"fields": {"project": {"key": "PROJ"}, "summary": "Issue title", "issuetype": {"name": "Task"}}}

Jira PATCH Request

Create Jira resources. Returns TOON format by default (token-efficient).

**IMPORTANT - Cost Optimization:**
- Use `jq` param to extract only needed fields from response (e.g., `jq: "{key: key, id: id}"`)
- Unfiltered responses include all metadata and are expensive!

**Output format:** TOON (default) or JSON (`outputFormat: "json"`)

**Common operations:**

1. **Create issue:** `/rest/api/3/issue`
   body: `{"fields": {"project": {"key": "PROJ"}, "summary": "Issue title", "issuetype": {"name": "Task"}, "description": {"type": "doc", "version": 1, "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Description"}]}]}}}`

2. **Add comment:** `/rest/api/3/issue/{issueIdOrKey}/comment`
   body: `{"body": {"type": "doc", "version": 1, "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Comment text"}]}]}}`

3. **Add worklog:** `/rest/api/3/issue/{issueIdOrKey}/worklog`
   body: `{"timeSpentSeconds": 3600, "comment": {"type": "doc", "version": 1, "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Work done"}]}]}}`

4. **Transition issue:** `/rest/api/3/issue/{issueIdOrKey}/transitions`
   body: `{"transition": {"id": "31"}}`

5. **Add attachment:** `/rest/api/3/issue/{issueIdOrKey}/attachments`
   Note: Requires multipart form data (complex - use Jira UI for attachments)

API reference: https://developer.atlassian.com/cloud/jira/platform/rest/v3/

Jira POST Request

Replace Jira resources (full update). Returns TOON format by default.

**IMPORTANT - Cost Optimization:** Use `jq` param to extract only needed fields from response

**Output format:** TOON (default) or JSON (`outputFormat: "json"`)

**Common operations:**

1. **Update issue (full):** `/rest/api/3/issue/{issueIdOrKey}`
   body: `{"fields": {"summary": "New title", "description": {...}, "assignee": {"accountId": "..."}}}`

2. **Update project:** `/rest/api/3/project/{projectIdOrKey}`
   body: `{"name": "New Project Name", "description": "Updated description"}`

3. **Set issue property:** `/rest/api/3/issue/{issueIdOrKey}/properties/{propertyKey}`
   body: `{"value": "property value"}`

Note: PUT replaces the entire resource. For partial updates, prefer PATCH.

API reference: https://developer.atlassian.com/cloud/jira/platform/rest/v3/

Jira PUT Request