Skip to main content
Glama
aikts

Yandex Tracker MCP

Update Issue

issue_update

Modify an existing Yandex Tracker issue by updating only the fields you specify; omitted fields remain unchanged. Use the optional version for optimistic locking to prevent edit conflicts.

Instructions

Update an existing Yandex Tracker issue. Only fields that are provided will be updated; omitted fields remain unchanged. Use queue_get_fields to discover available fields before updating. The version parameter is optional optimistic locking: pass it only when you have a version read moments ago (issue_get), and never the one returned by issue_create - queue triggers and automation bump the version right after creation, which makes the update fail with an editing conflict.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tagsNoIssue tags as array of strings.
typeNoIssue type. Object with 'id' (type ID) and/or 'key' (type key like 'bug', 'task'), or the bare key/ID. Use `queue_get_metadata` tool with expand=['issueTypesConfig'] to get available issue types in this queue.
fieldsNoAdditional fields to update, for fields without a dedicated parameter above. Call `queue_get_fields` for the fields configured on the queue and `get_global_fields` for the whole registry - system fields such as `parent` or `estimation` are settable but may be missing from the queue listing. Keys are Tracker field ids as those tools return them (camelCase, e.g. 'storyPoints'), which is also how they come back in issue responses. An entry here overrides the dedicated parameter of the same name, which is how a field is cleared: pass null (e.g. {'assignee': null, 'parent': null}), since a dedicated parameter left unset simply is not sent. Values are sent to Tracker as-is: reference fields expect numeric IDs as numbers (or {'id': ...} objects), because a bare string may be resolved as a name.
parentNoParent issue reference. Object with 'id' (parent issue ID) and/or 'key' (parent issue key like 'QUEUE-123'); when both are given Tracker resolves by 'id', or the bare key.
sprintNoSprint assignments. Array of objects, each with 'id' field containing the sprint ID (integer).
projectNoProject assignment. Object with 'primary' (int, main project shortId) and optional 'secondary' (list of ints, additional project shortIds).
summaryNoNew issue title/summary
versionNoIssue version for optimistic locking; changes are only applied when it is the issue's current version, otherwise the call fails with an editing conflict. Read it with issue_get immediately before updating, and omit it when you just want the update to land on whatever the latest version is. The version returned by issue_create is not safe to use here: queue triggers and automation bump it right after creation.
assigneeNoNew assignee login or UID
issue_idYesIssue ID in the format '<project>-<id>', like 'SOMEPROJECT-1'
priorityNoIssue priority. Object with 'id' (priority ID) and/or 'key' (priority key like 'critical', 'normal'), or the bare key/ID. Use get_priorities to find available priorities.
followersNoIssue followers/watchers. Array of objects, each with an 'id' field holding the user ID (uid) or login. Replaces the current follower list.
componentsNoQueue components. Array of objects with either 'id' (numeric component ID, from queue_get_metadata with expand=['components']) or 'name' (component name). Tracker resolves numbers as IDs and strings as names, so the object form is required to avoid a 422 on a numeric-looking name. Replaces the current component list.
descriptionNoNew issue description (use markdown formatting)
markup_typeNoMarkup type for description text. Use 'md' for YFM (markdown) markup.md

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
keyNo
epicNo
tagsNo
typeNo
spentNo
startNo
votesNo
parentNo
sprintNo
statusNo
uniqueNo
summaryNo
versionNo
assigneeNo
deadlineNo
priorityNo
createdAtNo
createdByNo
updatedAtNo
updatedByNo
componentsNo
estimationNo
descriptionNo
storyPointsNo
previousStatusNo
Behavior5/5

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

With readOnlyHint=false, the description fully discloses mutation behavior: partial updates (omitted fields unchanged), optimistic locking failure conditions, that fields entries override dedicated parameters, how to clear fields by passing null, the component id/name resolution pitfall, and that reference fields expect numeric IDs. This is far beyond what the annotation conveys.

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 a single paragraph but is efficiently structured: purpose first, then the key partial-update note, then discovery pointer, then the most subtle version pitfall. Every sentence earns its place; no filler, and it stays within reasonable length despite covering complex behaviors.

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 15 parameters and an output schema, the description is remarkably complete. It covers the essential operational nuances: partial update semantics, version handling, fields override and clearing, component representation, and references to discovery tools. It leaves no ambiguity for an agent to misuse the tool.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds critical semantics beyond the schema: it explains the `fields` parameter's override behavior and null-clearing, the `version` parameter's optimistic locking context and the issue_create caveat, and component id/name disambiguation. This materially aids correct invocation.

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 the tool updates an existing Yandex Tracker issue, emphasizing that only provided fields are changed. This distinguishes it from siblings like issue_create, issue_close, and issue_execute_transition, and the verb 'Update' plus resource 'Issue' is specific.

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 provides explicit guidance: it tells the user to use queue_get_fields to discover available fields, explains the optimistic locking semantics of `version` with clear when-to-use/when-to-omit instructions, and warns about the unsafe version from issue_create. This is concrete alternative-usage guidance beyond the inferred from name.

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/aikts/yandex-tracker-mcp'

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