Yandex Tracker MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Yandex Tracker MCP ServerShow me all issues assigned to me in the TEST queue"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Yandex Tracker MCP Server
mcp-name: io.github.aikts/yandex-tracker-mcp
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with Yandex Tracker APIs. This server provides secure, authenticated access to Yandex Tracker issues, queues, comments, worklogs, and search functionality with optional Redis caching for improved performance.
Documentation in Russian is available here / Документация на русском языке доступна здесь.
Features
Complete Queue Management: List and access all available Yandex Tracker queues with pagination support, tag retrieval, and detailed metadata
User Management: Retrieve user account information, including login details, email addresses, license status, and organizational data
Full Issue Lifecycle: Create, read, update, and manage issues with support for custom fields, attachments, and workflow transitions
Status Workflow Management: Execute status transitions, close issues with resolutions, and navigate complex workflows
Field Management: Access global fields, queue-specific local fields, statuses, issue types, priorities, and resolutions
Advanced Query Language: Full Yandex Tracker Query Language support with complex filtering, sorting, and date functions
Performance Caching: Optional Redis caching layer for improved response times
Security Controls: Configurable queue access restrictions and secure token handling
Multiple Transport Options: Support for stdio, SSE (deprecated), and HTTP transports for flexible integration
OAuth 2.0 Authentication: Dynamic token-based authentication with automatic refresh support as an alternative to static API tokens
Organization Support: Compatible with both standard and cloud organization IDs
Organization ID Configuration
Choose one of the following based on your Yandex organization type:
Yandex Cloud Organization: Use
TRACKER_CLOUD_ORG_IDenv var later for Yandex Cloud-managed organizationsYandex 360 Organization: Use
TRACKER_ORG_IDenv var later for Yandex 360 organizations
You can find your organization ID in the Yandex Tracker URL or organization settings.
Related MCP server: Yandex Tracker MCP Server
MCP Client Configuration
Installing extension in Claude Desktop
Yandex Tracker MCP Server can be one-click installed in Claude Desktop as and extension.
Installation
Download the
*.mcpbfile from GitHub Releases.Double-click the downloaded file to install it in Claude Desktop.

Provide your Yandex Tracker OAuth token when prompted.

Make sure extension is enabled - now you may use this MCP Server.
Manual installation
Prerequisites
uv installed globally
Valid Yandex Tracker API token with appropriate permissions
The following sections show how to configure the MCP server for different AI clients. You can use either uvx yandex-tracker-mcp@latest or the Docker image ghcr.io/aikts/yandex-tracker-mcp:latest. Both require these environment variables:
Authentication (one of the following):
TRACKER_TOKEN- Your Yandex Tracker OAuth tokenTRACKER_IAM_TOKEN- Your IAM tokenTRACKER_SA_KEY_ID,TRACKER_SA_SERVICE_ACCOUNT_ID,TRACKER_SA_PRIVATE_KEY- Service account credentials
TRACKER_CLOUD_ORG_IDorTRACKER_ORG_ID- Your Yandex Cloud (or Yandex 360) organization ID
Configuration file path:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Using uvx:
{
"mcpServers": {
"yandex-tracker": {
"command": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}Using Docker:
{
"mcpServers": {
"yandex-tracker": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}Using uvx:
claude mcp add yandex-tracker uvx yandex-tracker-mcp@latest \
-e TRACKER_TOKEN=your_tracker_token_here \
-e TRACKER_CLOUD_ORG_ID=your_cloud_org_id_here \
-e TRACKER_ORG_ID=your_org_id_here \
-e TRANSPORT=stdioUsing Docker:
claude mcp add yandex-tracker docker "run --rm -i -e TRACKER_TOKEN=your_tracker_token_here -e TRACKER_CLOUD_ORG_ID=your_cloud_org_id_here -e TRACKER_ORG_ID=your_org_id_here -e TRANSPORT=stdio ghcr.io/aikts/yandex-tracker-mcp:latest"Configuration file path:
Project-specific:
.cursor/mcp.jsonin your project directoryGlobal:
~/.cursor/mcp.json
Using uvx:
{
"mcpServers": {
"yandex-tracker": {
"command": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}Using Docker:
{
"mcpServers": {
"yandex-tracker": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}Configuration file path:
~/.codeium/windsurf/mcp_config.json
Access via: Windsurf Settings → Cascade tab → Model Context Protocol (MCP) Servers → "View raw config"
Using uvx:
{
"mcpServers": {
"yandex-tracker": {
"command": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}Using Docker:
{
"mcpServers": {
"yandex-tracker": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}Configuration file path:
~/.config/zed/settings.json
Access via: Cmd+, (macOS) or Ctrl+, (Linux/Windows) or command palette: "zed: open settings"
Note: Requires Zed Preview version for MCP support.
Using uvx:
{
"context_servers": {
"yandex-tracker": {
"source": "custom",
"command": {
"path": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
}Using Docker:
{
"context_servers": {
"yandex-tracker": {
"source": "custom",
"command": {
"path": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
}Configuration file path:
Workspace:
.vscode/mcp.jsonin your project directoryGlobal: VS Code
settings.json
Option 1: Workspace Configuration (Recommended for security)
Create .vscode/mcp.json:
Using uvx:
{
"inputs": [
{
"type": "promptString",
"id": "tracker-token",
"description": "Yandex Tracker Token",
"password": true
},
{
"type": "promptString",
"id": "cloud-org-id",
"description": "Yandex Cloud Organization ID"
},
{
"type": "promptString",
"id": "org-id",
"description": "Yandex Tracker Organization ID (optional)"
}
],
"servers": {
"yandex-tracker": {
"type": "stdio",
"command": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "${input:tracker-token}",
"TRACKER_CLOUD_ORG_ID": "${input:cloud-org-id}",
"TRACKER_ORG_ID": "${input:org-id}",
"TRANSPORT": "stdio"
}
}
}
}Using Docker:
{
"inputs": [
{
"type": "promptString",
"id": "tracker-token",
"description": "Yandex Tracker Token",
"password": true
},
{
"type": "promptString",
"id": "cloud-org-id",
"description": "Yandex Cloud Organization ID"
},
{
"type": "promptString",
"id": "org-id",
"description": "Yandex Tracker Organization ID (optional)"
}
],
"servers": {
"yandex-tracker": {
"type": "stdio",
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "${input:tracker-token}",
"TRACKER_CLOUD_ORG_ID": "${input:cloud-org-id}",
"TRACKER_ORG_ID": "${input:org-id}",
"TRANSPORT": "stdio"
}
}
}
}Option 2: Global Configuration
Add to VS Code settings.json:
Using uvx:
{
"github.copilot.chat.mcp.servers": {
"yandex-tracker": {
"type": "stdio",
"command": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}Using Docker:
{
"github.copilot.chat.mcp.servers": {
"yandex-tracker": {
"type": "stdio",
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}For other MCP-compatible clients, use the standard MCP server configuration format:
Using uvx:
{
"mcpServers": {
"yandex-tracker": {
"command": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}Using Docker:
{
"mcpServers": {
"yandex-tracker": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}Important Notes:
Replace placeholder values with your actual credentials
Restart your AI client after configuration changes
Ensure
uvxis installed and available in your system PATHFor production use, consider using environment variables instead of hardcoding tokens
Available MCP Tools
The server exposes the following tools through the MCP protocol:
queues_get_all: List all available Yandex Tracker queuesParameters:
fields(optional): Fields to include in the response (e.g., ["key", "name"]). Helps optimize context window usage by selecting only needed fields. If not specified, returns all available fields.page(optional): Page number to return. If not specified, retrieves all pages automatically.per_page(optional): Number of items per page (default: 100)
Returns paginated queue information with selective field inclusion
Respects
TRACKER_LIMIT_QUEUESrestrictions
queue_get_tags: Get all tags for a specific queueParameters:
queue_id(string, queue key like "SOMEPROJECT")Returns list of available tags in the specified queue
Respects
TRACKER_LIMIT_QUEUESrestrictions
queue_get_versions: Get all versions for a specific queueParameters:
queue_id(string, queue key like "SOMEPROJECT")Returns list of available versions in the specified queue with details like name, description, dates, and status
Respects
TRACKER_LIMIT_QUEUESrestrictions
queue_create_version: Create a new version in a specific queueParameters:
queue_id(string, required): Queue key like "SOMEPROJECT"name(string, required): Version namedescription(string, optional): Version descriptionstart_date(date, optional): Version start date inYYYY-MM-DDformatdue_date(date, optional): Version due date inYYYY-MM-DDformat
Returns the created version with details like name, description, dates, and status
Respects
TRACKER_LIMIT_QUEUESrestrictions
queue_get_fields: Get fields for a specific queueParameters:
queue_id(string, required): Queue key like "SOMEPROJECT"include_local_fields(boolean, optional, default: true): Whether to include queue-specific local fields
Returns list of global fields and optionally local (queue-specific) fields
Makes parallel requests to fetch both field types when
include_local_fieldsis trueThe
schema.requiredproperty indicates whether a field is mandatoryUse this to find available and required fields before creating an issue with
issue_createtoolRespects
TRACKER_LIMIT_QUEUESrestrictions
queue_get_metadata: Get detailed metadata about a specific queueParameters:
queue_id(string, required): Queue key like "SOMEPROJECT"expand(array of strings, optional): Fields to expand in the response. Available options:all,projects,components,versions,types,team,workflows,fields,issueTypesConfig
Returns queue information including name, description, default type/priority, and optionally expanded data
Use
expand: ["issueTypesConfig"]to get available resolutions for each issue type (needed forissue_closetool)Respects
TRACKER_LIMIT_QUEUESrestrictions
These tools use the unified Yandex Tracker Entities API. The entity_type parameter accepts project, portfolio, or goal.
entity_get: Get an entity byidor numericshortId; optionally request additionalfieldsor expandattachmentsentities_search: Search entities by name substring or arbitrary field filters, with field selection, sorting, root-only filtering, and page-based paginationentity_get_events: Get entity event history with relative cursor navigation (from_idorselected)entity_create: Create an entity;fields.summaryis required, and links can be created in the same requestentity_update: Update entity fields, links, and add an explanatory comment; collection fields support Tracker operators such asset,add, andremoveentity_delete: Delete an entity and optionally its associated boardentities_bulk_update: Start one bulk update for multiple entities of the same type
Common field keys include summary, description, lead, teamUsers, clients, followers, start, end, tags, parentEntity, entityStatus, and teamAccess. Dates must use the format expected by the Tracker API.
Write tools are unavailable when TRACKER_READ_ONLY=true.
boards_list: List all boards available to the current userboard_get: Get board columns and automatic filter settings by board IDboard_get_sprints: List all sprints associated with a boardsprint_get: Get one sprint with status, archive flag, and planned/actual dates
These tools are read-only. Use the returned sprint ID in issues_find to retrieve the sprint's issues.
filter_get: Get a saved issue filter by numeric IDfilter_find_issues: Execute a saved filter with page/per-page and response-field controlsfilter_create: Create a saved filter from either a Tracker query or field-value conditionsfilter_update: Update a saved filter's name, conditions, displayed fields, sorts, grouping, or folder
filter_create and filter_update are unavailable when TRACKER_READ_ONLY=true. issues_find and issues_count also accept filter_id as an alternative to query.
users_get_all: Get information about user accounts registered in the organizationParameters:
per_page(optional): Number of users per page (default: 50)page(optional): Page number to return (default: 1)
Returns paginated list of users with login, email, license status, and organizational details
Includes user metadata such as external status, dismissal status, and notification preferences
user_get: Get information about a specific user by login or UIDParameters:
user_id(string, user login like "john.doe" or UID like "12345")Returns detailed user information including login, email, license status, and organizational details
Supports both user login names and numeric user IDs for flexible identification
user_get_current: Get information about the current authenticated userNo parameters required
Returns detailed information about the user associated with the current authentication token
Includes login, email, display name, and organizational details for the authenticated user
users_search: Search user based on login, email or real name (first or last name, or both)Parameters:
login_or_email_or_name(string, user login, email or real name to search for)Returns either single user or multiple users if several match the query or an empty list if no users matched
Uses fuzzy matching for real names with a similarity threshold of 80%
Prioritizes exact matches for login and email over fuzzy name matches
get_global_fields: Get all global fields available in Yandex TrackerReturns complete list of global fields that can be used in issues
Includes field schema, type information, and configuration
get_statuses: Get all available issue statusesReturns complete list of issue statuses that can be assigned
Includes status IDs, names, and type information
get_issue_types: Get all available issue typesReturns complete list of issue types for creating/updating issues
Includes type IDs, names, and configuration details
get_priorities: Get all available issue prioritiesReturns complete list of priorities that can be assigned to issues
Includes priority keys, names, and order information
get_resolutions: Get all available issue resolutionsReturns complete list of resolutions that can be used when closing issues
Includes resolution keys, names, descriptions, and order information
issue_get: Retrieve detailed issue information by IDParameters:
issue_id(string, format: "QUEUE-123")include_description(boolean, optional, default: true): Whether to include issue description in the result. Can be large, so use only when needed.
Returns complete issue data including status, assignee, description, etc.
issue_get_url: Generate web URL for an issueParameters:
issue_id(string)Returns:
https://tracker.yandex.ru/{issue_id}
issue_get_comments: Fetch all comments for an issueParameters:
issue_id(string)Returns chronological list of comments with metadata
issue_add_comment: Add a comment to an issueParameters:
issue_id(string, required, format: "QUEUE-123")text(string, required): Comment text (markdown supported by Tracker)summonees(array of strings, optional): Users to summon (logins or IDs). This is the API way to mention/call users (notifications are triggered by this field, not by@loginin text).maillist_summonees(array of strings, optional): Mailing lists to summon (emails)markup_type(string, optional): Usemdfor YFM (markdown)is_add_to_followers(boolean, optional, default: true): Add comment author to followers
Returns created comment object
issue_update_comment: Update an existing comment in an issueParameters:
issue_id(string, required, format: "QUEUE-123")comment_id(int, required): Comment IDtext(string, required): New comment text (markdown supported by Tracker)summonees(array of strings, optional): Users to summon (logins or IDs)maillist_summonees(array of strings, optional): Mailing lists to summon (emails)markup_type(string, optional): Usemdfor YFM (markdown)
Returns updated comment object
issue_delete_comment: Delete a comment from an issueParameters:
issue_id(string, required, format: "QUEUE-123")comment_id(int, required): Comment ID
Returns:
null(success)
issue_add_link: Create a link between an issue and another issueParameters:
issue_id(string, required, format: "QUEUE-123"): The current issuerelationship(string, required): Link type describing howissue_idrelates to the linked issue. One of:relates,is dependent by,depends on,is subtask for,is parent task for,duplicates,is duplicated by,is epic of,has epicissue(string, required): ID or key of the issue to link to (e.g. "TEST-123")
Returns created link object
issue_delete_link: Delete a link between an issue and another issueParameters:
issue_id(string, required, format: "QUEUE-123")link_id(int, required): Link ID (as returned byissue_get_links)
Returns:
null(success)
issue_get_links: Get related issue linksParameters:
issue_id(string)Returns links to related, blocked, or duplicate issues
issue_get_worklogs: Retrieve worklog entriesParameters:
issue_ids(array of strings, required)start_date_from(date, optional): Inclusive lower bound for the work start date (YYYY-MM-DD)start_date_to(date, optional): Inclusive upper bound for the work start date (YYYY-MM-DD)timezone(string, optional, defaultUTC): IANA time zone used when comparingstartdates (for example,Europe/Moscow)
Retrieves every relative-pagination page for each issue and filters by the worklog
startfield, not bycreatedAtReturns ISO 8601 durations exactly as supplied by Tracker. Week-based values must keep Tracker semantics:
P6Wis 30 working days, not 42 calendar days
issue_add_worklog: Add a worklog entry (log spent time) to an issueParameters:
issue_id(string, required, format: "QUEUE-123")duration(string, required): ISO-8601 duration (e.g.PT1H30M)comment(string, optional): Worklog commentstart(datetime, optional): Work start datetime (UTC assumed if timezone is not provided)
Returns created worklog entry
issue_update_worklog: Update a worklog entry (spent time record) in an issueParameters:
issue_id(string, required, format: "QUEUE-123")worklog_id(int, required): Worklog entry IDduration(string, optional): ISO-8601 duration (e.g.PT1H30M)comment(string, optional): Worklog commentstart(datetime, optional): Work start datetime (UTC assumed if timezone is not provided)
Returns updated worklog entry
issue_delete_worklog: Delete a worklog entry (spent time record) from an issueParameters:
issue_id(string, required, format: "QUEUE-123")worklog_id(int, required): Worklog entry ID
Returns:
null(success)
issue_get_attachments: Get attachments for an issueParameters:
issue_id(string, format: "QUEUE-123")Returns list of attachments with metadata for the specified issue
issue_download_attachment: Download an attachment as an MCP embedded binary resourceParameters:
issue_id,attachment_id, andfile_namereturned byissue_get_attachmentsEnforces the
TRACKER_MAX_ATTACHMENT_BYTEStransfer limit
issue_upload_attachment: Upload base64-encoded content as an issue attachmentParameters:
issue_id,file_name,content_base64, and optionalmime_typeUnavailable when
TRACKER_READ_ONLY=true
issue_delete_attachment: Delete an issue attachment by IDUnavailable when
TRACKER_READ_ONLY=true
issue_get_checklist: Get checklist items of an issueParameters:
issue_id(string, format: "QUEUE-123")Returns list of checklist items including text, status, assignee, and deadline information
issue_get_transitions: Get possible status transitions for an issueParameters:
issue_id(string, format: "QUEUE-123")Returns list of available transitions that can be performed on the issue
Each transition includes an ID, display name, and target status information
issue_get_changelog: Get the change history (changelog) of an issueParameters:
issue_id(string, required, format: "QUEUE-123"): The issue keyper_page(integer, optional, default: 50): Number of entries per pagecursor(string, optional): Thenext_cursorvalue returned by the previous call; pass it to fetch the next page (cursor pagination)field(string, optional): Filter the changelog by a field key (e.g.status)type(string, optional): Filter by change type (e.g.IssueWorkflowfor status transitions)
Returns an object with
entries(status transitions and field edits — including who changed whatfrom→toand when — plus comment changes and executed triggers) andnext_cursor(pass it back ascursorfor the next page;nullwhen there are no more pages)
issue_execute_transition: Execute a status transition for an issueParameters:
issue_id(string, required, format: "QUEUE-123"): The issue keytransition_id(string, required): The transition ID to execute. IMPORTANT: Must be one of the IDs returned byissue_get_transitionstoolcomment(string, optional): Optional comment to add when executing the transitionfields(object, optional): Dictionary of additional fields to set during the transition. Common fields includeresolution(e.g., 'fixed', 'wontFix') for closing issues,assigneefor reassigning, etc.
Returns list of available transitions for the new status after the transition is executed
Usage note: You MUST first call
issue_get_transitionsto retrieve available transitions, then pass one of the returned transition IDs. Do NOT use arbitrary transition IDs.
issue_close: Close an issue with a resolution (convenience tool)Parameters:
issue_id(string, required, format: "QUEUE-123"): The issue keyresolution_id(string, required): The resolution ID to set when closing (e.g., 'fixed', 'wontFix', 'duplicate')comment(string, optional): Optional comment to add when closing the issue
Automatically finds a transition to a 'done' status and executes it with the specified resolution
Returns list of available transitions for the new (closed) status
Usage note: Before closing, you MUST:
Call
issue_getto retrieve the issue'stypefieldCall
get_queue_metadatawithexpand: ["issueTypesConfig"]to get available resolutionsChoose a resolution from the
issueTypesConfigentry matching the issue's type - each issue type has its own set of valid resolutions
issue_create: Create a new issue in a queueParameters:
queue(string, required): Queue key where to create the issue (e.g., 'MYQUEUE')summary(string, required): Issue title/summarytype(int, optional): Issue type ID (fromget_issue_typestool)description(string, optional): Issue descriptionassignee(string or int, optional): Assignee login or UIDpriority(string, optional): Priority key (fromget_prioritiestool)fields(object, optional): Additional fields to set during issue creation. IMPORTANT: Before creating an issue, you MUST callqueue_get_fieldsto get available fields (it returns both global and local fields by default). Fields withschema.required=trueare mandatory. Use the field'sidproperty as the key in this map (e.g.,{"fieldId": "value"})
Returns the newly created issue object with all standard issue fields
Respects
TRACKER_LIMIT_QUEUESrestrictions
issue_update: Update an existing issueParameters:
issue_id(string, required, format: "QUEUE-123"): The issue key to updatesummary(string, optional): New issue title/summarydescription(string, optional): New issue descriptionmarkup_type(string, optional): Markup type for description text (use 'md' for YFM markup)parent(IssueUpdateParent, optional): Parent issue reference withid(string) and/orkey(string, e.g., 'QUEUE-123')sprint(array of IssueUpdateSprint, optional): Sprint assignments - array of objects withid(int) fieldtype(IssueUpdateType, optional): Issue type withid(string) and/orkey(string, e.g., 'bug', 'task')priority(IssueUpdatePriority, optional): Priority withid(string) and/orkey(string, e.g., 'critical', 'normal')followers(array of IssueUpdateFollower, optional): Followers - array of objects withid(string, user ID or login)project(IssueUpdateProject, optional): Project withprimary(int, main project shortId) and optionalsecondary(array of ints)tags(array of strings, optional): Issue tagsversion(int, optional): Issue version for optimistic locking - changes only made to current versionfields(object, optional): Additional fields to update. Usequeue_get_fieldsto discover available fields.
Returns the updated issue object with all standard issue fields
Only provided fields are updated; omitted fields remain unchanged
Respects
TRACKER_LIMIT_QUEUESrestrictions
issue_move: Move an issue to a different queueParameters:
issue_id(string, required, format: "QUEUE-123"): The issue key to movequeue(string, required): Target queue key (e.g., 'MYQUEUE')notify(boolean, optional, defaulttrue): Notify users referenced in the issue's fieldsnotify_author(boolean, optional, defaultfalse): Notify the issue authormove_all_fields(boolean, optional, defaultfalse): Carry over versions, components and projects when matching ones exist in the target queue; otherwise they are clearedinitial_status(boolean, optional, defaultfalse): Reset the issue status to the initial value (use when the target queue has a different workflow)
Returns the updated issue object with its new key in the target queue (e.g.,
TASKS-1→NEWQUEUE-42)When the MCP client supports elicitation, the user is prompted to confirm the boolean flags before the move is performed; declining or cancelling aborts the move. Clients without elicitation support proceed with the passed-in values
Respects
TRACKER_LIMIT_QUEUESrestrictions
issues_find: Search issues using Yandex Tracker Query LanguageParameters:
query(optional): Query string using Yandex Tracker Query Language syntaxfilter_id(optional): Saved filter ID; mutually exclusive withqueryinclude_description(boolean, optional, default: false): Whether to include issue description in the issues result. Can be large, so use only when needed.fields(list of strings, optional): Fields to include in the response. Helps optimize context window usage by selecting only needed fields. If not specified, returns all available fields.page(optional): Page number for pagination (default: 1)per_page(optional): Number of items per page (default: 100). May be decreased if results exceed context window.
Returns up to specified number of issues per page
issues_count: Count issues matching a query using Yandex Tracker Query LanguageParameters:
query(optional): Query string using Yandex Tracker Query Language syntaxfilter_id(optional): Saved filter ID; mutually exclusive withquery
Returns the total count of issues matching the specified criteria
Supports all query language features: field filtering, date functions, logical operators, and complex expressions
Useful for analytics, reporting, and understanding issue distribution without retrieving full issue data
http Transport
The MCP server can also be run in streamable-http mode for web-based integrations or when stdio transport is not suitable.
streamable-http Mode Environment Variables
# Required - Set transport to streamable-http mode
TRANSPORT=streamable-http
# Server Configuration
HOST=0.0.0.0 # Default: 0.0.0.0 (all interfaces)
PORT=8000 # Default: 8000Starting the streamable-http Server
# Basic streamable-http server startup
TRANSPORT=streamable-http uvx yandex-tracker-mcp@latest
# With custom host and port
TRANSPORT=streamable-http \
HOST=localhost \
PORT=9000 \
uvx yandex-tracker-mcp@latest
# With all environment variables
TRANSPORT=streamable-http \
HOST=0.0.0.0 \
PORT=8000 \
TRACKER_TOKEN=your_token \
TRACKER_CLOUD_ORG_ID=your_org_id \
uvx yandex-tracker-mcp@latestYou may skip configuring TRACKER_CLOUD_ORG_ID or TRACKER_ORG_ID if you are using the following format when connecting to MCP Server (example for Claude Code):
claude mcp add --transport http yandex-tracker "http://localhost:8000/mcp/?cloudOrgId=your_cloud_org_id&"or
claude mcp add --transport http yandex-tracker "http://localhost:8000/mcp/?orgId=org_id&"You may also skip configuring global TRACKER_TOKEN environment variable if you choose to use OAuth 2.0 authentication (see below).
OAuth 2.0 Authentication
The Yandex Tracker MCP Server supports OAuth 2.0 authentication as a secure alternative to static API tokens. When configured, the server acts as an OAuth provider, facilitating authentication between your MCP client and Yandex OAuth services.
How OAuth Works
The MCP server implements a standard OAuth 2.0 authorization code flow:
Client Registration: Your MCP client registers with the server to obtain client credentials
Authorization: Users are redirected to Yandex OAuth to authenticate
Token Exchange: The server exchanges authorization codes for access tokens
API Access: Clients use bearer tokens for all API requests
Token Refresh: Expired tokens can be refreshed without re-authentication
MCP Client → MCP Server → Yandex OAuth → User Authentication
↑ ↓
└────────── Access Token ←─────────────────┘OAuth Configuration
To enable OAuth authentication, set the following environment variables:
# Enable OAuth mode
OAUTH_ENABLED=true
# Yandex OAuth Application Credentials (required for OAuth)
OAUTH_CLIENT_ID=your_yandex_oauth_app_id
OAUTH_CLIENT_SECRET=your_yandex_oauth_app_secret
# Public URL of your MCP server (required for OAuth callbacks)
MCP_SERVER_PUBLIC_URL=https://your-mcp-server.example.com
# Optional OAuth settings
OAUTH_SERVER_URL=https://oauth.yandex.ru # Default Yandex OAuth server
# When OAuth is enabled, TRACKER_TOKEN becomes optionalSetting Up Yandex OAuth Application
Go to Yandex OAuth and create a new application
Set the callback URL to:
{MCP_SERVER_PUBLIC_URL}/oauth/yandex/callbackRequest the following permissions:
tracker:read- Read permissions for Trackertracker:write- Write permissions for Tracker
Save your Client ID and Client Secret
OAuth vs Static Token Authentication
Feature | OAuth | Static Token |
Security | Dynamic tokens with expiration | Long-lived static tokens |
User Experience | Interactive login flow | One-time configuration |
Token Management | Automatic refresh | Manual rotation |
Access Control | Per-user authentication | Shared token |
Setup Complexity | Requires OAuth app setup | Simple token configuration |
OAuth Mode Limitations
Currently, the OAuth mode requires the MCP server to be publicly accessible for callback URLs
OAuth mode is best suited for interactive clients that support web-based authentication flows
Using OAuth with MCP Clients
When OAuth is enabled, MCP clients will need to:
Support OAuth 2.0 authorization code flow
Handle token refresh when access tokens expire
Store refresh tokens securely for persistent authentication
Note: Not all MCP clients currently support OAuth authentication. Check your client's documentation for OAuth compatibility.
Example configuration for Claude Code:
claude mcp add --transport http yandex-tracker https://your-mcp-server.example.com/mcp/ -s userOAuth Data Storage
The MCP server supports two different storage backends for OAuth data (client registrations, access tokens, refresh tokens, and authorization states):
InMemory Store (Default)
The in-memory store keeps all OAuth data in server memory. This is the default option and requires no additional configuration.
Characteristics:
Persistence: Data is lost when the server restarts
Performance: Very fast access since data is stored in memory
Scalability: Limited to single server instance
Setup: No additional dependencies required
Best for: Development, testing, or single-instance deployments where losing OAuth sessions on restart is acceptable
Configuration:
OAUTH_STORE=memory # Default value, can be omittedRedis Store
The Redis store provides persistent storage for OAuth data using a Redis database. This ensures OAuth sessions survive server restarts and enables multi-instance deployments.
Characteristics:
Persistence: Data persists across server restarts
Performance: Fast access with network overhead
Scalability: Supports multiple server instances sharing the same Redis database
Setup: Requires Redis server installation and configuration
Best for: Production deployments, high availability setups, or when OAuth sessions must persist
Configuration:
# Enable Redis store for OAuth data
OAUTH_STORE=redis
# Redis connection settings (same as used for tools caching)
REDIS_ENDPOINT=localhost # Default: localhost
REDIS_PORT=6379 # Default: 6379
REDIS_DB=0 # Default: 0
REDIS_PASSWORD=your_redis_password # Optional: Redis password
REDIS_POOL_MAX_SIZE=10 # Default: 10Storage Behavior:
Client Information: Stored persistently
OAuth States: Stored with TTL (time-to-live) for security
Authorization Codes: Stored with TTL and automatically cleaned up after use
Access Tokens: Stored with automatic expiration based on token lifetime
Refresh Tokens: Stored persistently until revoked
Key Namespacing: Uses
oauth:*prefixes to avoid conflicts with other Redis data
Token Encryption (Required for Redis Store)
When using Redis store, you must configure encryption to protect OAuth tokens at rest. Token values are encrypted using Fernet (AES-128) and Redis keys use SHA-256 hashes instead of raw tokens, preventing token exposure if Redis is compromised.
Generate an encryption key:
python3 -c "import base64, os; print(base64.b64encode(os.urandom(32)).decode())"Configuration:
# Single encryption key
OAUTH_ENCRYPTION_KEYS=<base64-encoded-32-byte-key>
# Multiple keys for rotation (first encrypts, all decrypt)
OAUTH_ENCRYPTION_KEYS=<new-key>,<old-key>Key rotation allows seamless key updates: add the new key first, wait for old tokens to expire, then remove the old key.
Important Notes:
Both stores use the same Redis connection settings as the tools caching system
When using Redis store, ensure your Redis instance is properly secured and accessible
The
OAUTH_STOREsetting only affects OAuth data storage; tools caching usesTOOLS_CACHE_ENABLEDRedis store uses JSON serialization for better cross-language compatibility and debugging
Authentication
Yandex Tracker MCP Server supports multiple authentication methods with a clear priority order. The server will use the first available authentication method based on this hierarchy:
Authentication Priority Order
Dynamic OAuth Token (highest priority)
When OAuth is enabled and a user authenticates via OAuth flow
Tokens are dynamically obtained and refreshed per user session
Supports both standard Yandex OAuth and Yandex Cloud federative OAuth
Required env vars:
OAUTH_ENABLED=true,OAUTH_CLIENT_ID,OAUTH_CLIENT_SECRET,MCP_SERVER_PUBLIC_URLAdditional vars for federative OAuth:
OAUTH_SERVER_URL=https://auth.yandex.cloud/oauth,OAUTH_TOKEN_TYPE=Bearer,OAUTH_USE_SCOPES=false
Passthrough Bearer OAuth Token
When MCP OAuth middleware does not provide a token, the server can read a Yandex OAuth token from the incoming
Authorization: Bearer <token>headerUseful behind a trusted reverse proxy or gateway that authenticates users, resolves their stored Yandex OAuth token, and injects it per request
The token from MCP OAuth still has priority when OAuth mode is enabled and active
Static OAuth Token
Traditional OAuth token provided via environment variable
Single token used for all requests
Required env var:
TRACKER_TOKEN(your OAuth token)
Static IAM Token
IAM (Identity and Access Management) token for service-to-service authentication
Suitable for automated systems and CI/CD pipelines
Required env var:
TRACKER_IAM_TOKEN(your IAM token)
Dynamic IAM Token (lowest priority)
Automatically retrieved using service account credentials
Token is fetched and refreshed automatically
Required env vars:
TRACKER_SA_KEY_ID,TRACKER_SA_SERVICE_ACCOUNT_ID,TRACKER_SA_PRIVATE_KEY
Authentication Scenarios
Scenario 1: OAuth with Dynamic Tokens (Recommended for Interactive Use)
# Enable OAuth mode
OAUTH_ENABLED=true
OAUTH_CLIENT_ID=your_oauth_app_id
OAUTH_CLIENT_SECRET=your_oauth_app_secret
MCP_SERVER_PUBLIC_URL=https://your-server.com
# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # or TRACKER_ORG_IDScenario 2: Static OAuth Token (Simple Setup)
# OAuth token
TRACKER_TOKEN=your_oauth_token
# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # or TRACKER_ORG_IDScenario 3: Passthrough Bearer Token Behind a Reverse Proxy
Use this mode when a trusted gateway handles user authentication, looks up the user's Yandex OAuth token, and forwards the request to the MCP server with that token in the request header:
Authorization: Bearer <user_yandex_oauth_token># Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # or TRACKER_ORG_IDThis passthrough token is used only when MCP OAuth middleware has not provided an access token for the request. In OAuth-enabled deployments with an active MCP OAuth session, the MCP OAuth token takes priority.
Scenario 4: Static IAM Token
# IAM token
TRACKER_IAM_TOKEN=your_iam_token
# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # or TRACKER_ORG_IDScenario 5: Dynamic IAM Token with Service Account
# Service account credentials
TRACKER_SA_KEY_ID=your_key_id
TRACKER_SA_SERVICE_ACCOUNT_ID=your_service_account_id
TRACKER_SA_PRIVATE_KEY=your_private_key
# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # or TRACKER_ORG_IDScenario 6: Federative OAuth for OIDC Applications (Advanced)
# Enable OAuth with Yandex Cloud federation
OAUTH_ENABLED=true
OAUTH_SERVER_URL=https://auth.yandex.cloud/oauth
OAUTH_TOKEN_TYPE=Bearer
OAUTH_USE_SCOPES=false
OAUTH_CLIENT_ID=your_oidc_client_id
OAUTH_CLIENT_SECRET=your_oidc_client_secret
MCP_SERVER_PUBLIC_URL=https://your-server.com
# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # or TRACKER_ORG_IDThis configuration enables authentication through Yandex Cloud OIDC applications, which is required for federated accounts in Yandex Cloud. Federated users authenticate through their organization's identity provider (IdP) and use this OAuth flow to access Yandex Tracker APIs.
Important Notes
The server checks authentication methods in the order listed above
Only one authentication method will be used at a time
For production use, dynamic tokens (OAuth or IAM) are recommended for better security
IAM tokens have a shorter lifetime than OAuth tokens and may need more frequent renewal
When using service accounts, ensure the account has appropriate permissions for Yandex Tracker
Configuration
Environment Variables
# Authentication (use one of the following methods)
# Method 1: OAuth Token
TRACKER_TOKEN=your_yandex_tracker_oauth_token
# Method 2: IAM Token
TRACKER_IAM_TOKEN=your_iam_token
# Method 3: Service Account (for dynamic IAM token)
TRACKER_SA_KEY_ID=your_key_id # Service account key ID
TRACKER_SA_SERVICE_ACCOUNT_ID=your_sa_id # Service account ID
TRACKER_SA_PRIVATE_KEY=your_private_key # Service account private key
# Organization Configuration (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # For Yandex Cloud organizations
TRACKER_ORG_ID=your_org_id # For Yandex 360 organizations
# API Configuration (optional)
TRACKER_API_BASE_URL=https://api.tracker.yandex.net # Default: https://api.tracker.yandex.net
TRACKER_MAX_ATTACHMENT_BYTES=10485760 # Default: 10 MiB MCP transfer limit
# Security - Restrict access to specific queues (optional)
TRACKER_LIMIT_QUEUES=PROJ1,PROJ2,DEV # Comma-separated queue keys
# Server Configuration
HOST=0.0.0.0 # Default: 0.0.0.0
PORT=8000 # Default: 8000
TRANSPORT=stdio # Options: stdio, streamable-http, sse
# Redis connection settings (used for caching and OAuth store)
REDIS_ENDPOINT=localhost # Default: localhost
REDIS_PORT=6379 # Default: 6379
REDIS_DB=0 # Default: 0
REDIS_PASSWORD=your_redis_password # Optional: Redis password
REDIS_POOL_MAX_SIZE=10 # Default: 10
# Tools caching configuration (optional)
TOOLS_CACHE_ENABLED=true # Default: false
TOOLS_CACHE_REDIS_TTL=3600 # Default: 3600 seconds (1 hour)
# OAuth 2.0 Authentication (optional)
OAUTH_ENABLED=true # Default: false
OAUTH_STORE=redis # Options: memory, redis (default: memory)
OAUTH_SERVER_URL=https://oauth.yandex.ru # Default: https://oauth.yandex.ru (use https://auth.yandex.cloud/oauth for federation)
OAUTH_TOKEN_TYPE=<Bearer|OAuth|<empty>> # Default: <empty> (required to be Bearer for Yandex Cloud federation)
OAUTH_USE_SCOPES=true # Default: true (set to false for Yandex Cloud federation)
OAUTH_CLIENT_ID=your_oauth_client_id # Required when OAuth enabled
OAUTH_CLIENT_SECRET=your_oauth_secret # Required when OAuth enabled
MCP_SERVER_PUBLIC_URL=https://your.server.com # Required when OAuth enabled
TRACKER_READ_ONLY=true # Default: false - Limit OAuth to read-only permissionsDocker Deployment
Using Pre-built Image (Recommended)
# Using environment file
docker run --env-file .env -p 8000:8000 ghcr.io/aikts/yandex-tracker-mcp:latest
# With inline environment variables
docker run -e TRACKER_TOKEN=your_token \
-e TRACKER_CLOUD_ORG_ID=your_org_id \
-p 8000:8000 \
ghcr.io/aikts/yandex-tracker-mcp:latestBuilding the Image Locally
docker build -t yandex-tracker-mcp .Docker Compose
Using pre-built image:
version: '3.8'
services:
mcp-tracker:
image: ghcr.io/aikts/yandex-tracker-mcp:latest
ports:
- "8000:8000"
environment:
- TRACKER_TOKEN=${TRACKER_TOKEN}
- TRACKER_CLOUD_ORG_ID=${TRACKER_CLOUD_ORG_ID}Building locally:
version: '3.8'
services:
mcp-tracker:
build: .
ports:
- "8000:8000"
environment:
- TRACKER_TOKEN=${TRACKER_TOKEN}
- TRACKER_CLOUD_ORG_ID=${TRACKER_CLOUD_ORG_ID}Development Setup
# Clone and setup
git clone https://github.com/aikts/yandex-tracker-mcp
cd yandex-tracker-mcp
# Install development dependencies
uv sync --dev
# Formatting and static checking
taskLicense
This project is licensed under the terms specified in the LICENSE file.
Support
For issues and questions:
Review Yandex Tracker API documentation
Submit issues at https://github.com/aikts/yandex-tracker-mcp/issues
Available Tools
57 toolsboard_getGet BoardARead-only
Get a Yandex Tracker board with columns and filter settings
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Board identifier |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| self | Yes | |
| columns | No | |
| version | Yes | |
| created_at | No | |
| created_by | No | |
| updated_at | No | |
| default_queue | No | |
| auto_filter_settings | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds that the board includes columns and filter settings, but provides no additional behavioral context such as permissions, errors, or pagination. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action and resource. There is no redundant information, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one parameter, is marked read-only, and has an output schema, the description adequately conveys the core functionality. It could be improved by noting that it fetches a single board by ID or mentions potential errors, but for its simplicity it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with the parameter board_id described as 'Board identifier'. The tool description does not add further meaning to this single parameter, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') with a clear resource ('Yandex Tracker board') and specifies the included content ('columns and filter settings'). This distinguishes it from sibling tools like boards_list and board_get_sprints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage via the verb 'Get' but does not explicitly state when to use this tool versus alternatives such as boards_list for listing or board_get_sprints for sprint details. No exclusions or alternative comparisons are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
board_get_sprintsGet Board SprintsARead-only
Get all sprints associated with a Yandex Tracker board
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Board identifier |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, covering the safety profile. The description adds the 'all' scope for sprints, which is useful, but it does not disclose pagination, ordering, or error behavior. With annotations covering read-only semantics, this modest addition is acceptable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It immediately states the action and resource, making it appropriately concise for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one fully described parameter and an output schema, the description sufficiently conveys the purpose. The output schema eliminates the need to detail return values, and the annotations cover safety, making the description complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage for the single parameter board_id with a description ('Board identifier'). The tool description does not add any further semantic detail about the parameter, so it does not exceed what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('all sprints') with a specific scope ('associated with a Yandex Tracker board'). It distinguishes the tool from siblings like sprint_get, which targets a single sprint, and boards_list/board_get, which retrieve board metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context that this tool lists sprints for a board, implying the appropriate scenario for use. However, it does not explicitly mention when not to use it or name alternatives like sprint_get for individual sprints, so it falls short of explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boards_listList BoardsARead-only
Get all Yandex Tracker issue boards available to the current user
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers the safety profile, and the description adds the useful behavioral context that results are scoped to the current user's accessibility. This exceeds the baseline by providing auth-related context beyond the annotation, though it does not discuss pagination or output format (which may be covered by the output schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the essential purpose and scope without any filler. Every word contributes meaning, making it appropriately concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, read-only annotation, and an output schema present), the description is complete. It specifies the resource type, the scope (current user), and the action (get all). There is no need to explain return values since the output schema handles that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and full schema coverage (empty schema), the baseline for parameter semantics is 4. The description does not need to elaborate on parameters, and it adds no parameter-related meaning because there are none. This matches the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get all') with a clear resource ('Yandex Tracker issue boards') and a scope qualifier ('available to the current user'). This clearly distinguishes it from sibling tools like 'board_get' (which likely retrieves a single board) and 'board_get_sprints' (which retrieves sprints for a board).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a use case (list all boards for the current user) but does not explicitly contrast it with alternatives. It does not mention when to use this instead of 'board_get' or other board-related tools. Context is clear but exclusions are absent, so it meets the 'implied usage' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entities_bulk_updateBulk Update EntitiesB
Start a bulk update for Yandex Tracker projects, portfolios, or goals.
| Name | Required | Description | Default |
|---|---|---|---|
| links | No | Links to apply to every selected entity | |
| fields | No | Field-value pairs to apply to every selected entity | |
| comment | No | Optional comment to add to every selected entity | |
| entity_ids | Yes | Ids of entities to update | |
| entity_type | Yes | Entity type: project, portfolio, or goal |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| self | Yes | |
| status | Yes | |
| created_at | No | |
| created_by | No | |
| status_text | No | |
| execution_chunk_percent | No | |
| execution_issue_percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, so the description carries the burden of behavioral disclosure. It mentions 'Start a bulk update' but does not clarify whether this is asynchronous, what the response contains, whether changes are reversible, or any side effects. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core purpose. There is no fluff or redundant information; every word contributes to understanding what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and fully covered parameters, the tool is a complex bulk operation with 5 parameters. The description fails to mention asynchronous behavior, return format, or how it relates to single-entity updates. This is insufficient context for an agent to confidently select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents each parameter. The description adds minimal value beyond reiterating entity types, but it does reinforce that the update applies to multiple entities. Baseline 3 is appropriate because the schema handles parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Start a bulk update') with a defined resource ('Yandex Tracker projects, portfolios, or goals'). It clearly conveys the tool's purpose and distinguishes it from single-entity operations like entity_update, though it does not explicitly reference sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'bulk update' implies usage when updating multiple entities at once, and the listed entity types give context. However, there is no explicit guidance on when to prefer this over entity_update or entity_create, nor any mention of limitations or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entities_searchSearch EntitiesARead-only
Search Yandex Tracker projects, portfolios, or goals with filters and sorting.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to return, default is 1 | |
| input | No | Substring to search for in entity names | |
| fields | No | Additional entity fields to include in each result | |
| filter | No | Field-value filters using Entities API keys, for example {'entityStatus': 'in_progress', 'followers': 'notEmpty()'} | |
| order_by | No | Entity field key used for sorting | |
| per_page | No | The number of items per page. May be decreased if results exceed context window. If there is a change in per_page argument - retrieval must be started over with page = 1, as the paging could have changed. | |
| order_asc | No | Sort ascending when true, descending when false | |
| root_only | No | Return only entities without a parent | |
| entity_type | Yes | Entity type: project, portfolio, or goal |
Output Schema
| Name | Required | Description |
|---|---|---|
| hits | Yes | |
| pages | Yes | |
| values | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description's 'Search' aligns with that. The description adds no extra behavioral context (e.g., pagination, result limits), so it meets the baseline but does not exceed it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, focused sentence that immediately conveys the tool's core function. No filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema (all params documented), readOnlyHint annotation, and presence of an output schema, the description adequately covers the tool's purpose. Additional behavioral details are already captured in the schema, so the description is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description mentions 'filters and sorting' which maps to filter/order_by params, but does not add meaning beyond the schema's detailed parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Search') on a defined resource ('Yandex Tracker projects, portfolios, or goals') and mentions key capabilities (filters, sorting). This distinguishes it from sibling tools like entity_get (single entity fetch) and issues_find (issue search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for searching across entity types, and the context is clear. It does not explicitly exclude alternatives or mention when not to use, but the action and resource are unambiguous enough for an agent to infer applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entity_createCreate EntityA
Create a Yandex Tracker project, portfolio, or goal.
| Name | Required | Description | Default |
|---|---|---|---|
| links | No | Entity links, each with relationship and entity keys | |
| fields | Yes | Entity fields. summary is required. Other common keys include description, lead, teamUsers, clients, followers, start, end, tags, parentEntity, entityStatus, and teamAccess | |
| entity_type | Yes | Entity type: project, portfolio, or goal | |
| response_fields | No | Additional fields to include in the response |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| self | Yes | |
| fields | No | |
| version | Yes | |
| short_id | Yes | |
| created_at | No | |
| created_by | No | |
| updated_at | No | |
| attachments | No | |
| entity_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint=false, and the description's 'Create' is consistent with a write operation. The description adds the range of entity types that can be created (project, portfolio, goal), which is not in annotations. However, it does not disclose other behavioral aspects like permission requirements or response behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the key action and resource, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema is rich with parameter descriptions, an output schema is present, and annotations indicate read/write status. The description covers the core purpose, but it lacks usage context or prerequisites. Given the schema richness, the minimal description is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having a clear description. The tool description does not add parameter-specific meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Create' and identifies the resource as 'a Yandex Tracker project, portfolio, or goal.' It clearly distinguishes this tool from siblings like entity_update and entity_delete, which modify or remove entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention that it is for new entities only, nor does it reference entity_update or entities_bulk_update as alternatives. No when-to-use or when-not-to-use context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entity_deleteDelete EntityADestructive
Delete a Yandex Tracker project, portfolio, or goal.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | Entity id or numeric shortId | |
| with_board | No | Also delete the associated board, when applicable | |
| entity_type | Yes | Entity type: project, portfolio, or goal |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description does not need to restate that deletion is destructive. It adds the target entity types, but these are also present in the schema enum. No additional behavioral traits like irreversibility or permissions are mentioned, but this is acceptable given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, sharply focused sentence with no redundant words or filler. It is appropriately concise for a simple deletion tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructive annotation, the full input schema, and presence of an output schema, the description is sufficient for an agent to understand the tool's purpose. It lacks some extra context like irreversibility, but the annotations cover the key safety aspect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: all three parameters have descriptions. The description does not add meaning beyond the schema, so it stays at the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific action ('Delete') and the resource types ('Yandex Tracker project, portfolio, or goal'), making it clear what the tool does. It distinguishes itself from sibling tools like entity_create and entity_update by focusing solely on deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and description, but there is no explicit guidance on when to use this tool, prerequisites, or alternatives. The description does not specify when not to use it, though the scope is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entity_getGet EntityARead-only
Get a Yandex Tracker project, portfolio, or goal by id or shortId.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Additional data to include; supported value: attachments | |
| fields | No | Additional entity fields to include, such as summary, description, lead, entityStatus, parentEntity, issueQueues, or progressPercentage | |
| entity_id | Yes | Entity id or numeric shortId | |
| entity_type | Yes | Entity type: project, portfolio, or goal |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| self | Yes | |
| fields | No | |
| version | Yes | |
| short_id | Yes | |
| created_at | No | |
| created_by | No | |
| updated_at | No | |
| attachments | No | |
| entity_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds the ability to specify 'expand' for attachments and 'fields' for additional data, which hints at response shaping. However, it doesn't disclose behavior like default fields returned, pagination, or error conditions, but given the annotation, descriptive value is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence front-loads the core action, and the description is appropriately sized for a straightforward getter tool. No redundant fluff; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 params, simple getter), output schema exists, and annotations indicate read-only, the description is nearly complete. It doesn't list return fields, but output schema covers that. Missing a bit: mention that entity_id can be shortId is included, but some usage context (e.g., differences between id types) is minimal. Still sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with detailed descriptions for each parameter (entity_type, entity_id, expand, fields). The description echoes schema for entity_type but adds that id can be numeric shortId, which is valuable. Baseline 3 is raised because the description clarifies shortId usage and explains expand/fields beyond their schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states specific verb+resource: 'Get a Yandex Tracker project, portfolio, or goal by id or shortId.' It clearly lists the three entity types, distinguishing from sibling tools like queue_get_metadata or issue_get. The scope is explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use: when you need a project, portfolio, or goal by ID/shortId. It doesn't explicitly name alternatives or exclusions, but the context with sibling tools (entity_get_events, entity_create) makes usage clear. Some guidance about when not to use (e.g., for issues use issue_get) would elevate it, but it's not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entity_get_eventsGet Entity EventsARead-only
Get the event history of a Yandex Tracker project, portfolio, or goal.
| Name | Required | Description | Default |
|---|---|---|---|
| from_id | No | Return events after this event id; mutually exclusive with selected | |
| per_page | No | The number of items per page. May be decreased if results exceed context window. If there is a change in per_page argument - retrieval must be started over with page = 1, as the paging could have changed. | |
| selected | No | Center results around this event id; mutually exclusive with from_id | |
| direction | No | Pagination direction: forward or backward | forward |
| entity_id | Yes | Entity id or numeric shortId | |
| entity_type | Yes | Entity type: project, portfolio, or goal | |
| new_events_on_top | No | Reverse the default event order |
Output Schema
| Name | Required | Description |
|---|---|---|
| events | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the agent already knows this is a safe read operation. The description adds that it returns 'event history,' but no additional behavioral details such as ordering or event scope beyond what the schema already provides. With annotations covering safety, this adds minimal extra context, warranting a mid-range score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the tool's purpose without filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a rich schema with parameter descriptions and an output schema, while annotations confirm read-only behavior. The description, though brief, fully explains what the tool does and for which entity types, making it complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the input schema already contains detailed explanations for each parameter, including mutual exclusivity for from_id and selected, direction, and per_page. The description contributes no parameter-level information, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific action 'Get the event history' and explicitly names the resources: 'Yandex Tracker project, portfolio, or goal.' This clearly distinguishes it from sibling tools like entity_get (which retrieves entity details) and issue_get_changelog (which covers issues).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for entity event history by naming the three entity types, providing clear context for when to use it. However, it does not explicitly exclude other cases (e.g., issues) or mention alternatives like issue_get_changelog, so no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entity_updateUpdate EntityB
Update a Yandex Tracker project, portfolio, or goal.
| Name | Required | Description | Default |
|---|---|---|---|
| links | No | Links to update, each with relationship and entity keys | |
| expand | No | Additional data to include; supported value: attachments | |
| fields | No | Fields to update. Collection fields accept Tracker operators such as set, add, and remove | |
| comment | No | Optional comment explaining the update | |
| entity_id | Yes | Entity id or numeric shortId | |
| entity_type | Yes | Entity type: project, portfolio, or goal | |
| response_fields | No | Additional fields to include in the response |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| self | Yes | |
| fields | No | |
| version | Yes | |
| short_id | Yes | |
| created_at | No | |
| created_by | No | |
| updated_at | No | |
| attachments | No | |
| entity_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond the annotation. It does not mention whether updates are partial or full, any permission requirements, or effects on unspecified fields. With only readOnlyHint=false in annotations, the agent gains no additional safety or operational insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the essential purpose without extraneous words. It is perfectly concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the schema and output schema are rich, the description does not address usage guidance or behavioral nuances. It is minimally sufficient for purpose identification but leaves gaps in when-to-use context, so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already fully documented. The description itself adds no parameter-level detail, matching the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update') and resource ('a Yandex Tracker project, portfolio, or goal'), clearly distinguishing this tool from sibling tools like issue_update. It precisely enumerates the supported entity types, leaving no ambiguity about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as entity_create, entity_delete, entities_bulk_update, or issue_update. There are no usage scenarios, exclusions, or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filter_createCreate Saved FilterA
Create a saved Yandex Tracker issue filter using query or field conditions
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Saved filter name | |
| query | No | Tracker query language expression; mutually exclusive with filter | |
| sorts | No | Saved filter sort definitions | |
| fields | No | Issue fields shown for this filter in Tracker UI | |
| filter | No | Field-value conditions; mutually exclusive with query | |
| folder | No | Optional destination folder | |
| group_by | No | Optional grouping field or object |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| self | Yes | |
| owner | No | |
| query | No | |
| sorts | No | |
| fields | No | |
| filter | No | |
| folder | No | |
| favorite | No | |
| group_by | No | |
| permissions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=false in annotations, the mutating nature is already disclosed. The description adds minimal behavioral context beyond the annotation, mainly the two modes of defining conditions, which is also described in the schema. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the verb and resource. Every word adds value and no unnecessary details are included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the detailed schema and presence of an output schema, the description adequately conveys the tool's purpose. It doesn't need to explain return values. Missing explicit mention of prerequisites or side effects, but those are not critical for a create operation with clear schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already well-documented. The description's mention of 'query or field conditions' adds little new meaning beyond the schema, which already notes mutual exclusivity. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('saved Yandex Tracker issue filter'), and mentions the two ways to define it ('using query or field conditions'). It distinguishes from sibling tools like filter_update (which modifies) and filter_get (which retrieves) by focusing on creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The verb 'create' implies this is for new filters, but there is no explicit 'when to use vs alternatives' or mention of filter_update for existing filters. The usage is implied rather than clearly stated, so it meets the 'implied usage' bar but not higher.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filter_find_issuesFind Issues by Saved FilterARead-only
Execute a saved Yandex Tracker filter and return matching issues
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to return, default is 1 | |
| fields | No | Issue fields to keep in the response | |
| per_page | No | The number of items per page. May be decreased if results exceed context window. If there is a change in per_page argument - retrieval must be started over with page = 1, as the paging could have changed. | |
| filter_id | Yes | Saved filter identifier | |
| include_description | No | Include issue descriptions in the response |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=true annotation already covers the safe-read nature of the tool. The description adds no extra behavioral context (e.g., pagination behavior, result limits, or differences from a direct issue search), but it also does not contradict the annotation. With the annotation in place, a midpoint score is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently captures the core action and result. It contains no redundant filler and every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema, the readOnlyHint annotation, and the presence of an output schema, the description is sufficient for basic invocation. It lacks explicit guidance on when to choose this over sibling search tools, but that gap is more about usage guidelines than completeness of the tool's contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All five parameters (filter_id, page, per_page, fields, include_description) have descriptions in the input schema, providing 100% coverage. The tool description itself does not elaborate on parameters, but the schema fully documents their meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool executes a saved Yandex Tracker filter and returns matching issues. The verb 'execute' and the resource 'saved filter' make the function explicit, and it is distinguishable from sibling tools like filter_get (which retrieves filter metadata) and issues_find (which searches issues directly).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as issues_find or filter_get. It only states what the tool does, leaving the agent to infer from the name that a saved filter_id is required. There is no mention of scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filter_getGet Saved FilterARead-only
Get a saved Yandex Tracker issue filter by id
| Name | Required | Description | Default |
|---|---|---|---|
| filter_id | Yes | Saved filter identifier |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| self | Yes | |
| owner | No | |
| query | No | |
| sorts | No | |
| fields | No | |
| filter | No | |
| folder | No | |
| favorite | No | |
| group_by | No | |
| permissions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read operation. The description adds no additional behavioral context such as permissions, error handling, or return behavior beyond restating the resource and parameter. This does not contradict the annotation, but it offers no extra transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence (10 words) that front-loads the action and resource. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, one parameter, an output schema, and a readOnlyHint annotation, the description is largely sufficient. However, it does not offer comparison with sibling tools or mention potential error cases, leaving a minor gap in guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter (filter_id). The tool description's 'by id' adds no new meaning over the schema's 'Saved filter identifier' and minimum value, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') with a clear resource ('a saved Yandex Tracker issue filter') and parameter ('by id'). It distinguishes from sibling tools like filter_create, filter_update, and filter_find_issues, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its usage: retrieve a saved filter by its identifier. However, it provides no explicit guidance on when to use this tool versus alternatives (e.g., filter_find_issues for finding issues in a filter), nor does it state exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filter_updateUpdate Saved FilterB
Update a saved Yandex Tracker issue filter
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New filter name | |
| query | No | Replacement query; mutually exclusive with filter | |
| sorts | No | Replacement sort definitions | |
| fields | No | UI issue fields | |
| filter | No | Replacement field-value conditions; mutually exclusive with query | |
| folder | No | Destination folder | |
| group_by | No | Grouping field or object | |
| filter_id | Yes | Saved filter identifier |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| self | Yes | |
| owner | No | |
| query | No | |
| sorts | No | |
| fields | No | |
| filter | No | |
| folder | No | |
| favorite | No | |
| group_by | No | |
| permissions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=false already signals a mutation, and the description merely repeats the update action without adding behavioral context. It does not disclose partial-update behavior, whether unspecified fields are preserved, or the effect on the saved filter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that immediately conveys the operation. It contains no filler or redundancy and is appropriately sized for a simple update tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The rich schema and output schema cover parameter details and return values, so the minimal description is partially sufficient. However, it omits usage context such as whether this replaces the entire filter or only provided fields, and when to prefer sibling filter_create.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and every parameter has its own description, so the tool description adds no new parameter meaning. The baseline 3 applies because the schema documents parameter roles and constraints thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and the resource ('saved Yandex Tracker issue filter'), distinguishing it from siblings like filter_create and filter_get. The verb and resource 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like filter_create or filter_get. The description relies solely on the word 'Update' and offers no exclusions, prerequisites, or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_global_fieldsGet Global FieldsARead-only
Get all global fields available in Yandex Tracker that can be used in issues
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers the read-only nature. The description adds context that the returned fields are global and usable in issues, which is useful. However, it does not describe pagination, ordering, or other behavioral details, though these are less critical for a simple list endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence without any fluff. Every word contributes to conveying the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the zero-parameter, read-only nature and the presence of an output schema, the description fully covers the tool's purpose. It clearly explains what the tool returns and its scope, with no missing critical information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the schema is fully covered. The description adds no parameter-specific semantics, but none are needed. The tool has no input requirements, so the baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Get all global fields available in Yandex Tracker that can be used in issues' with a specific verb, resource, and scope. It clearly distinguishes from sibling tools like queue_get_fields by emphasizing 'global' and 'can be used in issues'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly mention when to use this tool versus alternatives. The word 'global' implies a distinction from queue-specific fields, but no direct comparison or exclusion is provided. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_issue_typesGet Issue TypesARead-only
Get all issue types available in Yandex Tracker that can be used when creating or updating issues
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already signals a safe read operation. The description adds that the tool retrieves all issue types for create/update operations, but it does not disclose return format, sorting, or edge cases. Since the schema and output schema provide structural details, the description offers modest additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately states the action and resource, with no filler or repetition. It is front-loaded and efficiently communicates the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, a readOnly annotation, and an output schema, the description fully covers what the tool does and when it is relevant. It explains the data's usage context, making it complete for an agent to decide when to call this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is 100% for an empty properties object. Per rubric, zero-parameter tools receive a baseline of 4. The description adds context about the returned data's purpose but there are no parameter semantics to elaborate on.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' and clearly identifies the resource as 'all issue types available in Yandex Tracker'. It further explains the purpose ('can be used when creating or updating issues'), which distinguishes it from sibling tools like get_statuses or get_priorities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the context for use ('when creating or updating issues'), which implies when to call this tool. However, it does not explicitly name alternative tools or specify when not to use it, so it lacks full exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_prioritiesGet PrioritiesARead-only
Get all priorities available in Yandex Tracker that can be used in issues
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already communicates that this is a safe read operation. The description adds useful context about the scope ('available in Yandex Tracker' and 'can be used in issues'), which goes beyond the annotation. No additional behavioral traits like pagination or auth are disclosed, but the output schema covers return details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the verb, resource, and scope without any filler or redundant phrasing. It earns its place entirely and has no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, a readOnlyHint annotation, and an output schema present, the description fully covers what an agent needs to know to select and call this tool. The description's statement of scope completes the picture for a simple metadata-lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is complete and there is nothing to explain. The description appropriately focuses on what the tool returns rather than parameter details. Baseline of 4 applies for parameterless tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and names the resource 'all priorities available in Yandex Tracker', with the functional scope 'can be used in issues'. This clearly distinguishes it from sibling tools like get_statuses or get_issue_types, which target different reference data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the use case: an agent should call this when it needs the list of priorities available for issues in Yandex Tracker. It does not name alternative tools, but for a no-argument lookup there are no obvious competing tools for this specific data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_resolutionsGet ResolutionsARead-only
Get all resolutions available in Yandex Tracker that can be used when closing issues
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds the scope ('all resolutions') and the context ('when closing issues') but does not disclose additional behaviors like ordering, filtering, or response format. This is acceptable for a simple list retrieval with annotations present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that immediately states the action and resource. It is front-loaded with the tool's purpose and contains no unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and the output schema exists, the description is sufficient for an agent to understand the tool's role. The context 'when closing issues' and the scope 'all resolutions' provide complete guidance for this low-complexity read operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema fully covers the input space (100% coverage). Per the rubric, a no-parameter tool gets a baseline of 4. The description does not need to add parameter details, as none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose: retrieving all resolutions in Yandex Tracker used when closing issues. It uses a specific verb ('Get') and resource ('resolutions'), and the context 'when closing issues' distinguishes it from sibling tools like get_statuses or get_issue_types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the intended use case ('when closing issues'), which helps the agent select it for issue closure scenarios. However, it does not explicitly mention alternatives or exclusions, though the context is reasonably clear among the many sibling getter tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statusesGet StatusesARead-only
Get all statuses available in Yandex Tracker that can be used in issues
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers the safety profile. The description adds a contextual detail that only statuses usable in issues are returned, which is mildly informative. It does not describe pagination, return format, or other behavioral traits, but the output schema fills some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action ('Get all statuses') and provides necessary qualifying context without any fluff. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless, read-only tool with an output schema, the description adequately explains what the tool returns. The context of 'available in Yandex Tracker' and 'usable in issues' is sufficient for the agent to use it correctly, and the output schema covers return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the schema is empty and schema description coverage is trivially 100%. The baseline for 0 params is 4, and the description does not need to explain any parameters. It appropriately focuses on the tool's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets all statuses available in Yandex Tracker that are usable in issues, with a specific verb and resource. It distinguishes itself from sibling reference-data tools by naming the exact entity (statuses) and scoping to issue-usable statuses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives such as get_issue_types or get_resolutions. It only states what it does, leaving the agent to infer usage from the name. There is no mention of exclusions or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_add_commentAdd Issue CommentA
Add a comment to a Yandex Tracker issue. IMPORTANT: If you need to mention/call people to the discussion (so they get notifications), do NOT rely on '@login' in the text — use the summonees parameter instead.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Comment text (markdown supported by Tracker). | |
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' | |
| summonees | No | Optional list of summoned users (logins or IDs). These users will be invited to the discussion and receive notifications (this is the API way to 'mention/call' someone in Yandex Tracker comments). | |
| markup_type | No | Optional markup type for comment text. Use 'md' for YFM (markdown). | |
| maillist_summonees | No | Optional list of mailing lists to summon (emails). Example: ['team@example.com']. | |
| is_add_to_followers | No | Whether to add the comment author to issue followers. Default: true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| text | No | |
| longId | No | |
| textHtml | No | |
| createdAt | No | |
| createdBy | No | |
| summonees | No | |
| transport | No | |
| updatedAt | No | |
| updatedBy | No | |
| maillistSummonees | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=false, the description adds valuable behavioral context: @login mentions do not trigger notifications, and summonees must be used instead. This goes beyond the annotation but does not disclose other side effects like follower changes (which are covered in the schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences: the first states the tool's purpose, the second delivers the critical usage warning. No fluff, front-loaded, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a comment-creation tool with a complete schema and output schema, the description covers the essential purpose and the key gotcha. It lacks details on prerequisites or auth, but those are not necessary given the tool's simplicity and schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds extra semantics for the summonees parameter by warning about @login behavior, which is not explicit in the schema. This elevates the parameter meaning beyond the property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add a comment to a Yandex Tracker issue' with a specific verb and resource. It distinguishes from siblings like issue_update_comment and issue_delete_comment by the action 'add'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit 'IMPORTANT' guideline: do not rely on '@login' in text to mention people; use the `summonees` parameter instead. This is a clear when-not/alternative instruction, though it does not contrast this tool with sibling comment-editing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_add_linkAdd Issue LinkA
Create a link between a Yandex Tracker issue and another issue. The relationship describes how the current issue (issue_id) relates to the linked issue. For example, 'depends on' means issue_id depends on the linked issue, while 'is dependent by' means the linked issue depends on issue_id. Use 'relates' for a simple connection. Returns the created link.
| Name | Required | Description | Default |
|---|---|---|---|
| issue | Yes | ID or key of the issue to link to, e.g. 'TEST-123'. | |
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' | |
| relationship | Yes | Link type describing how the current issue (issue_id) relates to the linked issue. 'is epic of'/'has epic' apply only to Epic-type issues. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| type | No | |
| object | No | |
| status | No | |
| assignee | No | |
| createdAt | No | |
| createdBy | No | |
| direction | No | |
| updatedAt | No | |
| updatedBy | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only provide readOnlyHint=false, so the description carries the burden of explaining behavior. It does so by clarifying the directional semantics of the relationship (e.g., 'depends on' means issue_id depends on the linked issue) and stating that it returns the created link. This goes beyond the annotation and adds meaningful context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, with the main action front-loaded. Every sentence earns its place: the first states the purpose, the second explains relationship semantics with examples, and the third notes the return value. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values are covered elsewhere. With 3 required parameters, one enum, and clear semantics, the description is complete for the tool's complexity. It could mention error cases like invalid issue IDs, but that is not essential given the schema richness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds significant value by explaining the 'relationship' parameter with concrete examples, clarifying how issue_id relates to the linked issue. This enriches the schema descriptions without repeating them verbatim.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'Create a link between a Yandex Tracker issue and another issue,' which is a specific verb+resource statement. It clearly distinguishes this tool from siblings like issue_delete_link and issue_get_links, and the relationship examples further clarify the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (to create links) and provides concrete guidance on choosing the 'relationship' parameter with examples like 'depends on' and 'is dependent by.' It explicitly says to use 'relates' for a simple connection. While it doesn't mention alternatives or exclusions, the context is sufficient for this simple creation tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_add_worklogAdd WorklogA
Add a worklog entry (log spent time) to a Yandex Tracker issue
| Name | Required | Description | Default |
|---|---|---|---|
| start | No | Optional start datetime for the worklog. If timezone is not provided, UTC is assumed. | |
| comment | No | Optional comment to add to the worklog entry. | |
| duration | Yes | Time spent in ISO-8601 duration format (e.g., 'PT1H30M'). | |
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| issue | No | |
| start | No | |
| comment | No | |
| duration | No | Raw Tracker ISO 8601 duration. Week-based values use five working days per week and must not be converted to calendar weeks. |
| createdAt | No | |
| createdBy | No | |
| updatedAt | No | |
| updatedBy | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=false already signals this is a write operation, and the description's 'Add' aligns. However, the description adds no additional behavioral context such as whether the worklog is appended, any permission requirements, or that it will be visible via issue_get_worklogs. It does not contradict annotations, but also provides no extra transparency beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that precisely captures the tool's purpose without unnecessary verbosity. It is front-loaded with the verb and resource, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the operation, rich parameter schema, and presence of an output schema, the description is adequate for a basic add-worklog tool. It clearly indicates the primary action, though it could have mentioned typical side effects or that worklogs are associated with an issue, but those are already implied by the schema and tool name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since the schema description coverage is 100%, the parameters are already fully documented in the schema. The tool description itself adds no additional meaning to parameters, instead relying on the schema's definitions for issue_id, duration, start, and comment. This meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add a worklog entry') and the specific resource ('to a Yandex Tracker issue'), with the parenthetical 'log spent time' clarifying intent. It distinguishes from sibling tools like issue_update_worklog and issue_delete_worklog by focusing on the creation aspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for logging time on an issue, but provides no explicit guidance on when to use it versus alternatives such as issue_update_worklog or issue_delete_worklog. There are no exclusions or alternative recommendations, leaving usage context implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_closeClose IssueA
Close a Yandex Tracker issue with a resolution. This is a convenience tool that automatically finds a transition to a 'done' status and executes it with the specified resolution. IMPORTANT: Before closing, you MUST: 1) Call issue_get to retrieve the issue's type field. 2) Call queue_get_metadata with expand=['issueTypesConfig'] to get available resolutions. 3) Choose a resolution from the issueTypesConfig entry matching the issue's type - each issue type has its own set of valid resolutions. Returns a list of transitions available for the issue in its new (closed) status.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Optional dictionary of additional fields to set during the transition. Common fields include 'resolution' (e.g., 'fixed', 'wontFix') for closing issues, 'assignee' for reassigning, etc. | |
| comment | No | Optional comment to add when closing the issue. | |
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' | |
| resolution_id | Yes | The resolution ID to set when closing the issue. Must be one of the IDs returned by get_resolutions tool (e.g., 'fixed', 'wontFix', 'duplicate'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only indicating readOnlyHint=false, the description carries the burden of disclosing behavior. It clearly states it automatically finds and executes a transition, requires pre-calls for resolution selection, and returns the list of transitions in the closed status. This provides meaningful context beyond the minimal annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately structured: a clear first sentence, a brief explanation of the tool's convenience, then a numbered list of prerequisites, and a final note on return value. Every sentence adds necessary information with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is comprehensive for a mutation tool: it explains prerequisites, how to pick a valid resolution, what the tool does automatically, and what it returns. Given the output schema exists, the description covers the necessary workflow without over-explaining details already in structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, giving a baseline of 3. The description adds valuable context by explaining that resolution_id must be chosen from the issueTypesConfig matching the issue's type, which clarifies the selection process beyond the schema's simple 'must be from get_resolutions' statement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Close a Yandex Tracker issue with a resolution' using a specific verb and resource. It distinguishes itself from siblings by explaining it is a convenience tool that automatically finds a 'done' transition, differentiating it from generic transition execution or update tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (closing issues) and gives mandatory pre-steps that must occur before calling. It does not explicitly name alternative tools for other scenarios (like issue_execute_transition), so it falls short of a 5, but the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_createCreate IssueA
Create a new issue in a Yandex Tracker queue
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Issue type id (from get_issue_types tool) | |
| queue | Yes | Queue key where to create the issue (e.g., 'MYQUEUE') | |
| fields | No | Additional fields to set during issue creation. IMPORTANT: Before creating an issue, you MUST call `queue_get_fields` to get available fields (it returns both global and local fields by default). Fields with schema.required=true are mandatory and must be provided. Use the field's `id` property as the key in this map (e.g., {'fieldId': 'value'}). | |
| summary | Yes | Issue title/summary | |
| assignee | No | Assignee login or UID | |
| priority | No | Priority key (from get_priorities tool,) | |
| description | No | Issue description |
Output Schema
| Name | Required | Description |
|---|---|---|
| key | No | |
| epic | No | |
| tags | No | |
| type | No | |
| spent | No | |
| start | No | |
| votes | No | |
| parent | No | |
| sprint | No | |
| status | No | |
| unique | No | |
| summary | No | |
| version | No | |
| assignee | No | |
| deadline | No | |
| priority | No | |
| createdAt | No | |
| createdBy | No | |
| updatedAt | No | |
| updatedBy | No | |
| components | No | |
| estimation | No | |
| description | No | |
| storyPoints | No | |
| previousStatus | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description merely restates the action without additional behavioral context. Annotations already indicate readOnlyHint=false, and the description adds no details about required permissions, side effects, or what happens on success. This is comparable to the update_drive example where mutation tools need more disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly one short sentence with no filler or redundancy. All words are useful, and it is front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal but combined with a rich schema and output schema, it provides baseline adequacy. However, it lacks a high-level summary of prerequisites (like calling queue_get_fields) that is critical for successful use, leaving the agent to discover it in parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description itself adds no parameter-level meaning; all semantic details are provided by the input schema, especially the 'fields' parameter's IMPORTANT note. This is acceptable but not enhanced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Create a new issue') and target resource ('Yandex Tracker queue'). It distinguishes from sibling tools like issue_update, issue_close, and issue_move by making the creation intent explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a new issue needs to be created, but does not explicitly mention when not to use it or alternatives. The important prerequisite about calling queue_get_fields is present only in the parameter schema, not the description, so guidance is limited to implication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_delete_attachmentDelete Issue AttachmentBDestructive
Delete an attachment from a Yandex Tracker issue
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' | |
| attachment_id | Yes | Attachment identifier |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds no additional context such as irreversibility, permission requirements, or impacts on related data. It merely restates the action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Entry is a single concise sentence, 'Delete an attachment from a Yandex Tracker issue', with no filler, redundancy, or extraneous details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation, the description paired with the 100% schema coverage, destructive hint annotation, and output schema is adequately complete. It could benefit from noting permanence, but that is not essential given the annotation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both issue_id and attachment_id described. The description adds no extra parameter semantics beyond identifying the two required identifiers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Delete an attachment from a Yandex Tracker issue' with a specific verb and resource. It clearly distinguishes from sibling tools like issue_upload_attachment or issue_get_attachments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites, permissions, or any conditions under which deletion should be performed. Only the basic action is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_delete_commentDelete Issue CommentA
Delete a comment from a Yandex Tracker issue
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' | |
| comment_id | Yes | Comment ID (integer). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation (false) already indicates a write operation, and the description's 'Delete' aligns. However, it adds no extra behavioral context such as permanence, permissions, or side effects, which is a gap for a destructive action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately states the action and resource. No superfluous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity, complete schema, and presence of annotation and output schema, the description is sufficient for the agent to understand the tool's purpose and usage. It lacks some deeper behavioral context, but the overall package is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both issue_id and comment_id. The description adds no parameter detail, but this is acceptable because the schema fully documents the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a comment from a Yandex Tracker issue' uses a specific verb and resource, clearly distinguishing this tool from siblings like issue_add_comment and issue_update_comment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the tool's action and context, making it obvious when to use it. However, it does not explicitly mention alternatives or exclusions, which prevents a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_delete_linkDelete Issue LinkA
Delete a link between a Yandex Tracker issue and another issue. Use issue_get_links to retrieve the link IDs for an issue.
| Name | Required | Description | Default |
|---|---|---|---|
| link_id | Yes | Link ID (integer) as returned by issue_get_links. | |
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=false, so the description must add behavioral context. It adds the workflow hint about using issue_get_links, but does not disclose whether deletion is permanent, requires special permissions, or has side effects. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, directly front-loaded with the purpose, followed by a useful usage hint. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with two well-documented parameters and an output schema, the description covers the essential workflow. Including the prerequisite for retrieving link IDs makes it reasonably self-contained, though a note on irreversibility would add completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters (link_id 'as returned by issue_get_links' and issue_id format). The description's mention of issue_get_links adds little beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Delete a link between a Yandex Tracker issue and another issue', combining a specific verb (delete) with a clear resource (issue link). This distinguishes it from sibling tools like issue_add_link (which adds) and issue_get_links (which retrieves).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a direct usage prerequisite: 'Use issue_get_links to retrieve the link IDs for an issue.' This tells the agent where to obtain the required link_id and implies this tool is used after retrieval. It doesn't explicitly list exclusions, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_delete_worklogDelete WorklogA
Delete a worklog entry (spent time record) from a Yandex Tracker issue
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' | |
| worklog_id | Yes | Worklog entry ID (integer). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, signaling a write operation. The description's 'Delete' verb aligns with this. However, it adds no further behavioral details such as permanence, required permissions, or side effects. Given that annotations cover the basic safety profile and the description is consistent, it provides minimal additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. It is front-loaded with the verb 'Delete' and the resource, making it easy to scan and understand immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple delete operation with an output schema and annotations, and the schema fully documents parameters. The description provides enough context for an agent to know what the tool does. It lacks explicit mention of irreversibility or permission dependencies, but for a basic deletion action, the information is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (issue_id and worklog_id) are fully documented in the schema itself. The description does not add any extra parameter semantics. Per the rubric, with high schema coverage, the baseline is 3, and the description contributes nothing beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Delete' and identifies the resource as 'worklog entry (spent time record)' within a Yandex Tracker issue. This clearly distinguishes it from sibling worklog tools like issue_add_worklog and issue_update_worklog, which perform different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the usage context clear: it is for removing spent time records from an issue. However, it does not explicitly mention when to use this tool over alternatives or state exclusions, such as permission limitations or inability to delete certain worklogs. Still, the context is unambiguous for a straightforward delete operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_download_attachmentDownload Issue AttachmentARead-only
Download an attached file as an MCP embedded binary resource
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' | |
| file_name | Yes | Attachment file name returned by issue_get_attachments | |
| attachment_id | Yes | Attachment identifier returned by issue_get_attachments |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | Yes | |
| _meta | No | |
| resource | Yes | |
| annotations | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint: true, so the safety profile is known. The description adds the behavioral detail that the file is returned as an 'MCP embedded binary resource,' which clarifies the output format. It does not discuss authorization, file size limits, or streaming behavior, but these are not expected to be critical given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that gets straight to the point. It is well-structured and front-loaded with the action, containing no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With readOnlyHint annotations, an output schema, and fully described parameters, this simple download tool is adequately specified. The description covers the essential behavior (downloading as a binary resource), and the schema fills in prerequisite details. There is no missing critical context for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter (issue_id, attachment_id, file_name) having a clear description. The tool description itself adds no additional parameter semantics, but the baseline of 3 applies when the schema fully documents parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Download') and identifies both the resource ('attached file') and the output format ('MCP embedded binary resource'). This clearly distinguishes it from sibling tools like issue_upload_attachment, issue_delete_attachment, and issue_get_attachments (which lists attachments).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description itself does not explicitly state when to use this tool versus alternatives. However, the schema parameter descriptions (e.g., 'returned by issue_get_attachments') imply a dependency on first listing attachments, giving implicit sequencing guidance. No exclusions or alternative tool mentions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_execute_transitionExecute Issue TransitionA
Execute a status transition for a Yandex Tracker issue. IMPORTANT: You MUST first call issue_get_transitions to retrieve available transitions for the issue. Only pass a transition_id that was returned by issue_get_transitions. Do NOT use arbitrary transition IDs - the API will reject invalid transition IDs. Returns a list of new transitions available for the issue in its new status.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Optional dictionary of additional fields to set during the transition. Common fields include 'resolution' (e.g., 'fixed', 'wontFix') for closing issues, 'assignee' for reassigning, etc. | |
| comment | No | Optional comment to add when executing the transition. | |
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' | |
| transition_id | Yes | The transition ID to execute. Must be one of the IDs returned by issue_get_transitions tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the readOnlyHint=false annotation by stating that invalid transition IDs will be rejected and that the tool returns a list of new transitions for the new status. This helps the agent understand expected behavior and error cases, though it does not detail every side effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with the main purpose first, followed by critical usage guidance and return value information. No filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and full parameter descriptions, the description sufficiently covers the core behavior, prerequisite, and return value. It could include example usage or edge cases, but it is complete enough for a well-specified tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters already have detailed descriptions. The tool description reiterates the constraint on transition_id but does not add significant new semantic information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: executing a status transition for a Yandex Tracker issue. It uses a specific verb ('Execute') and resource ('status transition'), distinguishing it from sibling tools like issue_get_transitions or issue_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs users to call issue_get_transitions first and only use transition IDs returned by that tool. It also warns against arbitrary transition IDs, providing clear usage prerequisites and avoiding common pitfalls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_getGet IssueBRead-only
Get a Yandex Tracker issue by its id
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' | |
| include_description | No | Whether to include issue description in the issues result. It can be large, so use only when needed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| key | No | |
| epic | No | |
| tags | No | |
| type | No | |
| spent | No | |
| start | No | |
| votes | No | |
| parent | No | |
| sprint | No | |
| status | No | |
| unique | No | |
| summary | No | |
| version | No | |
| assignee | No | |
| deadline | No | |
| priority | No | |
| createdAt | No | |
| createdBy | No | |
| updatedAt | No | |
| updatedBy | No | |
| components | No | |
| estimation | No | |
| description | No | |
| storyPoints | No | |
| previousStatus | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares this as a safe read operation, lowering the burden on the description. The description adds no extra behavioral context beyond the annotation, but it is consistent with it. No contradictions, but no additional disclosure of return behavior or potential large payloads (which is only implicitly covered in the schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of nine words, front-loaded with the verb and resource. There is zero waste; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only getter with full annotations, an output schema, and well-documented parameters, the description is sufficient. It could mention that this is the main issue retrieval versus sub-resource tools, but the output schema and sibling names provide enough context for a capable agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both issue_id and include_description have detailed descriptions. The tool description itself adds no parameter semantics, but per the rubric, with high schema coverage the baseline is 3. The description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), resource ('Yandex Tracker issue'), and lookup method ('by its id'). However, it does not explicitly differentiate this tool from sibling tools like issue_get_comments or issue_get_url, so it is clear but lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or alternative tools for related resources such as comments or links. The only usage hint ('use only when needed') appears in the schema for include_description, not in the description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_get_attachmentsGet Issue AttachmentsARead-only
Get attachments of a Yandex Tracker issue by its id
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation covers the safety profile, but the description adds no behavioral context. It does not disclose whether the tool returns attachment metadata/URLs or file content, which is a critical behavior given the existence of issue_download_attachment. The description merely rephrases the schema parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler. It front-loads the action and resource, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, with one well-documented parameter and an output schema, so the description need not explain return values. However, it omits the important distinction between listing attachment metadata and downloading content, which is a gap in contextual completeness for selecting the right sibling tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the issue_id parameter has a clear description. The tool description adds nothing beyond 'by its id', so it meets the baseline but does not enrich the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('Get'), the resource ('attachments of a Yandex Tracker issue'), and the scope ('by its id'). This distinguishes it from sibling tools like issue_get_comments and issue_download_attachment, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The implied usage is clear: use this when you need an issue's attachments. However, it fails to explicitly mention the relationship with issue_download_attachment (which likely downloads actual content) or provide any 'when not to use' guidance, leaving potential ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_get_changelogGet Issue ChangelogARead-only
Get the change history (changelog) of a Yandex Tracker issue by its id: status transitions, field edits (who changed what from -> to and when), comment changes and executed triggers. Returns a page of entries plus 'next_cursor'. To fetch the next page, pass 'next_cursor' from the previous result as the 'cursor' argument; when 'next_cursor' is null there are no more pages.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Optional change type to filter by (e.g. 'IssueWorkflow' for status transitions). | |
| field | No | Optional field key to filter the changelog by (e.g. 'status' to only see status changes). | |
| cursor | No | Cursor for the next page: the 'next_cursor' value returned by the previous call. Leave empty for the first page. | |
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' | |
| per_page | No | The number of items per page for cursor-paginated endpoints. May be decreased if results exceed the context window. |
Output Schema
| Name | Required | Description |
|---|---|---|
| entries | Yes | |
| next_cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains that results are paginated with a 'next_cursor', how to fetch subsequent pages, and what a null cursor means. This goes beyond the readOnlyHint annotation by revealing the response shape and pagination behavior, without contradicting the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first packs the core purpose and content categories, the second explains pagination clearly. No verbose or redundant language; each clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and readOnlyHint annotation, the description adequately covers the tool's behavior. It explains pagination, the kinds of changes included, and the stopping condition, making it sufficient for an agent to invoke correctly without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All five parameters are fully documented in the schema (100% coverage), so the description adds little about individual parameters. However, it reinforces the cursor-based pagination semantics by explaining the next_cursor/cursor relationship, which complements the schema's cursor description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('change history of a Yandex Tracker issue by its id'), and enumerates the content (status transitions, field edits, comment changes, triggers). This clearly distinguishes it from sibling tools like issue_get_comments or issue_get_transitions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for reading an issue's audit trail and provides detailed pagination guidance (how to use next_cursor and cursor, when to stop). It does not explicitly state when to use this tool instead of alternative read tools, but the content list makes the use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_get_checklistGet Issue ChecklistARead-only
Get checklist items of a Yandex Tracker issue by its id
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond the readOnlyHint annotation. It does not mention pagination, return format, or error behavior. Since annotations already declare the operation safe, the description provides minimal additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and resource, with no extraneous words. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and an output schema, the description is adequate to convey the tool's purpose. It doesn't cover edge cases like absent checklist items, but the output schema and annotations cover most operational context, so this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents the single parameter with a clear format example ('SOMEPROJECT-1'). The description's 'by its id' adds no new meaning, so the description does not enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' followed by the resource 'checklist items of a Yandex Tracker issue' and identifies the input by 'its id'. This clearly states the tool's function and distinguishes it from sibling issue_get_* tools such as issue_get_comments and issue_get_links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when checklist items for a specific issue are needed, but it does not explicitly state when to prefer this tool over alternatives or mention any exclusions. Given the sibling tools for various issue aspects, more explicit guidance would improve this dimension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_get_commentsGet Issue CommentsARead-only
Get comments of a Yandex Tracker issue by its id
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, aligning with the 'Get' semantics. The description adds no additional behavioral context beyond the operation itself, such as ordering, pagination, or filtering behavior. With annotations covering the safety profile, this is acceptable but not enriched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero filler. Every word contributes to understanding the tool's purpose and input.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and an output schema, the description is sufficient. It clearly states the operation and the key input. It lacks extra guidance like handling of empty results or pagination, but the output schema likely covers the return structure, so this is not a critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the only parameter (issue_id) with format guidance. The description's 'by its id' adds no new meaning, as the schema already provides the 'SOMEPROJECT-1' format. Since schema coverage is 100%, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get'), a clear resource ('comments of a Yandex Tracker issue'), and a retrieval key ('by its id'). It distinguishes this tool from siblings like issue_get_changelog, issue_get_worklogs, and issue_get_attachments, which target different issue sub-resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use the tool: to retrieve comments for a specific issue. It does not explicitly list exclusions or alternative tools, but the context is clear enough that an agent can infer when this is the appropriate choice among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_get_linksGet Issue LinksBRead-only
Get a Yandex Tracker issue related links to other issues by its id
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals this is a safe read operation, so the description adds no new behavioral context. It does not clarify whether 'related links' includes incoming and outgoing links or whether link types are returned. The description adds no value beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, but it is slightly awkwardly phrased ('issue related links'). It is front-loaded with the main action, so it remains concise and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and an existing output schema, the description is adequate. However, it lacks any clarification on what types of links are returned or whether both directions are included. Given the output schema exists, the agent can infer structure, but some behavioral details are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a clear description for the required issue_id parameter. The description only says 'by its id', which adds no new meaning beyond the schema. Baseline 3 applies because the schema carries the full parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves related links to other issues for a specific issue by its ID. The verb 'Get' and resource 'related links to other issues' are specific, and the resource is distinct from sibling tools like issue_get or issue_get_comments, though it does not explicitly differentiate itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It gives no context about use cases, prerequisites, or exclusions. The usage is merely implied by the function name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_get_transitionsGet Issue TransitionsARead-only
Get possible status transitions for a Yandex Tracker issue. Returns list of available transitions that can be performed on the issue.
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a safe read operation. The description adds that it returns a list of available transitions, which is mildly informative but does not disclose additional behavior such as whether the list depends on user permissions or includes all possible transitions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no redundant information. It front-loads the purpose and includes the key detail about returning a list of available transitions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup tool with one well-documented parameter and an output schema, the description fully covers the context needed to select and invoke the tool. No further behavioral or return-value details are necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'issue_id' is fully described in the schema with format examples, so the description does not need to add parameter details. The description does not go beyond the schema but the schema is sufficient, warranting the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets possible status transitions for a Yandex Tracker issue, using a specific verb and resource. It distinguishes itself from the sibling tool 'issue_execute_transition' by focusing on retrieval rather than execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is useful for discovering available transitions before performing one, but it does not explicitly state when to use it versus alternatives like issue_execute_transition. No exclusions or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_get_urlGet Issue URLARead-only
Get a Yandex Tracker issue url by its id
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates this is a safe read operation. The description adds no further behavioral context, such as behavior when the issue ID does not exist, whether the URL is absolute, or if any special permissions are required. The description is essentially a restatement of the tool's name, providing no extra transparency value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence, front-loaded with the verb and resource, and contains no superfluous words. It is appropriately concise for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema and a readOnlyHint annotation, the description is sufficiently complete. It clearly states what the tool does, and the schema documents the parameter. The presence of the output schema covers return value details, so no further elaboration is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage of the single parameter, including its description with format example ('SOMEPROJECT-1'). The tool description does not add additional meaning beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (Get), names the resource (Yandex Tracker issue url), and specifies the input method (by its id). This clearly distinguishes it from siblings like issue_get (which likely returns full issue details) and other getter tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when an issue URL is needed, but it does not explicitly state when to use this tool versus alternatives. No exclusions or alternative tool names are provided, so the guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_get_worklogsGet Issue WorklogsARead-only
Get every paginated worklog for Yandex Tracker issues and optionally filter by the work start date. Duration is returned as Tracker's raw ISO 8601 string; PnW means n five-day work weeks.
| Name | Required | Description | Default |
|---|---|---|---|
| timezone | No | IANA time zone used to convert worklog start before comparing dates | UTC |
| issue_ids | Yes | Multiple Issue IDs. Each issue id is in the format '<project>-<id>', like 'SOMEPROJECT-1' | |
| start_date_to | No | Inclusive upper bound for the worklog start date (YYYY-MM-DD) | |
| start_date_from | No | Inclusive lower bound for the worklog start date (YYYY-MM-DD) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already provided, the description adds valuable behavioral context: it discloses automatic pagination ('every paginated worklog') and explains the raw ISO 8601 duration format with the PnW convention. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The first sentence front-loads the core purpose, and the second adds an essential formatting nuance. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with a rich output schema, the description covers the key aspects: purpose, pagination, filtering, and duration format. The timezone parameter is left to the schema, which is acceptable. It is not exhaustive about edge cases, but complete enough for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with detailed descriptions, so the baseline is 3. The description only adds a general note about filtering by work start date, which maps to start_date_from/to but does not add detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool retrieves worklogs for Yandex Tracker issues, with the specific verb 'Get' and resource 'worklog'. It also mentions pagination and optional date filtering, which distinguishes it from sibling tools like issue_get_comments or issue_get_links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool (when you need worklogs for issues), but it does not explicitly contrast it with related issue getters or worklog mutation tools like issue_add_worklog. It provides clear context without exclusions, earning a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_moveMove Issue to Another QueueA
Move a Yandex Tracker issue to a different queue. The issue will receive a new key in the target queue (e.g., TASKS-1 → NEWQUEUE-42). Returns the updated issue with its new key and queue.
| Name | Required | Description | Default |
|---|---|---|---|
| queue | Yes | Target queue key (e.g., 'MYQUEUE') | |
| notify | No | Whether users referenced in the issue's fields are notified of the change. | |
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' | |
| notify_author | No | Whether the issue author is notified of the change. | |
| initial_status | No | Whether to reset the issue status to the initial value. Set this to true when moving to a queue with a different workflow. | |
| move_all_fields | No | Whether to carry over the issue's versions, components and projects when matching ones exist in the target queue. When false, those fields are cleared. |
Output Schema
| Name | Required | Description |
|---|---|---|
| key | No | |
| epic | No | |
| tags | No | |
| type | No | |
| spent | No | |
| start | No | |
| votes | No | |
| parent | No | |
| sprint | No | |
| status | No | |
| unique | No | |
| summary | No | |
| version | No | |
| assignee | No | |
| deadline | No | |
| priority | No | |
| createdAt | No | |
| createdBy | No | |
| updatedAt | No | |
| updatedBy | No | |
| components | No | |
| estimation | No | |
| description | No | |
| storyPoints | No | |
| previousStatus | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, establishing this is a mutation. The description goes beyond this by disclosing a key behavioral consequence: the issue receives a new key in the target queue, and the updated issue is returned. This is valuable context—users would otherwise not know the original key becomes obsolete. However, it does not mention side effects like field clearing or notification behavior, though these are covered in parameter descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: two sentences with no unnecessary words. The first sentence states the primary action, and the second adds a crucial consequence and return value. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 params, output schema, mutation), the description is complete enough for high-level understanding. It covers the primary action, key replacement behavior, and return value. Caveats like workflow differences and field clearing are left to parameter descriptions, which are comprehensive. A warning about the irreversible nature of the key change might add value, but the lack of it does not make the description inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The main description adds no parameter-specific meaning beyond what the schema already provides. The example of key change relates to the queue parameter but does not introduce new syntactic or semantic details. The parameter descriptions themselves are thorough, so the description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Move a Yandex Tracker issue to a different queue.' The verb 'move' and resource are specific, and the example (TASKS-1 → NEWQUEUE-42) reinforces the core behavior. This distinguishes issue_move from sibling tools like issue_update or issue_close, which modify or transition but do not relocate to a new queue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, nor does it mention exclusions. The usage context is implied by the purpose: an agent should use this when an issue needs to be moved to a different queue. The parameter description for initial_status provides partial guidance ('Set this to true when moving to a queue with a different workflow'), but the main description lacks direct alternative comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issues_countCount IssuesARead-only
Get the count of Yandex Tracker issues matching a query
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| filter_id | No | Saved Tracker filter id; mutually exclusive with query |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with the readOnlyHint annotation, confirming a safe read operation. However, it adds little beyond the annotation—no details about response format, potential limitations, or behavior differences. With annotations present, the bar is lower, but the description remains minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It is front-loaded with the primary action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the readOnlyHint annotation, the detailed query schema, and the presence of an output schema, the description is sufficient for this simple tool. It covers the core purpose and relies on structured data for details, though it lacks explicit usage guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool description adds no parameter-specific meaning. The query parameter is extensively documented in the schema (covering syntax, functions, and examples), while filter_id has a short description. Schema coverage is 50%, so some parameter information exists, but the description does not compensate further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get the count of Yandex Tracker issues matching a query' clearly states the verb (get count), the resource (Yandex Tracker issues), and the scope (matching a query). This distinguishes it from siblings like issues_find, which likely returns the issues themselves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly mention alternatives or when to use this tool versus issues_find. The name and simple statement imply its purpose (for counting rather than listing), but no clear context or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issues_findFind IssuesBRead-only
Find Yandex Tracker issues by queue and/or created date
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to return, default is 1 | |
| query | No | ||
| fields | No | Fields to include in the response. In order to not pollute context window - select appropriate fields beforehand. Not specifying fields will return all available. | |
| per_page | No | The number of items per page. May be decreased if results exceed context window. If there is a change in per_page argument - retrieval must be started over with page = 1, as the paging could have changed. | |
| filter_id | No | Saved Tracker filter id; mutually exclusive with query | |
| include_description | No | Whether to include issue description in the issues result. It can be large, so use only when needed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already informs the agent this is a safe read operation, so the description does not need to restate that. The description adds the scoping constraint of queue and created date (even if incomplete), which is a slight behavioral cue. However, it offers no details on pagination behavior, context window implications, or rate limits, so it earns a mid-range score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that is easy to parse. It avoids unnecessary repetition of the schema. However, the final qualifier 'by queue and/or created date' is not only inaccurate but also occupies space without adding real value for a tool with much broader query capabilities, preventing a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite a rich schema and output schema, the tool description is too skeletal. It fails to provide an overview of the query language's power, does not mention the optional fields parameter for context control, and offers no guidance on relationship with sibling tools like filter_find_issues. The agent must rely almost entirely on the schema, making the description inadequate for a tool with this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the schema documents most parameters extensively, including the rich query language. The tool description itself adds no parameter-level detail beyond the vague 'by queue and/or created date', which is inaccurate as it implies only those filters are possible. The baseline of 3 is appropriate because the schema carries the burden, but the description does not add meaningful semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds Yandex Tracker issues, which is a specific verb+resource. However, the qualifier 'by queue and/or created date' is incomplete and somewhat misleading because the query parameter supports many other fields (assignee, status, author, etc.), as evidenced by the query examples in the schema. This prevents a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like filter_find_issues or issues_count. It does not mention conditions for selecting this tool or any exclusions. The one-sentence description lacks any usage context beyond the basic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_updateUpdate IssueA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Issue tags as array of strings. | |
| type | No | Issue type. Object with 'id' (type ID) and/or 'key' (type key like 'bug', 'task'). Use `queue_get_metadata` tool with expand=['issueTypesConfig'] to get available issue types in this queue. | |
| fields | No | Additional fields to update. Use queue_get_fields to discover available fields. Use the field's 'id' property as the key (e.g., {'fieldId': 'value'}). | |
| parent | No | Parent issue reference. Object with 'id' (parent issue ID) and/or 'key' (parent issue key like 'QUEUE-123'). | |
| sprint | No | Sprint assignments. Array of objects, each with 'id' field containing the sprint ID (integer). | |
| project | No | Project assignment. Object with 'primary' (int, main project shortId) and optional 'secondary' (list of ints, additional project shortIds). | |
| summary | No | New issue title/summary | |
| version | No | Issue version for optimistic locking. Changes are only made to the current version of the issue. Always try to receive issue's version using issue_get tool first. | |
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' | |
| priority | No | Issue priority. Object with 'id' (priority ID) and/or 'key' (priority key like 'critical', 'normal'). Use get_priorities to find available priorities. | |
| followers | No | Issue followers/watchers. Array of objects, each with 'id' field containing the user ID or login. | |
| description | No | New issue description (use markdown formatting) | |
| markup_type | No | Markup type for description text. Use 'md' for YFM (markdown) markup. | md |
Output Schema
| Name | Required | Description |
|---|---|---|
| key | No | |
| epic | No | |
| tags | No | |
| type | No | |
| spent | No | |
| start | No | |
| votes | No | |
| parent | No | |
| sprint | No | |
| status | No | |
| unique | No | |
| summary | No | |
| version | No | |
| assignee | No | |
| deadline | No | |
| priority | No | |
| createdAt | No | |
| createdBy | No | |
| updatedAt | No | |
| updatedBy | No | |
| components | No | |
| estimation | No | |
| description | No | |
| storyPoints | No | |
| previousStatus | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a key behavioral detail beyond the readOnlyHint annotation: partial updates ('Only fields that are provided will be updated; omitted fields remain unchanged'). This is important for understanding how the tool behaves and aligns with the write operation implied by readOnlyHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core action, and includes a practical prerequisite. Every sentence earns its place with no redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a complex tool with 13 parameters and a rich input schema, the description covers the essential behavior and a pre-requisite action. It does not repeat details already present in the schema (e.g., version locking), and since an output schema exists, return values need not be explained. The description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds general context that omitted fields remain unchanged, but does not elaborate on individual parameters. This matches the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update'), the resource ('existing Yandex Tracker issue'), and the scope ('only fields that are provided will be updated'). This distinguishes it from sibling tools like issue_create and issue_close, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a concrete usage guideline: 'Use queue_get_fields to discover available fields before updating.' While it does not explicitly mention alternatives or when-not-to-use cases, the context is clear enough for an agent to know this tool is for updating existing issues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_update_commentUpdate Issue CommentA
Update an existing comment in a Yandex Tracker issue. IMPORTANT: If you need to mention/call people (notifications), use the summonees parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | New comment text (markdown supported by Tracker). | |
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' | |
| summonees | No | Optional list of summoned users (logins or IDs). These users will be invited to the discussion and receive notifications. | |
| comment_id | Yes | Comment ID (integer). | |
| markup_type | No | Optional markup type for comment text. Use 'md' for YFM (markdown). | |
| maillist_summonees | No | Optional list of mailing lists to summon (emails). Example: ['team@example.com']. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| text | No | |
| longId | No | |
| textHtml | No | |
| createdAt | No | |
| createdBy | No | |
| summonees | No | |
| transport | No | |
| updatedAt | No | |
| updatedBy | No | |
| maillistSummonees | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint: false in annotations, the description carries the burden of behavioral disclosure. It doesn't mention whether the comment is fully replaced, if permissions are required, or any side effects beyond updates. The summonees tip is more about parameter usage than operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, immediately stating the purpose and then providing a key usage tip. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the output schema covers return values, the description provides minimal context for a mutation tool. It doesn't clarify if the update replaces the entire comment, any prerequisites, or potential side effects beyond notifications. It is adequate but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description reinforces the summonees parameter's purpose but doesn't add significant new meaning beyond the schema descriptions already present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update an existing comment in a Yandex Tracker issue', using a specific verb and resource. It distinguishes from siblings like issue_add_comment and issue_delete_comment by focusing on the update action on an existing comment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool (updating an existing comment) and includes the IMPORTANT tip about using the summonees parameter for notifications. It doesn't explicitly mention alternatives, but the context is clear with no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_update_worklogUpdate WorklogA
Update a worklog entry (spent time record) in a Yandex Tracker issue
| Name | Required | Description | Default |
|---|---|---|---|
| start | No | New start datetime for the worklog. If timezone is not provided, UTC is assumed. | |
| comment | No | New comment for the worklog entry. | |
| duration | No | New time spent in ISO-8601 duration format (e.g., 'PT1H30M'). | |
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' | |
| worklog_id | Yes | Worklog entry ID (integer). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| issue | No | |
| start | No | |
| comment | No | |
| duration | No | Raw Tracker ISO 8601 duration. Week-based values use five working days per week and must not be converted to calendar weeks. |
| createdAt | No | |
| createdBy | No | |
| updatedAt | No | |
| updatedBy | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only indicate readOnlyHint=false, which already signals a write operation. The description adds no behavioral context about whether the update is partial (only provided fields) or replaces the entire worklog, nor does it mention side effects or permissions. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff, front-loading the purpose immediately. It earns its place by being perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple update tool with full parameter descriptions, an output schema, and readOnlyHint annotation, the description is adequate. It covers the core purpose, and missing behavioral details are more of a transparency concern. Completeness is strong given the structured information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter (start, comment, duration, issue_id, worklog_id) having a clear description. The tool description itself adds no parameter information beyond the schema, but the schema is sufficient, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and the resource 'worklog entry (spent time record) in a Yandex Tracker issue'. This unambiguously distinguishes it from sibling tools like issue_add_worklog, issue_delete_worklog, and issue_get_worklogs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: updating an existing worklog entry. It does not mention alternatives or exclusions, but the context is unambiguous enough that an agent can infer when to use this tool, especially given the required worklog_id parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_upload_attachmentUpload Issue AttachmentA
Upload a base64-encoded file and attach it to a Yandex Tracker issue
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | Issue ID in the format '<project>-<id>', like 'SOMEPROJECT-1' | |
| file_name | Yes | File name including extension | |
| mime_type | No | Optional MIME type of the file | |
| content_base64 | Yes | File content encoded as standard base64 |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| size | No | |
| content | No | |
| metadata | No | |
| mimeType | No | |
| createdAt | No | |
| createdBy | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, meaning the operation is mutating. The description adds no extra behavioral context such as permissions, size limits, or whether the attachment replaces existing ones. It only repeats the base64 detail already present in the schema, so the description adds minimal value beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single, tightly worded sentence with no redundancy. It states the action, target, and input encoding without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple upload behavior, the description sufficiently covers the core action. The complete parameter schema (100% coverage) and presence of an output schema mean the description does not need to explain return values or parameter details. It could optionally note constraints like size limits, but for a basic upload, the information is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all four parameters, including the optional mime_type. The tool description itself does not elaborate on any parameters; it simply states the base64 input, which is already defined in the schema. Thus, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Upload a base64-encoded file and attach it to a Yandex Tracker issue' — a specific verb (upload/attach), resource (Yandex Tracker issue), and input format (base64). This distinguishes it from sibling tools like issue_download_attachment or issue_get_attachments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives; the purpose alone implies usage for attaching files to issues. There is no mention of when not to use it or references to sibling tools, so it only provides implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_create_versionCreate Queue VersionB
Create a new version in a Yandex Tracker queue.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Version name | |
| due_date | No | Optional version due date in YYYY-MM-DD format | |
| queue_id | Yes | Queue (Project ID) to search in, like 'SOMEPROJECT' | |
| start_date | No | Optional version start date in YYYY-MM-DD format | |
| description | No | Optional version description |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| dueDate | No | |
| version | Yes | |
| archived | Yes | |
| released | Yes | |
| startDate | No | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description simply restates the write nature already indicated by annotations (readOnlyHint=false). It adds nothing about side effects, error behavior, idempotency, or confirmation of creation. Given the annotation, the bar is lower, but the description still fails to provide any additional behavioral context beyond what is already known.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that conveys the essential action and target. There is no redundancy, filler, or unnecessary detail. It is appropriately sized for the tool's straightforward purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The input schema covers all parameters, annotations indicate a write operation, and an output schema exists, so the basic usage is fully documented. However, the description lacks broader context such as how creating a version interacts with other queue data, whether duplicate names are allowed, or when to use this over other version-related tools. It is minimally adequate but not complete in a holistic sense.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already documented with meaningful descriptions. The tool description adds no additional parameter-level insight, but the schema does the heavy lifting. This matches the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Create') and resource ('a new version in a Yandex Tracker queue'), which distinguishes it from sibling tools like queue_get_versions. It is unambiguous and directly conveys the tool's core function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as using queue_get_versions to list existing versions or other mutation tools. There is no mention of prerequisites, whether the queue must exist, or when this operation should be preferred over updating an existing version. The description is silent on usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_get_fieldsGet Queue FieldsARead-only
Get fields for a specific Yandex Tracker queue. Returns list of global fields and optionally local (queue-specific) fields. The schema.required property indicates whether a field is mandatory. Use this to find available and required fields before creating an issue with issue_create tool.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | Queue (Project ID) to search in, like 'SOMEPROJECT' | |
| include_local_fields | No | Whether to include queue-specific local fields in the response. When True, makes parallel requests to get both global and local fields. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation declares readOnlyHint=true, and the description adds value by disclosing that include_local_fields triggers parallel requests, and that schema.required indicates mandatory fields. It does not contradict annotations and provides behavioral context beyond the read-only hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, each contributing useful information. It is front-loaded with the primary action and avoids fluff, though it could be slightly tightened without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with high schema coverage, an output schema, and a read-only annotation, the description is complete. It explains the return types, optional behavior, and a concrete use case, leaving no significant gaps for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 100% of parameters with clear descriptions, so the baseline is 3. The description adds minimal extra meaning by explaining the optional local fields and tying the tool to the issue_create workflow, but it does not significantly go beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific verb 'Get' and resource 'fields for a specific Yandex Tracker queue', and distinguishes from siblings by explicitly mentioning global and optional local fields. It also references the schema.required property, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'Use this to find available and required fields before creating an issue with issue_create tool.' It does not explicitly name alternative tools or state when not to use it, but the context is strong enough for an agent to make an informed choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_get_metadataGet Queue MetadataARead-only
Get detailed metadata about a specific Yandex Tracker queue. Returns queue information including name, description, default type/priority, and optionally expanded data like issue types with their resolutions, workflows, team members, etc. Use expand=['issueTypesConfig'] to get available resolutions for issue_close tool.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Optional list of fields to expand in the response. Available options: 'all', 'projects', 'components', 'versions', 'types', 'team', 'workflows', 'fields', 'issueTypesConfig'. Use 'issueTypesConfig' to get available resolutions for each issue type. | |
| queue_id | Yes | Queue (Project ID) to search in, like 'SOMEPROJECT' |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| key | No | |
| name | No | |
| defaultType | No | |
| description | No | |
| defaultPriority | No | |
| issueTypesConfig | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds context by describing the kind of data returned (name, description, default type/priority, and optional expanded data). It also clarifies the practical use of the expand option for issue_close. No contradictions with annotations are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the verb and resource. Every sentence earns its place—the first states the core purpose, the second gives a concrete usage tip. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the annotations mark this as read-only, the description doesn't need to explain return structure or side effects. It covers the tool's core behavior and the key expand option, making it complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema by explaining the semantic purpose of the 'issueTypesConfig' expand value, specifically its relationship to the issue_close tool. This adds meaningful value to the parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets 'detailed metadata about a specific Yandex Tracker queue,' using a specific verb and resource. It distinguishes this from sibling tools like queue_get_tags or queue_get_versions, which fetch narrower sub-resources, and queues_get_all, which lists all queues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when you need metadata for a specific queue. It also gives an explicit usage directive: 'Use expand=["issueTypesConfig"] to get available resolutions for issue_close tool.' While it doesn't explicitly list alternatives, the scope is well-defined and the example is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_get_tagsGet Queue TagsARead-only
Get all tags for a specific Yandex Tracker queue
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | Queue (Project ID) to search in, like 'SOMEPROJECT' |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already indicates a safe read operation. The description adds that it returns 'all tags', which specifies the full scope of the resource. However, it does not disclose additional behaviors such as pagination, filtering, or error conditions. The addition is modest, so a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the action and resource. No redundant information, ideal in length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple read operation with one parameter and an output schema available, so the description is sufficient for an agent to invoke it correctly. It could optionally note that it returns all tags without filtering, but the phrase 'all tags' already implies completeness. No significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a complete description of queue_id with an example format. The description only rephrases it as 'specific Yandex Tracker queue', adding no extra meaning. With 100% schema coverage, baseline 3 is warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' with the resource 'all tags for a specific Yandex Tracker queue', clearly distinguishing it from sibling tools like queue_get_metadata or queue_get_versions. It leaves no ambiguity about what the tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or related tools. The only inference is from the name and description that tags are the resource, but no explicit usage context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_get_versionsGet Queue VersionsARead-only
Get all versions for a specific Yandex Tracker queue
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | Queue (Project ID) to search in, like 'SOMEPROJECT' |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a safe read operation. The description adds the 'all versions' scope, but does not disclose other behavioral aspects such as pagination, ordering, or error cases. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no unnecessary words. It communicates the tool's purpose immediately and efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple: one required parameter, read-only annotations, and an output schema present. The description, combined with the schema and annotations, is sufficiently complete for accurate use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully covers the one parameter queue_id with a descriptive example ('like SOMEPROJECT'). The description merely restates the parameter's purpose without adding further semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('all versions for a specific queue'), clearly distinguishing it from siblings like queue_get_metadata or queue_get_tags. The scope is precise (versions, not other queue properties).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when retrieving queue versions, but does not explicitly mention when to use this tool over alternatives like queue_create_version or queue_get_metadata. No exclusions or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queues_get_allGet All QueuesARead-only
Find all Yandex Tracker queues available to the user (queue is a project in some sense)
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to return, default is None which means to retrieve all pages. Specify page number to retrieve a specific page when context limit is reached. | |
| fields | No | Fields to include in the response. In order to not pollute context window - select appropriate fields beforehand. Not specifying fields will return all available. Most of the time one needs key and name only. | |
| per_page | No | The number of items per page. May be decreased if results exceed context window. If there is a change in per_page argument - retrieval must be started over with page = 1, as the paging could have changed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already indicates this is a read-only operation. The description adds that it returns queues 'available to the user', which is useful scope context. However, it does not describe pagination behavior, potential large payloads, or sorting, but the parameter descriptions cover some of this. The description does not contradict the annotation and adds minor value beyond it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that quickly states the purpose and includes a helpful parenthetical definition of 'queue'. It has no unnecessary words and is structured well for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a straightforward read-only list operation. The annotation and output schema cover safety and return shape, and the schema parameter descriptions provide pagination and field-selection guidance. The description explains the concept of a queue. This is sufficient context for the tool's complexity, though it could have briefly mentioned handling large result sets.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with detailed descriptions for all three parameters (page, fields, per_page). The tool description adds no additional parameter semantics, but the schema itself provides strong guidance, including recommendations for using 'fields' to avoid context pollution and clarifying pagination resets. Baseline 3 is appropriate given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: finding all Yandex Tracker queues available to the user. It uses a specific verb ('find') and resource ('queues'), and the parenthetical clarifies what a queue is. This distinguishes it from sibling tools that target individual queues (e.g., queue_get_metadata) or other entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this tool to retrieve all queues for the user. It does not explicitly contrast with alternatives like queue_get_metadata or mention when pagination should be used, though the schema provides some guidance. There is no exclusion or alternative named, so the guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprint_getGet SprintARead-only
Get a Yandex Tracker sprint with status and date boundaries
| Name | Required | Description | Default |
|---|---|---|---|
| sprint_id | Yes | Sprint identifier |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| self | Yes | |
| board | Yes | |
| issues | No | |
| status | Yes | |
| version | Yes | |
| archived | No | |
| end_date | No | |
| created_at | No | |
| created_by | No | |
| start_date | No | |
| end_date_time | No | |
| start_date_time | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a safe read operation, and the description aligns with that. The description adds useful context beyond the annotation by specifying that the response includes 'status and date boundaries,' helping the agent set expectations for returned data without requiring the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the verb and resource, and it contains no redundant information. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, read-only annotation, and an output schema), the description is fully adequate. It states what the tool does and what information is returned, leaving no critical gaps for selection or invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter described as 'Sprint identifier.' The description does not add any additional semantics about the format or origin of sprint_id, so it does not go beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and the resource ('a Yandex Tracker sprint'), while also specifying the scope ('with status and date boundaries'). This distinguishes it from sibling tools like board_get_sprints, which likely lists sprints, and entity_get, which is generic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention any prerequisites, exclusions, or alternative tools for related scenarios. The usage is only implied by the parameter name 'sprint_id' in the schema, not by the description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
user_getGet UserARead-only
Get information about a specific user by login or UID
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | User identifier - can be user login (e.g., 'john.doe') or user UID (e.g., '12345') |
Output Schema
| Name | Required | Description |
|---|---|---|
| uid | Yes | |
| No | ||
| login | Yes | |
| display | No | |
| external | No | |
| lastName | No | |
| dismissed | No | |
| firstName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description's 'Get information' aligns with that. The description adds the scope of lookup by login or UID, but this is more about parameter semantics than additional behavioral disclosure. No extra context about return format, errors, or permissions is provided, but the read-only annotation covers the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly communicates the tool's function and scope. Every word earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter getter with readOnly annotation and an output schema available, the description is sufficient. It clearly identifies what the tool does, and the schema handles parameter details, so no additional context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage, including a clear description of user_id as accepting either a login or UID with examples. The tool description adds no new parameter information, so it neither enhances nor detracts from the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('Get') and resource ('information about a specific user') with clear identifier scope ('by login or UID'). It distinguishes from sibling tools like users_get_all, users_search, and user_get_current by emphasizing a single specific user lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies usage when a specific user identifier (login or UID) is known, which guides selection away from search/list tools. However, it does not explicitly mention when not to use it or name alternative tools, so it falls short of full guideline clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
user_get_currentGet Current UserARead-only
Get information about the current authenticated user
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| uid | Yes | |
| No | ||
| login | Yes | |
| display | No | |
| external | No | |
| lastName | No | |
| dismissed | No | |
| firstName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint:true already discloses the read-only nature, and the description 'Get information' aligns with that. However, the description adds no further behavioral context such as authentication requirements or potential error cases. It is consistent with annotations but does not enrich the agent's understanding beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action and resource. There is no wasted wording, and it conveys the essential purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, output schema present), the description is sufficient. It does not need to explain return values because the output schema covers that. The only minor gap is not explicitly stating that the user is determined by the authentication context, but 'current authenticated user' already implies this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing to document. The baseline is 4 per the rubric since no parameter information is needed. The description correctly implies that no user-specific input is required, as it targets the current authenticated user.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get information about the current authenticated user', identifying the specific action (get) and resource (current user). This distinguishes it from siblings like user_get (which fetches a specific user by ID) and users_get_all (which lists users). The verb and resource are precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: it is for retrieving the currently authenticated user's info. It does not explicitly mention alternatives or exclusions, but the phrase 'current authenticated user' makes it clear when this tool is appropriate compared to user_get or users_search. A slight gap is the lack of explicit 'use this when...' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_get_allGet All UsersCRead-only
Get information about user accounts registered in the organization
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to return, default is 1 | |
| per_page | No | The number of items per page. May be decreased if results exceed context window. If there is a change in per_page argument - retrieval must be started over with page = 1, as the paging could have changed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description simply says 'Get information,' which is consistent but adds no behavioral context beyond the annotation. It does not disclose pagination details, response format, or any side effects, though the schema does include a note about per_page affecting paging.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that is front-loaded with the key action and resource. It avoids unnecessary detail, though it could have been slightly more specific without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool is relatively simple with only two optional parameters, a good schema, and an output schema present, the minimal description is barely adequate. However, it lacks any mention of paging behavior or how this tool relates to sibling tools, making it less complete for an agent navigating a large toolset.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (page, per_page) are already well-documented in the schema. The description itself adds no parameter-specific information, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get information about user accounts registered in the organization' clearly identifies the action (get) and resource (user accounts), and the plural form plus the name 'users_get_all' signal a list operation. However, it doesn't explicitly say 'all' or distinguish it from 'users_search' or 'user_get' in the description text, so it's not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives like users_search or user_get. The description does not mention any exclusions or alternative conditions, leaving the agent to infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
users_searchSearch UsersARead-only
Search user based on login, email or real name (first or last name, or both). Returns either single user or multiple users if several match the query or an empty list if no users matched.
| Name | Required | Description | Default |
|---|---|---|---|
| login_or_email_or_name | Yes | User login, email or real name to search for |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, covering safety. The description adds behavioral detail about return format (single/multiple/empty list), which is useful beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose and include return behavior. No redundant text, every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter search tool with read-only annotation and output schema, the description covers purpose, search fields, and return outcomes. It could specify match semantics (exact vs partial), but overall it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the only parameter (coverage 100%). The description repeats similar wording without adding extra semantic meaning, so it meets the baseline but does not go beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search user based on login, email or real name' with a specific verb and resource. It also explains return behavior (single, multiple, empty), distinguishing it from siblings like users_get_all and user_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies the search criteria (login, email, name), making it clear when to use this tool. It does not explicitly mention alternatives or exclusions, but the context is sufficient for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
57 tool updates
v0.8.2- First observed
board_get - First observed
board_get_sprints - First observed
boards_list - First observed
entities_bulk_update - First observed
entities_search - First observed
entity_create - First observed
entity_delete - First observed
entity_get - First observed
entity_get_events - First observed
entity_update - First observed
filter_create - First observed
filter_find_issues - First observed
filter_get - First observed
filter_update - First observed
get_global_fields - First observed
get_issue_types - First observed
get_priorities - First observed
get_resolutions - First observed
get_statuses - First observed
issue_add_comment - First observed
issue_add_link - First observed
issue_add_worklog - First observed
issue_close - First observed
issue_create - First observed
issue_delete_attachment - First observed
issue_delete_comment - First observed
issue_delete_link - First observed
issue_delete_worklog - First observed
issue_download_attachment - First observed
issue_execute_transition - First observed
issue_get - First observed
issue_get_attachments - First observed
issue_get_changelog - First observed
issue_get_checklist - First observed
issue_get_comments - First observed
issue_get_links - First observed
issue_get_transitions - First observed
issue_get_url - First observed
issue_get_worklogs - First observed
issue_move - First observed
issue_update - First observed
issue_update_comment - First observed
issue_update_worklog - First observed
issue_upload_attachment - First observed
issues_count - First observed
issues_find - First observed
queue_create_version - First observed
queue_get_fields - First observed
queue_get_metadata - First observed
queue_get_tags - First observed
queue_get_versions - First observed
queues_get_all - First observed
sprint_get - First observed
user_get - First observed
user_get_current - First observed
users_get_all - First observed
users_search
TDQS
Scored across 57 tools
Each tool targets a distinct resource and action, with clear descriptions that prevent confusion. Even the overlapping issue_close and issue_execute_transition are clearly distinguished as convenience vs generic transition.
Naming is inconsistent: many tools use resource_action (issue_create, queue_get_metadata) but several use action_resource (get_priorities, get_statuses). Also pluralization varies (boards_list vs board_get, queues_get_all vs queue_get_metadata).
With 57 tools, this is far beyond the typical well-scoped MCP server. While the domain is broad, the granularity is excessive, making it unwieldy.
The tool surface covers most CRUD operations for issues, comments, worklogs, attachments, links, and entities. Minor gaps include no filter deletion, board/sprint creation/update, and limited issue search options.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Enable secure connectivity between Sentry issues and debugging data, and LLM clients, using a Model Context Protocol (MCP) server.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Simple Model Context Protocol server that enables AI assistants to interact with Jira, allowing operations like fetching tickets, adding comments, and updating ticket status.1Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA Node.js MCP server that enables AI assistants to interact with Yandex Tracker task management system through a standardized protocol, supporting operations like creating, updating, and searching issues.4333ISC
- AlicenseNot gradedqualityDmaintenanceModel Context Protocol server that integrates with Atlassian Confluence and Jira, enabling AI assistants to search, create, and update content in these platforms through natural language interactions.1MIT
- AlicenseNot gradedqualityCmaintenanceA comprehensive Model Context Protocol server that provides AI agents with 44 tools to manage JetBrains YouTrack issues, sprints, and projects via the REST API. It supports full YouTrack query language and works with both Cloud and Server instances for complete project management integration.78MIT