ycli
Supports authenticating via Yandex Cloud service-account keys, minting IAM tokens (ServiceAccountAuth, enabled by the 'service-account' extra) so the toolkit can access Yandex 360 Tracker, Wiki, and Forms from service-account credentials.
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., "@yclishow me the details of Yandex Tracker issue TRACKER-1"
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.
ycli
Yandex 360 for people and for agents.
Tracker, Wiki and Forms from a command line, an MCP server and Python: one tool, and one name for each operation everywhere.
English · Русский
A command line that scripts well. JSON when piped, ready for
jq,--dry-runfor every write, an exit code for each kind of failure.An MCP server agents can trust. Every tool says whether it reads, writes or destroys; serve only reads, or a small everyday set.
A typed Python SDK. Pydantic models for every answer, and examples the test suite runs.
Careful with your data. A delete asks first, and your token goes only to Yandex's own hosts.
Documentation: ycli.savaznatnov.dev.
Install
uv tool install 'yandex-cli[mcp]' # the ycli command, with the MCP server
uvx yandex-cli --help # or run it once, without installing
pipx install 'yandex-cli[mcp]' # or with pipxThe command is ycli (also yandex-cli). Then sign in: ycli auth login (how).
Writing Python? Add the SDK to your project: uv add yandex-cli.
Extra | Adds | Install |
| the MCP server, |
|
| the SDK's |
|
Connect your AI client
Every client gets the same MCP server, uvx --from 'yandex-cli[mcp]' ycli mcp start, and the same two variables.
Client | Fastest way |
Claude Code |
|
Claude Desktop | open the |
Cursor | |
VS Code | |
Windsurf (Devin Desktop) | |
Zed | |
Codex | |
Gemini CLI | |
opencode | |
Any other MCP client |
Also: a Docker image, ghcr.io/bim-ba/ycli (as a server or a plain CLI), pipelines, and the official MCP Registry entry io.github.bim-ba/ycli.
Something not working? If it does not work.
Related MCP server: Yandex Tracker MCP
Use it
Command line
ycli tracker issues get TRACKER-1 # a table at a terminal
ycli tracker issues get TRACKER-1 | jq .summary # JSON when piped
ycli -o yaml wiki pages get onboarding # or pick: -o json | yaml | pretty | csv | markdown | ndjson | name
ycli tracker boards delete 7 --dry-run # print the request a write would send
ycli tracker boards delete 7 --yes # a delete asks first; --yes answers
ycli api issues/TRACKER-1 --service tracker # an endpoint ycli does not wrapMore: Script the CLI, Call an unwrapped endpoint, the CLI reference.
MCP server
ycli mcp start # every tool, reads and writes
ycli mcp start --read-only # reads only
ycli mcp start --toolsets core # about 40 everyday tools, for a client that caps the count
ycli mcp methods --toolsets core # list the tool names without starting the serverMore: Serve the MCP server, Self-host over HTTP for a team, the tool reference.
Python
from ycli.yandex.tracker.client import TrackerClient
tracker = TrackerClient(oauth_token="…", organization_id="…")
print(tracker.issues.get("TRACKER-1").summary)More: the SDK reference.
Claude Code plugin
/plugin marketplace add bim-ba/ycli
/plugin install yandex-360@ycliIt adds the MCP server and five skills (yandex-360, yandex-360-tracker, yandex-360-wiki, yandex-360-forms, yandex-360-datalens) that teach an agent the commands and the API's quirks. Source: plugins/yandex-360/.
Configure
ycli auth login # gets a token through Yandex ID, finds your organization, saves both to .env
ycli auth status # whose token it is, and whether each service accepts it
ycli doctor # something not working? every check in order, with the fixycli auth login needs a Yandex OAuth app of your own the first time: Authenticate walks you through it. ycli reads two variables, from the environment or a .env file:
YANDEX_ID_OAUTH_TOKEN=... # a Yandex OAuth token with Tracker, Wiki and Forms access
YANDEX_ID_ORGANIZATION_ID=... # your Yandex 360 organization idTimeouts, retries, limits, logging and the exit codes are in the configuration reference.
Coverage
ycli wraps 468 operations across 88 resources of the Tracker, Wiki, Forms, and DataLens API. Every one is reachable from the Python SDK and the CLI, and 458 MCP tools serve them to agents (456 per service plus schema_get, status_get).
Legend. ✅ in CLI or MCP means the resource is reachable on that surface; MCP tools carry honest hints (reads are
readOnlyHint, writes say whether they are destructive or idempotent), andycli mcp start --read-onlyserves only the reads. Resource and operation names link to the official Yandex API reference. An operation has one of three states against what Yandex publishes. Covered (no mark): ycli sends every published parameter and reads every published field. Partial (◐): ycli wraps it and differs somewhere; the mark links to the row that says where and why. Not covered (○): Yandex publishes it and ycli does not wrap it; these are listed under each service. Wiki, Forms and DataLens are measured against their OpenAPI documents; Tracker publishes none, so its state is measured against the reference pages (operations, and query parameters where a page lists them). DataLens is in progress, wrapped section by section: the operations of a section ycli has not begun are pending, not missing. Generated from the code byscripts/gen_coverage.py; do not edit by hand.
Tracker
Issues & work items
Resource | Operations | CLI | MCP |
get · search · count · create · update · move · suggest · scroll_clear · update_bulk · move_bulk · transition_bulk · import_ | ✅ | ✅ | |
list · get · create · update · delete · reactions_create · import_ | ✅ | ✅ | |
list · list_filtered · create · delete · import_ | ✅ | ✅ | |
✅ | ✅ | ||
list · search · list_global · create · update · delete · import_ | ✅ | ✅ | |
✅ | ✅ | ||
✅ | ✅ | ||
list · download · thumbnails_download · get · delete · upload · upload_temp · import_ · import_for_comment | ✅ | ✅ | |
✅ | ✅ |
Agile boards
Resource | Operations | CLI | MCP |
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ |
Dictionaries
Resource | Operations | CLI | MCP |
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ | ||
linktypes | list | ✅ | ✅ |
Fields, queues & structure
Resource | Operations | CLI | MCP |
list · get · create · update · categories_create · categories_update | ✅ | ✅ | |
✅ | ✅ | ||
list · create · update · list_for_queue · get · delete · user_permissions_get · group_permissions_get | ✅ | ✅ | |
list · get · tags_list · versions_list · fields_list · create · delete · restore · permissions_update · tags_delete · versions_create · versions_get · versions_update · versions_delete · user_permissions_get · group_permissions_get | ✅ | ✅ | |
list · get · list_for_queue · create · update · actions_update · delete | ✅ | ✅ | |
✅ | ✅ |
Automation & bulk
Resource | Operations | CLI | MCP |
✅ | ✅ | ||
list · get · create · update · webhook_log_list | ✅ | ✅ | |
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ |
Entities, users & search
Resource | Operations | CLI | MCP |
create · get · update · delete · search · events_list · permissions_get · permissions_update · permissions_get_direct · permissions_update_direct · update_bulk · bulk_get · reports_create · comments_list · comments_list_relative · comments_get · comments_create · comments_update · comments_delete · checklists_create · checklists_update · checklists_items_update · checklists_delete · checklists_items_delete · checklists_move · links_list · links_create · links_delete · attachments_list · attachments_get · attachments_download · attachments_attach · attachments_delete | ✅ | ✅ | |
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ |
Not covered (2)
○
GET /boards:boards listreads the paginatedGET /boards/_paginate○
GET /users:users listreads the paginatedGET /users/_relative
Wiki
Pages
Resource | Operations | CLI | MCP |
get_by_id · get · descendants_list · descendants_list_by_id · grids_list · create · update · delete · append · clone · move · revisions_list · backlinks_list · search | ✅ | ✅ | |
✅ | ✅ | ||
✅ | ✅ |
Collaboration
Resource | Operations | CLI | MCP |
list · thread_list · thread_get · create · delete | ✅ | ✅ | |
list · get · previews_download · download · download_by_url · delete · attach · upload | ✅ | ✅ | |
✅ | ✅ |
Grids (dynamic tables)
Resource | Operations | CLI | MCP |
get · create · update · delete · rows_create · rows_delete · rows_move · columns_create · columns_delete · columns_move · cells_update · clone · columns_suggest · columns_update · rows_update | ✅ | ✅ |
Async & uploads
Resource | Operations | CLI | MCP |
✅ | ✅ | ||
✅ | ✅ |
Identity
Forms
Surveys & questions
Resource | Operations | CLI | MCP |
list · get ◐ · create ◐ · update ◐ · delete · publish · unpublish | ✅ | ✅ | |
✅ | ✅ | ||
question_list · question_get · question_create · question_update · question_delete · question_update_operator · page_list · page_get · page_create · page_update · page_delete · page_update_operator · submit_list · submit_get · submit_create · submit_update · submit_delete · submit_update_operator · hook_list · hook_get · hook_create · hook_update · hook_delete · hook_update_operator | ✅ | ✅ | |
✅ | ✅ | ||
✅ | ✅ |
Responses & export
Resource | Operations | CLI | MCP |
get · list · columns_list · export · export_results_get · export_download · integrations_list · delete · restore | ✅ | ✅ | |
✅ | ✅ |
Integrations
Resource | Operations | CLI | MCP |
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ | ||
list · get · status_get · restart · cancel · errors_list | ✅ | ✅ |
Distribution
Resource | Operations | CLI | MCP |
✅ | ✅ | ||
✅ | ✅ |
Media
Identity
DataLens
Organization
Resource | Operations | CLI | MCP |
tenant | details_get | ✅ | ✅ |
✅ | ✅ | ||
✅ | ✅ |
Collections & workbooks
Resource | Operations | CLI | MCP |
get · list_by_ids · content_list · breadcrumbs_list · permissions_get_root · access_bindings_list · create · update · move · move_bulk · delete · delete_bulk · access_bindings_update | ✅ | ✅ | |
get · list · list_by_ids · access_bindings_list · entries_list · create · update · move · move_bulk · delete · delete_bulk · access_bindings_update | ✅ | ✅ | |
start · status_get · result_get · cancel | ✅ | ✅ | |
✅ | ✅ |
Entries
Resource | Operations | CLI | MCP |
list · relations_list · permissions_get · revisions_list · rename | ✅ | ✅ | |
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ |
Data
Resource | Operations | CLI | MCP |
✅ | ✅ | ||
✅ | ✅ |
Charts, dashboards, reports & pages
Resource | Operations | CLI | MCP |
data_get · wizard_get · wizard_create · wizard_update · wizard_delete · ql_get · ql_create · ql_update · ql_delete · editor_get · editor_create · editor_update · editor_delete | ✅ | ✅ | |
✅ | ✅ | ||
✅ | ✅ | ||
get · create · update · delete · preview_url_get | ✅ | ✅ |
SQL
Resource | Operations | CLI | MCP |
sqlqueries | get · create · update · delete · run | ✅ | ✅ |
Cloud environments
Resource | Operations | CLI | MCP |
cloudenvironments | list · get · create · update · delete | ✅ | ✅ |
cloudenvironmentstorage | bucket_objects_list · bucket_object_metadata_get · bucket_download_url_create · bucket_upload_url_create | ✅ | ✅ |
restcatalogs | list · create | ✅ | ✅ |
lakehouseoperations | get | ✅ | ✅ |
trinoclusters | list · get · create · delete · start · stop · catalog_create · catalog_delete · resource_presets_list · resource_preset_get | ✅ | ✅ |
sparkclusters | list · get · create · delete · start · stop · resource_presets_list · resource_presets_get | ✅ | ✅ |
sparkapplications | list · get · create · cancel · log_list | ✅ | ✅ |
Embedding
Resource | Operations | CLI | MCP |
✅ | ✅ | ||
✅ | ✅ |
Not covered (9)
○
POST /rpc/checkFavorites: new section published 2026-10, wrapping not decided○
POST /rpc/createFolder: the old placement model (folders); the organization has none to check it on (#394)○
POST /rpc/deleteFolder: the old placement model (folders); the organization has none to check it on (#394)○
POST /rpc/dlsSuggest: the old placement model (folders); the organization has none to check it on (#394)○
POST /rpc/getPermissions: the old placement model (folders); the organization has none to check it on (#394)○
POST /rpc/listDirectory: the old placement model (folders); the organization has none to check it on (#394)○
POST /rpc/listFavorites: new section published 2026-10, wrapping not decided○
POST /rpc/modifyPermissions: the old placement model (folders); the organization has none to check it on (#394)○
POST /rpc/moveFolderEntry: the old placement model (folders); the organization has none to check it on (#394)
Every resource and operation above deep-links to the Yandex API reference: 406 of 468 operations resolve to their own endpoint page and 20 to their resource's page. No public API reference exists yet for datalens.cloudenvironments, datalens.cloudenvironments.create, datalens.cloudenvironments.delete, datalens.cloudenvironments.get, datalens.cloudenvironments.list, datalens.cloudenvironments.update, datalens.cloudenvironmentstorage, datalens.cloudenvironmentstorage.bucket_download_url_create, datalens.cloudenvironmentstorage.bucket_object_metadata_get, datalens.cloudenvironmentstorage.bucket_objects_list, datalens.cloudenvironmentstorage.bucket_upload_url_create, datalens.lakehouseoperations, datalens.lakehouseoperations.get, datalens.restcatalogs, datalens.restcatalogs.create, datalens.restcatalogs.list, datalens.sparkapplications, datalens.sparkapplications.cancel, datalens.sparkapplications.create, datalens.sparkapplications.get, datalens.sparkapplications.list, datalens.sparkapplications.log_list, datalens.sparkclusters, datalens.sparkclusters.create, datalens.sparkclusters.delete, datalens.sparkclusters.get, datalens.sparkclusters.list, datalens.sparkclusters.resource_presets_get, datalens.sparkclusters.resource_presets_list, datalens.sparkclusters.start, datalens.sparkclusters.stop, datalens.sqlqueries, datalens.sqlqueries.create, datalens.sqlqueries.delete, datalens.sqlqueries.get, datalens.sqlqueries.run, datalens.sqlqueries.update, datalens.tenant, datalens.tenant.details_get, datalens.trinoclusters, datalens.trinoclusters.catalog_create, datalens.trinoclusters.catalog_delete, datalens.trinoclusters.create, datalens.trinoclusters.delete, datalens.trinoclusters.get, datalens.trinoclusters.list, datalens.trinoclusters.resource_preset_get, datalens.trinoclusters.resource_presets_list, datalens.trinoclusters.start, datalens.trinoclusters.stop, tracker.linktypes, tracker.linktypes.list, shown as plain text. See CONTRIBUTING.md for the intentional exclusions (UI-only endpoints with no public REST API) and per-method notes.
Against the published API
What ycli sends, replayed from its contract tests, compared with what Yandex publishes: the Wiki, Forms and DataLens OpenAPI documents and Tracker's API reference (prose, so only operations and the query parameters a page lists are compared). A request body is compared only where ycli has a typed model for it and the model is closed; the Bodies compared column says how many that is, so an empty list is not read as a match. The published side is the snapshot in scripts/api_snapshot/; a weekly job fetches it again and opens an issue when Yandex has changed it.
Service | Published | Wrapped | Not wrapped | Operations that differ | Bodies compared | Source |
Tracker | 190 | 188 | 0 (+2 on purpose) | 0 | — | |
Wiki | 56 | 56 | 0 | 0 | 24 of 24 | |
Forms | 84 | 84 | 0 | 8 | 26 of 30 | |
DataLens | 143 | 134 | 0 (+9 on purpose) | 0 | 131 of 131 |
Not wrapped on purpose
Operation | Why |
| |
|
Sent by ycli, not published
ycli | Its request |
|
|
|
|
Parameters and fields
Operation | ycli | Difference | Why it stays |
|
| body fields ycli sends that are not published: | the API accepts it and ignores it (checked live on 2026-10-04)the API returns it (checked live on 2026-10-04), the published schema omits it |
|
| model fields that are not published: | the API returns it (checked live on 2026-10-04), the published schema omits it |
|
| body fields ycli sends that are not published: | the API accepts it and ignores it (checked live on 2026-10-04)the API returns it (checked live on 2026-10-04), the published schema omits it |
|
| body fields ycli sends that are not published: | one model builds the body and reads the reply, which carries |
|
| body fields ycli sends that are not published: | one model builds the body and reads the reply, which carries |
|
| body fields ycli sends that are not published: | the API accepts it and ignores it (checked live on 2026-10-04) |
|
| query parameters ycli sends that are not published: | the API accepts it and ignores it (checked live on 2026-10-04) |
|
| body fields ycli sends that are not published: | the API accepts it and ignores it (checked live on 2026-10-04) |
Not wrapped on purpose
Operation | Why |
| new section published 2026-10, wrapping not decided |
the old placement model (folders); the organization has none to check it on (#394) | |
the old placement model (folders); the organization has none to check it on (#394) | |
the old placement model (folders); the organization has none to check it on (#394) | |
the old placement model (folders); the organization has none to check it on (#394) | |
the old placement model (folders); the organization has none to check it on (#394) | |
| new section published 2026-10, wrapping not decided |
the old placement model (folders); the organization has none to check it on (#394) | |
the old placement model (folders); the organization has none to check it on (#394) |
Development
uv sync --all-extras # the tests use every extra
uv run pytest # 100% coverage gate; HTTP is stubbed, no live networkThe layout and the invariants that keep it regular are in ARCHITECTURE.md; CONTRIBUTING.md has the conventions and how to add an endpoint. Contributions are welcome.
License
MIT © 2026 Sava Znatnov
Available Tools
457 toolsdatalens_audit_entries_updates_listList DataLens entries changed in a periodARead-onlyIdempotent
The entries changed in a period, auto-paginated: what, when and by whom.
A deleted entry is listed too, with isDeleted.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | The end of the period. | |
| from_ | Yes | The start of the period: an ISO-8601 time with its zone. | |
| limit | No | Max entries to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint, so safety is covered. The description adds real behavioral value beyond them: output is auto-paginated, and deleted entries are still returned with an isDeleted marker. This is exactly the kind of non-obvious behavior an agent needs when interpreting results.
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 short sentences, front-loaded with the core purpose, then the audit payload and the isDeleted caveat. No filler. Slightly terse but every clause carries 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 read-only paginated list with no output schema, the description covers purpose, period scoping, pagination behavior, and a notable return-field detail (isDeleted). The main omission is explicit guidance on time-zone/window edge cases already handled by the schema.
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 from_, to, and limit (including the YCLI__HTTP__MAX_ITEMS cap). The description adds no parameter syntax or format beyond what is in the structured fields, so baseline 3 is correct.
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 concrete verb and resource: entries changed in a period, and adds the audit payload (what, when, by whom). It is clearly distinguishable from the sibling datalens_entries_revisions_list by its audit framing, though it never explicitly names or contrasts siblings.
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 audit/changed-in-a-period framing but never stated: no explicit when-to-use, no exclusions, and no routing to the closest alternative (datalens_audit_entry_permissions_get or datalens_entries_revisions_list). Acceptable but leaves selection inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_audit_entry_permissions_getGet a user's permissions on DataLens entriesBRead-onlyIdempotent
What one user may do with each entry: execute, read, edit, admin, by entry id.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The user's id, as ``createdBy`` of an entry gives it. | |
| entry_ids | Yes | The ids of the entries to ask about. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds value by enumerating the permission levels returned (execute, read, edit, admin), but says nothing about result shape, how absent permissions are represented, or the one-user-per-call scope.
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 compact sentence with the key scope (one user, per-entry, by id) front-loaded and no wasted clauses. It is terse to the point of being slightly oblique, but nothing is extraneous.
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 tool with two fully documented parameters and annotations covering safety, the description is adequate; it even supplies the set of permission values an agent needs to interpret the response. No output schema exists, yet the return semantics are largely conveyed.
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 user_id and entry_ids fully documented in the schema. The description only echoes 'by entry id' and adds no syntax or semantic detail beyond the schema, 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 states a specific resource and scope: the permissions ('execute, read, edit, admin') one user has on a set of entries identified by id. This is specific enough to understand the operation, but it does not differentiate from close siblings such as datalens_entries_permissions_get or datalens_permissions_get_bulk, which an agent must distinguish to pick correctly.
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?
There is no when-to-use guidance and no mention of alternatives. With near-duplicate siblings like datalens_entries_permissions_get and datalens_permissions_get_bulk present, the absence of any routing signal is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_charts_data_getRead the data of a DataLens chartARead-onlyIdempotent
The data a saved chart shows, as tables of columns and rows.
The chart runs with its saved settings. chartType says how it is built (wizard,
ql, editor). A pivot table is not supported, and a chart whose source cannot be
reached answers with an error.
entries_list with the scope widget finds charts.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | Values for the chart's parameters, by name: one value or several. | |
| chart_id | Yes | Chart id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description goes further by disclosing real behavioral traits: pivot tables are unsupported, the chart executes with its saved settings (no ad-hoc reconfiguration), and an unreachable source returns an error rather than partial data.
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?
Front-loaded with the return shape, then the mode of execution, limitations, and how to find a chart id — each sentence carries information. The trailing entries_list sentence is slightly tangential but functionally useful for argument discovery.
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?
There is no output schema, so the description must convey the return shape, and it does ('tables of columns and rows') plus the chartType discriminator describing how the output is produced. It stops short of covering result size, pagination, or row-limit behavior, which would matter for a data-returning 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%, with both chart_id and params documented in the schema itself, so the baseline of 3 applies. The description adds no syntax or format detail for params beyond the schema's 'one value or several' explanation, though it does indirectly confirm these are the chart's saved-parameter values.
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?
States a specific resource and result: 'The data a saved chart shows, as tables of columns and rows,' which clearly distinguishes this read-data tool from the sibling chart-config getters (charts_wizard_get, charts_ql_get, charts_editor_get). It does not name those siblings explicitly, so an agent must infer that this returns rendered data rather than the chart definition.
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?
It supplies a routing hint for locating the required argument ('entries_list with the scope widget finds charts') and notes the chart runs with its saved settings, implying params are the only override. However, it never says when to use this over datalens_datasets_data_get or datalens_sqlqueries_run, so alternative selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_charts_editor_createCreate DataLens editor chartB
Create a chart of the editor and return it with its id.
| Name | Required | Description | Default |
|---|---|---|---|
| entry | Yes | The new chart: where it lies, its kind (`type`) and its code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety/mutation profile is covered. The description adds one useful behavioral fact – that the created chart is returned with its id – but says nothing about permissions, validation failures, or side effects on the target workbook.
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 filler; it is efficient. It is arguably too terse for the complexity involved, but nothing in it is wasted.
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?
Annotations cover the safety profile and the schema is fully self-documenting, which lowers the burden. Still, for a tool with a very large polymorphic schema and no output schema, one sentence leaves important context (which chart kinds exist, that 'entry.type' selects the variant, and where the entry must live) unstated in the prose.
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 single nested 'entry' parameter is exhaustively documented, including the discriminator const values. The description adds nothing beyond the schema, so the 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?
States a specific verb ('Create') and resource ('a chart of the editor'), so the agent knows this is a write/create operation on an editor chart. It does not, however, distinguish itself from close siblings like datalens_charts_wizard_create or datalens_charts_ql_create, leaving the agent to infer which chart flavor applies.
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?
There is no when-to-use guidance, no prerequisites (e.g. that a workbook or key must be supplied), and no mention of alternatives among the many sibling create tools. The agent gets no routing help at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_charts_editor_deleteDelete DataLens editor chartADestructive
Delete a chart; the dashboards that show it lose it.
| Name | Required | Description | Default |
|---|---|---|---|
| chart_id | Yes | Chart id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description goes beyond that by disclosing a cascade consequence — dashboards showing the chart lose it — which is exactly the kind of impact context annotations cannot express. It still omits whether deletion is permanent/undoable or requires elevation.
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 clause, front-loaded with the action and immediately followed by the consequence. Nothing extraneous; every token 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 one-parameter, no-output-schema delete tool with strong annotations, the description supplies the key missing piece — downstream impact on dashboards. It is nearly complete, only lacking reversion/permission notes that would round it out.
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 chart_id is already documented, establishing the baseline of 3. The description adds no format, ID-source, or lookup 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?
States a specific verb and resource ('Delete a chart'), so the action is unambiguous. It does not distinguish this editor-chart delete from the sibling deleters datalens_charts_wizard_delete and datalens_charts_ql_delete, so an agent relying on the description alone cannot tell which chart type it targets beyond the name/title.
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?
There is no guidance on when to use this versus the wizard/ql delete siblings, nor any note about prerequisites such as ownership or permissions. Only the vague implication that deletion removes something is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_charts_editor_getGet DataLens editor chartBRead-onlyIdempotent
One chart written in the editor: its kind (entry.type) and its tabs of code.
| Name | Required | Description | Default |
|---|---|---|---|
| branch | No | The version to read when no revision is named: `saved` or `published`. A save writes the saved one: read `saved` before changing a chart. | |
| rev_id | No | One revision to read, as it is; give it or `branch`, not both. | |
| chart_id | Yes | Chart id. | |
| workbook_id | No | The workbook the chart lies in. | |
| include_links | No | Also say what it is linked to. | |
| include_favorite | No | Also say whether it is a favourite of the caller. | |
| include_permissions | No | Also say what the caller may do with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the shape of the returned object (kind + code tabs), which is real value, but says nothing about auth requirements, the branch/rev read semantics, or what happens when workbook_id is omitted.
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 tight sentence with zero waste and the core output content front-loaded. It is arguably too terse for a 7-parameter tool, but nothing in it is redundant.
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 output schema, the description carries some of the return-value burden and does gesture at the payload (kind and code tabs), but does not enumerate the optional enrichment fields the include_* flags add or the revision/branch semantics of the response. Adequate but leaves visible gaps for a 7-param 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 all seven parameters already carry precise documentation, including the saved/published branch rule and the rev_id-or-branch exclusivity. The description adds essentially no parameter-level meaning beyond “its kind”, so the 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?
Identifies a specific resource (one chart) and its provenance (“written in the editor”), and tells the agent the payload is the chart kind (entry.type) plus its code tabs. It implicitly separates this from the sibling wizard/QL chart getters, though it never names them explicitly.
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 when-to-use, when-not-to-use, or alternative routing is given. The agent must infer from the name that this reads editor-type charts rather than wizard or QL charts, with no explicit statement of prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_charts_editor_updateUpdate DataLens editor chartAIdempotent
Save a chart of the editor as given.
DataLens does not check a revision here: a save overwrites what was saved since you read it (measured).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | `save` keeps a draft; `publish` makes it the version shown. | |
| entry | Yes | The chart to save: its `entryId`, its kind (`type`) and its code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), so the bar is lower, and the description still adds real behavior: no revision check, a save silently clobbers anything written since the last read. That concurrency hazard is exactly the kind of context annotations cannot express; the parenthetical '(measured)' is unclear noise.
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 short sentences, with the core action front-loaded and the overwrite caveat immediately after. The trailing '(measured)' is a cryptic, unexplained token that slightly weakens an otherwise tight statement.
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 two-parameter write tool with full schema coverage and annotations covering the safety profile, the description supplies the one missing behavioral fact an agent needs: this save is blind to revisions. It does not mention the save/publish distinction outside the schema or any return information, but neither is essential here.
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 schema itself carries the mode semantics ('save keeps a draft; publish makes it the version shown') plus per-field tab descriptions. The description restates the payload as 'entryId, kind, and code', which adds nothing beyond the schema, so the 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?
States a specific verb and resource ('Save a chart of the editor'), which is clearly distinct from the create/delete siblings in the datalens_charts_editor_* family. It does not, however, name or route against the neighboring update tools (charts_wizard_update, charts_ql_update), so differentiation relies mostly on the name.
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 persisting an already-read editor chart and warns about the overwrite condition, which is useful timing context. It never states explicitly when to choose this over create or over the wizard/QL update tools, so usage remains inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_charts_ql_createCreate DataLens QL chartC
Create a QL chart; the reply is what DataLens answers, as it came.
The specification describes neither the content of a QL chart nor the reply.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | The entry's key, in a folder. | |
| data | Yes | What the chart holds: its query and how it is shown. | |
| name | No | The chart's name. | |
| template | Yes | The template of the chart; the API takes only `ql` today. | |
| annotation | No | A description of the chart. | |
| workbook_id | No | The workbook to create it in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-readonly, open-world, non-idempotent create. The description adds one useful behavioral note: the reply is the raw DataLens response and its shape is undocumented, warning the agent the return payload is opaque. It says nothing about permissions, side effects, or what happens on repeat calls, so it adds modest value over 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 operation is front-loaded well in a single phrase. The second sentence is short but is a meta-disclaimer ('the specification describes neither...') rather than actionable information, so its value is marginal and it partly calls attention to its own incompleteness.
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?
This is a mutation tool creating nested-object content, with no output schema and no annotation coverage of the data contract. The description explicitly admits it does not describe the chart content or the reply, leaving an agent without guidance on what 'data' should contain or what it gets back.
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 parameters like template, data, and workbook_id are documented in the schema itself. The description adds no syntax, format, or default detail beyond the schema, so the 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?
States a specific verb+resource ('Create a QL chart'), which is clear enough that an agent knows the operation type. However, it never distinguishes this from the sibling creation tools (datalens_charts_wizard_create, datalens_charts_editor_create), leaving the choice between chart flavors unexplained.
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?
There is no when-to-use guidance, no prerequisite (e.g. workbook_id requirement), and no mention of the wizard/editor alternatives. The second sentence is a caveat about unspecified content, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_charts_ql_deleteDelete DataLens QL chartADestructive
Delete a chart; the dashboards that show it lose it.
| Name | Required | Description | Default |
|---|---|---|---|
| chart_id | Yes | Chart id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds useful collateral-impact context beyond annotations: dashboards displaying the chart will lose it. It still omits permissions, reversibility, and confirmation 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 front-loaded sentence with no filler: it begins with the action and immediately states the side effect. Every 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?
For a simple one-parameter delete tool with no output schema, the description covers the action and one important side effect, while annotations carry the destructive safety profile and the schema documents chart_id. It is complete enough to call correctly, though it could mention required permissions or irreversibility.
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?
There is one required parameter, chart_id, and schema description coverage is 100%, so the schema already documents it fully. The description adds no parameter-specific meaning beyond the schema, making the baseline 3 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 a specific verb and resource: "Delete a chart," and adds the consequence that dashboards showing it lose the chart. This is clear and concrete, but it does not distinguish this QL-chart deletion from sibling deletion tools such as datalens_charts_editor_delete or datalens_charts_wizard_delete.
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 no when-to-use guidance, no prerequisites, and no alternatives. It does not say when to delete a QL chart versus another chart type or how to recover from deletion, so the agent must infer usage entirely 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.
datalens_charts_ql_getGet DataLens QL chartBRead-onlyIdempotent
One QL chart. Unlike a chart of the wizard it comes flat, with no entry around it.
| Name | Required | Description | Default |
|---|---|---|---|
| branch | No | The version to read when no revision is named: `saved` or `published`. A save writes the saved one: read `saved` before changing a chart. | |
| rev_id | No | One revision to read, as it is; give it or `branch`, not both. | |
| chart_id | Yes | Chart id. | |
| workbook_id | No | The workbook the chart lies in. | |
| include_links | No | Also say what it is linked to. | |
| include_favorite | No | Also say whether it is a favourite of the caller. | |
| include_permissions | No | Also say what the caller may do with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds a genuine structural detail that the response is flat with no `entry` wrapper, unlike wizard charts, which helps the agent interpret output, but says nothing about permissions, pagination, or error 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?
Two short sentences, front-loaded with the resource and followed by the one differentiating fact. Every word earns its place, though the fragmentary phrasing ("comes flat") is slightly more cryptic than it needs to be.
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?
There is no output schema, so the description partially compensates by noting the flat shape with no `entry` wrapper. However, for a 7-parameter read tool it does not describe the branch/rev_id read semantics or what the returned chart contains, leaving some gaps for an agent working without an output schema.
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% (branch, rev_id, chart_id, workbook_id, include_* flags are all documented in the schema), so the schema carries semantics. The description adds no parameter-level meaning beyond that, which is the baseline 3 case.
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 resource ("One QL chart") and explicitly distinguishes it from the wizard chart variant, which is a real sibling (datalens_charts_wizard_get). The retrieval verb is only implied by the tool name rather than stated in the description, so it stops short of 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?
"One QL chart" implies fetching a single chart, but there is no explicit when-to-use guidance, no mention of prerequisites (chart_id, workbook_id), and no named alternative such as datalens_charts_wizard_get or datalens_charts_editor_get that would tell an agent which chart-get to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_charts_ql_updateUpdate DataLens QL chartAIdempotent
Save a QL chart as given; the reply is what DataLens answers, as it came.
DataLens does not check a revision here: a save overwrites what was saved since you read it (measured).
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | What the chart holds; it replaces the whole of it. | |
| mode | Yes | `save` keeps a draft; `publish` makes it the version shown. | |
| entry_id | Yes | Chart id. | |
| template | Yes | The template of the chart; the API takes only `ql` today. | |
| annotation | No | A description of the chart. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real value beyond the annotations by disclosing that no revision check occurs and that a save overwrites whatever was written since the last read, i.e., a lost-update hazard. This goes meaningfully further than the idempotentHint/destructiveHint flags, and it also comments on the reply. It stops short of describing mode behavior (save vs publish), which the schema covers.
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 tight sentences: the action comes first and the concurrency caveat second. Phrasing like "as it came" and "(measured)" is slightly cryptic, but nothing is wasted and it is 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?
For a mutation tool with full annotation coverage, a fully described schema, and no output schema, the description supplies the critical missing piece: the lack of revision checking and the resulting overwrite risk, plus a note on the reply. An agent has what it needs to call this safely.
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 (entry_id, template, mode, data, annotation) are already documented in the schema. The description adds no parameter-level meaning, 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 states a specific verb ("Save") and resource ("a QL chart") that matches the name, and clarifies it writes the chart "as given". It does not explicitly differentiate itself from datalens_charts_ql_create or datalens_charts_ql_get, but the save/overwrite framing is clear enough to distinguish a write from the get/create siblings.
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 when-to-use guidance or named alternatives are given; the reader must infer that this is for persisting changes to an existing chart. The only contextual note is a concurrency caveat, which is behavioral rather than usage-routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_charts_wizard_createCreate DataLens wizard chartA
Create a chart of the wizard in a workbook and return it with its id.
The entry.data of a chart read with charts_wizard_get is a valid data.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | The entry's key, in a folder. | |
| data | Yes | What the chart holds: `sources` and `visualization`. Its schema is not listed here: read `WizardChartData` with schema_get(service="datalens", name="WizardChartData"), then the definitions it refers to. | |
| name | No | The chart's name. | |
| annotation | No | A description of the chart. | |
| workbook_id | No | The workbook to create it in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the full safety profile (readOnly=false, destructive=false, idempotent=false, openWorld=true), so the bar is lowered. The description adds genuinely useful non-annotation context — that the created entry is returned with its id — but says nothing about required permissions, side effects on the workbook, or what happens on repeated calls.
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 short sentences, front-loaded with the core action and return value, with no filler. The second sentence is somewhat fragmentary in phrasing ('is a valid ``data``') but earns its place by encoding the interop contract.
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 output schema, the description correctly compensates by stating the return value (the chart with its id). It also addresses the nested `data` object by pointing to schema_get(service="datalens", name="WizardChartData") rather than leaving it opaque. The remaining gap is the absence of workflow/alternative guidance in a crowded field of chart-create siblings.
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 and the schema already documents key, name, annotation, and workbook_id. The description adds one piece of meaning beyond the schema for the `data` parameter: that it is interchangeable with `entry.data` from charts_wizard_get, which is a helpful compatibility cue but not a syntactic or structural clarification.
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?
States a specific verb and resource ('Create a chart of the wizard in a workbook') and even notes the return payload (the id), so an agent knows exactly what it produces. However, it does not differentiate itself from the sibling creation tools (datalens_charts_ql_create, datalens_charts_editor_create), leaving the agent to infer that 'wizard' is the distinguishing axis.
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?
There is no explicit when-to-use or when-not guidance, nor a named alternative among the wizard/ql/editor create siblings. The only usage signal is the implied round-trip workflow: data fetched via charts_wizard_get is valid input, which hints at a get-then-create pattern but stops short of stating it as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_charts_wizard_deleteDelete DataLens wizard chartBDestructive
Delete a chart; the dashboards that show it lose it.
The API has no way to bring it back, and a dashboard that shows it keeps naming its id (measured).
| Name | Required | Description | Default |
|---|---|---|---|
| chart_id | Yes | Chart id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds real value beyond them: dashboards displaying the chart lose it, the dashboards continue to reference the deleted id, and deletion cannot be undone through the API. This is meaningful consequence disclosure. It stops short of stating permission requirements or failure 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?
Two short sentences, and the destructive effect is front-loaded. But the second sentence is garbled ('a dashboard that shows it keeps naming its id (measured)') and the parenthetical '(measured)' reads like an internal spec artifact rather than agent-usable guidance, hurting clarity.
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 one-parameter delete with annotations covering the safety profile and no output schema, the description covers consequences adequately. It nevertheless omits permissions/auth requirements and any note on error conditions (e.g., deleting a chart still referenced by a dashboard), leaving gaps an agent may hit at call time.
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 chart_id parameter, so the schema already carries parameter meaning. The description adds nothing about the id format, source, or validity, so the 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 states a specific verb (Delete) and resource (a chart) and clarifies the effect on dashboards. However, it never distinguishes this wizard-chart delete from the closely named siblings datalens_charts_ql_delete and datalens_charts_editor_delete, which an agent could easily confuse it with.
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?
It describes the consequence of deletion but gives no guidance on when to choose this tool over the ql/editor chart-delete variants, nor any prerequisite such as detaching the chart from dashboards first. The irreversibility statement is useful but is a warning, not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_charts_wizard_getGet DataLens wizard chartARead-onlyIdempotent
One chart built in the wizard: the datasets it reads and what it shows.
entry.data is what charts_wizard_update takes back; isFavorite and
permissions come only when asked for. entries_list with the scope
widget finds charts; its type says how a chart is built.
| Name | Required | Description | Default |
|---|---|---|---|
| branch | No | The version to read when no revision is named: `saved` or `published`. A save writes the saved one: read `saved` before changing a chart. | |
| rev_id | No | One revision to read, as it is; give it or `branch`, not both. | |
| chart_id | Yes | Chart id. | |
| workbook_id | No | The workbook the chart lies in. | |
| include_links | No | Also say what it is linked to. | |
| include_favorite | No | Also say whether it is a favourite of the caller. | |
| include_permissions | No | Also say what the caller may do with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and idempotentHint=true, so the safety profile is covered. The description adds genuine non-annotation behavior: ``isFavorite`` and ``permissions`` are returned only when explicitly requested, and ``entry.data`` is the round-trippable payload for update. It does not note error/empty-revision behavior, keeping it below 5.
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?
Three short, front-loaded sentences with no filler; the return shape leads and the sibling references follow. The backtick-heavy telegraphic style is dense but every clause carries 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?
With no output schema, the description does the work of explaining what comes back (datasets read, what the chart shows, entry.data, and conditionally favorite/permissions). That covers the key retrieval contract for a 7-param get tool; only revision/branch read semantics and error cases are left to the schema.
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 branch, rev_id, include_links, include_favorite and include_permissions. The description's mention that favorite/permissions 'come only when asked for' largely restates the schema's 'Also say whether...' wording rather than adding new semantics, so the 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 conveys a specific resource and scope: 'One chart built in the wizard: the datasets it reads and what it shows.' It distinguishes the wizard chart from the editor/QL siblings implicitly via the 'built in the wizard' framing, but the read verb itself is only carried by the title, not the description text.
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?
It gives concrete routing context: '``entry.data`` is what ``charts_wizard_update`` takes back' implies read-before-update, and '``entries_list`` with the scope ``widget`` finds charts' names the alternative for discovery. No explicit when-not or exclusion, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_charts_wizard_updateUpdate DataLens wizard chartAIdempotent
Save a chart of the wizard as given: read it, change it, send it back whole.
DataLens does not check a revision here: a save overwrites what was saved since you read it (measured).
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | What the chart holds; it replaces the whole of it. Its schema is not listed here: read `WizardChartData` with schema_get(service="datalens", name="WizardChartData"), then the definitions it refers to. | |
| mode | Yes | `save` keeps a draft; `publish` makes it the version shown. | |
| rev_id | No | The revision the change is made on; DataLens does not check it (measured). | |
| chart_id | Yes | Chart id. | |
| annotation | No | A description of the chart. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It adds key behavioral context beyond the annotations: DataLens does not check the revision, and saving overwrites anything written since the chart was read. This is important for avoiding lost concurrent edits. There is mild tension with destructiveHint=false, but the warning concerns overwrite risk rather than direct resource deletion, so it is not a clear contradiction.
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 compact sentences, front-loaded with the essential workflow and followed by a critical overwrite warning. There is no wasted text.
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 mutation tool with rich schema descriptions, no output schema, and annotations covering idempotency and destructiveness, the description supplies the critical operational warning about overwrites. It could still say more about when to choose this tool over sibling chart-update tools, but it is largely 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 parameter meanings are already well documented. The description reinforces whole-object replacement and ignored revision checking, but adds little parameter-specific detail beyond what the schema 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 states a specific verb and resource: saving/updating a wizard chart, with the full read-change-send workflow. It clearly distinguishes the wizard chart subtype, though it does not explicitly contrast with sibling update tools for editor or QL charts.
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 update workflow: read the chart, change it, send it back whole. However, it gives no explicit when-to-use guidance versus alternatives such as datalens_charts_wizard_create, datalens_charts_editor_update, or datalens_charts_ql_update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_cloudenvironments_createCreate DataLens cloud environmentA
Make a cloud environment and return the operation that makes it.
It creates resources in a cloud, which may be billed: ask the person before calling. Experimental in the DataLens API, written from its document and never called: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The environment's name. | |
| storage | No | The settings of its storage bucket; no bucket when left out. | |
| cloud_id | Yes | The cloud to make it in. | |
| subnet_id | Yes | The subnet it uses. | |
| description | No | A description. | |
| security_group_ids | No | The security groups the environment uses. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly=false, destructive=false, idempotent=false, openWorld=true), and the description adds non-obvious context beyond them: the call may incur billing requiring user confirmation, and the API is experimental/untested ('never called: not measured'). That is real disclosure, though it lacks detail on auth or the operation object's 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?
Front-loads the purpose in the first sentence, then appends billing and experimental caveats. Three short sentences with little waste, though 'the operation that makes it' is slightly awkward 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?
For a 6-parameter create tool with no output schema, the description covers purpose, the billing prerequisite, and experimental status. Return value is only hinted at ('return the operation') but output schema is absent and the schema documents inputs fully, so it is largely 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 six parameters including required ones and nested storage settings. The description adds no parameter-level detail, so the 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?
States a specific verb and resource ('Make a cloud environment') plus the return artifact ('return the operation that makes it'). It is clearly a creation tool distinguishable from the sibling list/get/update/delete operations, though it does not explicitly name those siblings.
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?
Provides one prerequisite-style guideline ('ask the person before calling') driven by potential billing, which is genuinely useful. However, it offers no explicit when-to-use-vs-alternatives routing against the sibling create/update operations, leaving usage largely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_cloudenvironments_deleteDelete DataLens cloud environmentBDestructive
Delete a cloud environment and return the operation that deletes it.
Experimental in the DataLens API, written from its document and never called: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the cloud environment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true. The description adds a useful experimental/never-called caveat but does not explain what gets destroyed, whether deletion is reversible, or required permissions—leaving key behavioral context to 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?
Two sentences, front-loaded with the core purpose, followed by a relevant experimental caveat. 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?
For a destructive delete operation whose safety profile is covered by annotations, the description is minimally adequate but lacks any prerequisites, consequences, or usage context that would help an agent 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% for the single 'id' parameter. The description adds no additional meaning or syntax beyond what the schema already provides, 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?
States the specific verb 'Delete' and resource 'cloud environment', clearly distinguishing it from siblings like datalens_cloudenvironments_list/get/create/update. It also clarifies the return type as an operation.
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?
Provides no guidance on when to use this tool versus alternatives, nor any prerequisites or warnings. The experimental note is a caveat about reliability, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_cloudenvironments_getGet DataLens cloud environmentARead-onlyIdempotent
One cloud environment: its cloud, its subnet, its status and its storage.
Experimental in the DataLens API and written from its document: not measured. An id nothing knows answers 403 Permission denied, not 404: it is not a lack of rights.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the cloud environment. | |
| include_permissions | No | Also say what the caller may do with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, openWorld), yet the description adds two genuinely useful behavioral facts: the endpoint is experimental/'not measured', and an unknown id yields 403 Permission denied rather than 404. The latter is a non-obvious error-semantics disclosure that an agent would otherwise misdiagnose as a rights problem.
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 short sentences, front-loaded with the resource and returned fields, with the caveat and error-semantics note trailing. Slightly compressed phrasing, but every clause carries information and nothing is padded.
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 output schema, the description must characterize the return, and it does so by naming the four fields returned. Combined with the experimental-status caveat and the 403-vs-404 behavior, an agent has enough to call it correctly, though it says nothing about attribution or pagination (not applicable here).
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 only two parameters, both documented in the schema, so the schema carries the burden. The description's field list ('cloud, subnet, status, storage') describes return content rather than parameter meaning, adding little beyond the schema — 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?
States a specific resource ('one cloud environment') and enumerates what it returns (cloud, subnet, status, storage), which distinguishes it from the list/create/update/delete siblings on the same resource. It does not explicitly name a sibling alternative, but the singular scope makes the get-vs-list distinction obvious.
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 when-to-use or when-not-to-use guidance, and no alternatives are named (e.g. datalens_cloudenvironments_list for many, or the update/delete tools). Usage is only inferable from the name and the 'one cloud environment' framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_cloudenvironments_listList DataLens cloud environmentsARead-onlyIdempotent
The cloud environments of the DataLens instance, auto-paginated.
Experimental in the DataLens API. An instance with none answers an empty list.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max environments to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| filter | No | Conditions, all of which must hold; each is ``field="value"`` over ``name``, ``cloud_id``, ``status`` or ``created_by_id``. | |
| include_permissions | No | Also say what the caller may do with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered; the description adds real value by disclosing automatic pagination (no cursor management needed), experimental API status (a stability caveat), and the empty-list behavior for instances with no environments. It stops short of saying whether filters silently narrow results or how the response is shaped.
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?
Three short sentences with the resource front-loaded and no padding. The phrasing of the final sentence is slightly awkward ('An instance with none answers an empty list'), but nothing is wasted.
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 output schema and full schema coverage on all parameters, the description covers the essential behavioral facts: auto-pagination, experimental status, and the empty-result case. It leaves the exact pagination mechanics and filter behavior to the schema, which is acceptable for this simple read 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% with three well-documented optional parameters (limit, filter, include_permissions), so the schema carries the semantics and a baseline 3 applies. The description contributes nothing about limit, filter syntax, or what include_permissions returns, so it adds no meaning 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 names the resource precisely (cloud environments of the DataLens instance) and the auto-pagination note confirms it returns a collection rather than a single item, distinguishing it implicitly from datalens_cloudenvironments_get/create/update/delete. It never states an explicit verb like 'list all', so the differentiation from siblings is inferred rather than declared.
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?
There is no when-to-use guidance and no alternatives named; an agent is not told to use this tool to enumerate environments and reach for datalens_cloudenvironments_get when a single environment is wanted. The only usage-adjacent information is the empty-list edge case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_cloudenvironmentstorage_bucket_download_url_createCreate a download link for a DataLens bucket objectARead-onlyIdempotent
A signed link to read one object of the bucket.
The link works for whoever holds it, for a time, and it comes in this tool's result: hand it to the person and do not repeat it. Experimental in the DataLens API and written from its document: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The path of the object in the bucket. | |
| cloud_environment_id | Yes | Id of the cloud environment the bucket belongs to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, openWorld), and the description adds genuinely useful context beyond them: the link is a bearer credential ("works for whoever holds it"), it expires ("for a time"), it is returned in the result, and the endpoint is experimental and untested ("not measured"). It stops short of stating auth/permission requirements.
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?
Three short sentences, front-loaded with the nature of the artifact before the handling caveat and the experimental disclaimer. Slightly meandering ("and it comes in this tool's result") but every sentence carries 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?
With no output schema, the description usefully states that the link arrives in the result and that it is time-limited and sensitive. It is nearly complete for a URL-minting tool, though it omits what permissions are needed and the exact response shape.
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 both parameters, so the schema already documents path and cloud_environment_id. The description adds no format or constraint detail beyond that, which is the expected baseline when the schema does the heavy lifting.
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 names the resource and scope precisely ("a signed link to read one object of the bucket"), and the title supplies the verb "Create". It implicitly contrasts with the sibling upload_url_create (read vs upload) but never names it, so sibling differentiation is inferred rather than stated.
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?
"Hand it to the person and do not repeat it" is guidance on handling the result, not on when to choose this tool. Nothing says when to prefer it over bucket_object_metadata_get or bucket_upload_url_create, and no prerequisites (permissions, bucket state) are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_cloudenvironmentstorage_bucket_object_metadata_getGet the metadata of a DataLens bucket objectARead-onlyIdempotent
The size of an object, in bytes as a string, and when it last changed.
Experimental in the DataLens API and written from its document: not measured. An environment nothing knows answers 403 Permission denied, not 404.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The path of the object in the bucket. | |
| cloud_environment_id | Yes | Id of the cloud environment the bucket belongs to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld, so the safety profile is covered. The description adds genuinely new behavioral context: the API endpoint is experimental and unmeasured, and an unknown environment returns 403 Permission denied rather than 404, which materially affects error handling.
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, front-loaded with the returned data, then a caveat sentence. It is compact and each sentence adds information, though the phrasing ('An environment nothing knows') is slightly awkward.
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?
There is no output schema, so the description must carry the return contract; it does so by naming size and last-modified time. Combined with the error-code note, an agent has enough to call and interpret the tool, though a fuller enumeration of metadata fields would be ideal.
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 two well-described parameters (path and cloud_environment_id), so the schema does the work. The description adds no additional parameter meaning, which is the expected baseline at full 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 names the resource and what it returns ('size of an object, in bytes as a string, and when it last changed'), which together with the title makes the purpose legible. It does not explicitly differentiate from the sibling bucket_objects_list or the download/upload URL tools, so it lands at 4 rather than 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?
There is no statement of when to use this tool versus the sibling bucket_objects_list, bucket_download_url_create, or bucket_upload_url_create. The only operational note is an error-code behavior, which is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_cloudenvironmentstorage_bucket_objects_listList the objects of a DataLens storage bucketARead-onlyIdempotent
The paths of the objects in a cloud environment's storage bucket, auto-paginated.
Experimental in the DataLens API and written from its document: not measured. An environment nothing knows answers 403 Permission denied, not 404: it is not a lack of rights.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max paths to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| prefix | No | Only the paths that start with this. | |
| cloud_environment_id | Yes | Id of the cloud environment the bucket belongs to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/idempotent, but the description adds real value beyond them: auto-pagination behavior, the experimental/unmeasured status of the endpoint, and the notable 403-vs-404 semantics where an unknown environment returns Permission denied rather than not-found. That last point is a genuine behavioral caveat an agent could not infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose front-loaded, no filler. The phrasing 'written from its document: not measured' is slightly opaque but is compact and informative rather than wasteful.
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 output schema, the description usefully tells the agent what comes back (object paths) and that results are auto-paginated, plus the 403 caveat for unknown environments. For a low-complexity list tool this is close to complete; only explicit pagination semantics would improve it.
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 all three parameters (limit, prefix, cloud_environment_id) are documented inline, so the schema carries the burden. The description adds no parameter-level detail such as prefix-matching semantics or limit defaults, so the 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 states a specific verb and resource: it returns the paths of objects in a cloud environment's storage bucket. That is distinguishable from the sibling metadata_get, which targets a single object, though the description never names that sibling to reinforce the distinction.
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?
It notes the tool is auto-paginated but gives no explicit when-to-use guidance, no prerequisites for calling it, and no routing to or away from the related bucket tools (object_metadata_get, download_url_create, upload_url_create). Usage is only implied by the verb 'list'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_cloudenvironmentstorage_bucket_upload_url_createCreate an upload link for a DataLens bucket objectA
A signed link to put one object into the bucket.
The link works for whoever holds it, for a time, and it comes in this tool's result: hand it to the person and do not repeat it. Experimental in the DataLens API and written from its document: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The path of the object in the bucket. | |
| size | Yes | The size of the object in bytes, as a string. | |
| content_md5 | Yes | The MD5 digest of the content: 16 bytes, base64-encoded. | |
| cloud_environment_id | Yes | Id of the cloud environment the bucket belongs to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=false, openWorldHint=true, idempotentHint=false, and destructiveHint=false. Beyond that, the description discloses important security behavior: the link is bearer-like ('works for whoever holds it'), time-limited ('for a time'), returned in the result, and should not be repeated. It also candidly notes the operation is experimental and not measured, which is valuable 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 two short sentences plus a brief caveat, and it front-loads the core purpose before operational guidance. There is little filler, though the phrasing is slightly indirect and could state the action more directly. Overall it is appropriately sized for a simple four-parameter 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 four-parameter tool with full schema coverage and no output schema, the description covers the returned artifact and its handling, which is the most important missing piece. It does not mention required permissions or whether an existing object would be overwritten, but the annotations supply safety hints and the core contract is clear.
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 four required parameters. The description adds no parameter-specific meaning, syntax, or constraints beyond what the schema provides. Baseline 3 is appropriate when the schema fully carries 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 title and description together convey the purpose: creating a signed upload link for a bucket object. The description says 'A signed link to put one object into the bucket,' which is clear but phrased as a noun rather than an action verb. It also does not explicitly distinguish this from the sibling download URL tool, though the 'put' wording implies upload.
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 handling instructions for the produced link ('hand it to the person and do not repeat it'), which is useful operational guidance. However, it provides no guidance on when to choose this tool versus alternatives such as datalens_cloudenvironmentstorage_bucket_download_url_create or bucket_objects_list. There are no explicit when/when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_cloudenvironments_updateUpdate DataLens cloud environmentBIdempotent
Change the fields given of a cloud environment and return the operation.
Experimental in the DataLens API, written from its document and never called: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the cloud environment. | |
| name | No | A new name. | |
| storage | No | New settings of its storage bucket. | |
| description | No | A new description; an empty one clears it. | |
| security_group_ids | No | The security groups the environment uses. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description usefully adds that the call returns an operation (valuable since there is no output schema) and flags the experimental, untested status, but says nothing about which fields are optional, how omitted fields are treated, or storage-related failure 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?
Two short sentences with the action front-loaded and no padding. The second sentence is meta-commentary about API maturity rather than tool behavior, which is slightly off-purpose but does not bloat the definition.
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 annotations carrying the safety profile, no output schema, and full schema coverage, the description covers the essentials and notes the returned operation. It is adequate but thin for a mutation tool: no prerequisites, no statement that unspecified fields are left unchanged, and no note on the storage-fails-if-no-bucket constraint that the schema hints at.
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 five parameters (id, name, storage, description, security_group_ids) are documented inline. The description adds no parameter-level detail beyond the generic phrase 'the fields given', 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?
States a specific verb and resource ('Change the fields given of a cloud environment') and implies partial-update semantics, distinguishing it from the create/get/list/delete siblings in the cloud environments family. It does not explicitly name those siblings, but the action is 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?
There is no when-to-use guidance and no comparison to alternatives such as datalens_cloudenvironments_create or _delete. The only guidance-like content is the experimental warning, which advises caution but does not help the agent choose this tool over another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_collections_access_bindings_listList the roles on a DataLens collectionBRead-onlyIdempotent
Who has which role on a collection, auto-paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max subjects to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| collection_id | Yes | Collection id. | |
| get_inherited_bindings | No | Also list the roles inherited from above. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=true, so the safety profile is covered. The description adds only one behavioral detail beyond that: that results are 'auto-paginated'. It does not explain pagination mechanics or interaction with the limit 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?
A single short clause with no wasted words, front-loading the core question and appending the pagination behavior. It is efficient, though arguably terse for the tool's role.
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 operation, the description combined with annotations and a fully documented schema gives the agent enough to call it correctly. The lack of a return-shape description is mitigated by the straightforward nature of the tool, though no output schema exists.
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 three parameters are documented in the schema. The description adds no parameter-level meaning beyond what the schema already provides, making the baseline 3 appropriate for high-coverage schemas.
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 clear resource and outcome: querying role assignments on a collection. It distinguishes from sibling datalens_collections_access_bindings_update by implication of listing, but never explicitly names alternatives or scopes like collection vs. workbook vs. shared entry.
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 when-to-use guidance is provided. It does not state prerequisites, when to prefer this over sibling list tools such as datalens_workbooks_access_bindings_list, or any exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_collections_access_bindings_updateChange the roles on a DataLens collectionA
Give or take away roles on a collection; the roles not named stay as they are.
| Name | Required | Description | Default |
|---|---|---|---|
| deltas | Yes | The roles to add (`ADD`) and remove. | |
| collection_id | Yes | Collection id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, openWorld=true and idempotent=false, so the safety profile is covered. The description adds genuinely non-obvious behavior: this is a partial/delta update where unnamed roles are left untouched, which is important context an agent cannot derive from the schema or hints. It omits permission requirements and error behavior, keeping it below 5.
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 compact sentence with the partial-update constraint front-loaded and no filler. Every 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?
For a two-parameter mutation with annotations covering safety and no output schema to explain, the description supplies the one behavior that matters most (incremental role changes). Missing only permission requirements and failure semantics, which is a minor 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?
Schema description coverage is 100%, so the schema already documents collection_id, deltas, action, roleId and subject. The description's phrase 'roles not named stay as they are' echoes the schema's ADD/REMOVE delta semantics without adding syntax or format detail. Baseline 3 applies when the schema does the heavy lifting.
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 pair and resource: 'Give or take away roles on a collection.' That is enough to distinguish it from the workbooks/sharedentries variants of the same operation, which target different resources. It stops short of naming the sibling tool explicitly, so it lands at 4 rather than 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?
There is no statement of when to use this tool versus alternatives such as datalens_collections_access_bindings_list (to inspect current roles) or the workbooks/sharedentries binding updaters. The agent must infer the use case from the verb alone. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_collections_breadcrumbs_listList the path of a DataLens collectionCRead-onlyIdempotent
The collections from the root down to this one.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_id | Yes | Collection id. | |
| include_permissions_info | No | Also say what the caller may do with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds only a hint about response content (ancestor chain from root), and says nothing about ordering guarantees, whether the target collection itself is included, or permission 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 short fragment with no padding, so it is certainly concise and front-loaded. However, it reads as an incomplete sentence and omits the verb, leaving the statement of purpose under-formed rather than tight.
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?
There is no output schema, so the description is the only place return values could be characterized; it gestures at the result being an ancestor chain but does not describe the shape, fields, or ordering. For a simple 2-parameter read it is minimally adequate, not 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% and both parameters (collection_id, include_permissions_info) are documented in the schema, so the baseline is 3. The description adds no meaning beyond the schema for either parameter.
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 sentence names the resource (collections) and the scope of the result (root down to this one), so an agent can infer it returns an ancestry path. But it states the output content rather than an action verb, and it never distinguishes itself from close siblings such as datalens_collections_get or datalens_collections_list_by_ids.
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?
There is no when-to-use guidance, no stated preconditions, and no mention of any alternative tool. With ~200 siblings and several collection-listing tools, the absence of routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_collections_content_listList the content of a DataLens collectionARead-onlyIdempotent
What a collection holds: collections, workbooks and entries, auto-paginated.
Start here to find a workbook: list the root, then descend. Capped at the configured item
cap unless limit is given.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Which kinds of items to list. | |
| limit | No | Max items to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| only_my | No | Keep only what the caller created. | |
| order_field | No | What to sort by. | |
| collection_id | No | Collection id; `null` lists the root. | |
| filter_string | No | Keep the items whose title has this text. | |
| order_direction | No | Sort direction. | |
| include_permissions_info | No | Also say what the caller may do with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld. The description adds behavior beyond them: results are auto-paginated, and output is capped at the configured item cap unless `limit` is passed. That cap/pagination disclosure is genuinely useful context the agent can't get from the annotations alone.
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 tight sentences, front-loaded with the resource meaning and then the navigation hint. Zero filler; the cap caveat is stated precisely.
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 list tool with full schema coverage and safety annotations, the description covers purpose, navigation, and pagination/cap behavior. Return structure is only loosely sketched (no output schema exists), but nothing critical to correct invocation is 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?
Schema description coverage is 100%, so the schema already documents all 8 parameters including `mode`, `limit`, and `collection_id`. The description only reinforces the `limit`/cap interaction already documented in the schema, 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?
States a specific verb+resource: it lists what a collection holds (collections, workbooks, entries). This clearly distinguishes it from the flat datalens_workbooks_list and datalens_entries_list siblings, though it never names an alternative explicitly.
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?
Provides clear context and a workflow: 'Start here to find a workbook: list the root, then descend.' That tells the agent when to reach for this tool versus a direct by-ids or workbooks-list call. It stops short of explicit exclusions or naming the competing siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_collections_createCreate DataLens collectionC
Create a collection in another one, or in the root when no parent is given.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the collection. | |
| parent_id | No | The collection to put it in; the root when left out. | |
| description | No | Description of the collection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond them: it does not mention that repeat calls create duplicate collections (non-idempotent), what permissions are needed, or naming constraints.
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 short sentence with the placement rule front-loaded and no filler. Slightly awkward phrasing ('in another one') but structurally 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?
For a mutation tool with no output schema, the description omits what the agent gets back (e.g., the new collection id needed for follow-up calls) and any permission or naming constraints. The schema carries the parameter detail, but the description leaves the agent under-informed on the result of the 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?
Schema description coverage is 100% and each parameter is documented, including parent_id's root default. The description merely restates the parent_id fallback behavior already present in the schema, adding no new meaning, so the 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?
Names a specific verb and resource ('Create a collection') and adds the placement rule (parent vs root). An agent can distinguish it from siblings like datalens_collections_move or datalens_collections_update, though the description never names those alternatives explicitly.
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?
There is no guidance on when to call this versus other creation or move tools (e.g., datalens_workbooks_create, datalens_collections_move), nor prerequisites such as required permissions on the parent collection. The only conditional stated is the parent/root default, which is really parameter semantics rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_collections_deleteDelete DataLens collectionADestructive
Delete a collection with everything it holds: nested collections, workbooks, entries.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_id | Yes | Collection id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description adds real value by disclosing the recursive blast radius: nested collections, workbooks and entries are all removed. It stops short of stating irreversibility, required permissions, or whether locked entries block deletion.
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?
One sentence, front-loaded with the action and immediately followed by the destructive scope. No 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 destructive single-parameter tool with full annotation coverage and no output schema, the description supplies the key missing behavioral fact (cascade). It omits permissions and irreversibility, but nothing essential to correct invocation is absent.
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 description adds no syntax or format detail for collection_id beyond what the schema states. Baseline 3 applies for a single fully-documented parameter.
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?
States a specific verb (delete) and resource (collection) and adds the cascade scope ('everything it holds: nested collections, workbooks, entries'). It does not name or contrast with the close sibling datalens_collections_delete_bulk, so an agent must infer the distinction.
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 when-to-use guidance, no exclusions, and no reference to alternatives such as datalens_collections_delete_bulk for multi-collection deletion or datalens_workbooks_delete for removing a workbook alone. Usage is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_collections_delete_bulkDelete DataLens collectionsBDestructive
Delete several collections with everything they hold.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_ids | Yes | Collection ids. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered structurally. The description adds real value by disclosing the cascade semantics ('with everything they hold'), which the annotations do not convey. It stops short of stating irreversibility or partial-failure 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?
A single sentence, front-loaded with the verb and the cascade warning, with no wasted words. It is efficient for a one-parameter tool, though extremely terse.
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 bulk delete with no output schema and annotations that already carry the destructive/idempotency profile, the description plus structured fields are sufficient to invoke it. The cascade note is the key missing-from-schema detail and it is present.
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, so the schema already documents collection_ids as an array of ids. The description adds nothing beyond what the schema provides, making the baseline 3 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?
States a specific verb+resource ('Delete ... collections') with a clear scope worth ('several') and effect ('with everything they hold'). The 'several/bulk' framing implicitly separates it from the singular datalens_collections_delete sibling, though no sibling is named explicitly.
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 no when-to-use guidance, no condition that selects bulk deletion over single deletion, and no prerequisites such as required permissions or confirmation. It only restates the action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_collections_getGet DataLens collectionBRead-onlyIdempotent
One collection by id: its title, description and parent.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_id | Yes | Collection id. | |
| include_permissions_info | No | Also say what the caller may do with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering the safety profile. The description adds that the response includes title, description, and parent, which is useful return context not present in annotations, but it does not disclose behavior around the optional permissions flag or any other operational trait.
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 very short and front-loads the key constraint 'by id'. However, it is a sentence fragment without a verb, and it omits useful context such as the optional parameters. It is concise but too terse to be 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-by-id tool, the schema covers inputs and annotations cover safety, so the description need not explain everything. It partially describes the return fields, but with no output schema the description could say more about what is returned, especially when include_permissions_info is set.
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 are already documented. The description implies the collection_id lookup but adds no format or syntax details beyond the schema, and it does not mention the include_permissions_info parameter. Baseline 3 is appropriate when the schema carries 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?
The description states a specific resource and scope: retrieving one collection by id, with its title, description, and parent. This implicitly distinguishes it from list-style siblings like datalens_collections_list_by_ids. It lacks an explicit verb and does not name sibling tools, so it falls short of 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?
There is no explicit guidance on when to use this tool versus alternatives such as datalens_collections_list_by_ids or datalens_collections_breadcrumbs_list. The phrase 'One collection by id' implies a lookup use case, but no when/when-not or alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_collections_list_by_idsList DataLens collections by idBRead-onlyIdempotent
The collections with these ids; an id the caller cannot see is left out.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_ids | Yes | Collection ids. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds a useful behavioral detail: ids the caller cannot see are silently omitted rather than causing an error. However, it does not describe return format, ordering, or handling of duplicate ids, so it adds only moderate value beyond 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, tightly worded sentence that front-loads the core operation and appends the key edge-case behavior. Every clause 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 read-only batch lookup with rich annotations and a fully described single parameter, the description covers the essential purpose and the permission-filtering behavior. It does not explain return ordering or pagination, but with no output schema and a low-complexity surface, those omissions are minor.
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% — the single parameter is fully documented as 'Collection ids.' The description references 'these ids' but adds no format, constraint, or example beyond what the schema already provides. With full schema coverage, a 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 clearly states that the tool returns the collections matching the given ids, and adds the key behavior that inaccessible ids are omitted. It distinguishes itself from simple single-collection getters by implying batch lookup, but it does not explicitly contrast with siblings like datalens_collections_get or datalens_workbooks_list_by_ids.
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 sibling tools such as datalens_collections_get or datalens_collections_content_list, nor does it state any prerequisites or selection criteria. The only contextual clue is the input parameter name itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_collections_moveMove DataLens collectionB
Move a collection into another one, or into the root when no parent is given.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New title to give it on the way. | |
| parent_id | No | The collection to put it in; the root when left out. | |
| collection_id | Yes | Collection id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, and idempotent=false, so the safety profile is covered. The description adds no new behavioral context beyond the schema — it does not mention permission/access-binding effects, required roles, or what happens to existing entry locks when a collection is relocated.
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 zero filler; the core action and the default-destination rule are stated 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?
With annotations present and no output schema, the essentials for calling the tool are covered. However, for a mutation that relocates a container, the description omits any note about permission inheritance or side effects, which an agent would want before invoking it.
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 collection_id, parent_id, and title. The description's root-when-omitted note merely restates the parent_id schema description, adding no syntax or format 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 states a specific verb and resource ('Move a collection') plus the destination scope, which is clear enough to distinguish it from read/update siblings like datalens_collections_get or datalens_collections_update. It does not, however, differentiate itself from the near-neighbor datalens_collections_move_bulk or datalens_workbooks_move.
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 only conditional given is about parent_id behavior ('into the root when no parent is given'), which is parameter behavior rather than tool-selection guidance. There is no statement of when to use this versus move_bulk or any other move/rename tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_collections_move_bulkMove DataLens collectionsA
Move several collections into another one, or into the root when none is given.
All or none: if one collection already lies in the destination, the API answers 409 and moves none of them.
| Name | Required | Description | Default |
|---|---|---|---|
| parent_id | No | The collection to put it in; the root when left out. | |
| collection_ids | Yes | Collection ids. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (non-readonly, non-destructive, non-idempotent, open world), and the description adds genuinely non-obvious behavior: atomic all-or-nothing semantics and a 409 when any collection already sits in the destination. That conflict/atomicity disclosure is real value the annotations cannot convey.
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 short sentences; the core action is front-loaded and the atomicity caveat is a tightly packed second clause. No 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 2-parameter mutation with no output schema, the description supplies the two things an agent most needs: destination default and failure semantics. It lacks any note on permissions or limits on batch size, but nothing critical is missing for correct 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% and both parameters are documented there, including the root default for parent_id. The description only restates that default ("into the root when none is given"), adding no syntax, id format, or batch-limit 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?
States a specific verb and resource (move collections, plural/bulk) and the destination semantics (another collection or the root). It implicitly separates itself from the single-item sibling datalens_collections_move, but never names it, so an agent must infer the distinction from the name.
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 bulk use case ("several collections") but gives no explicit when-to-use versus when-to-use-the-single-move rule, nor any prerequisite/permission guidance. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_collections_permissions_get_rootGet DataLens root permissionsBRead-onlyIdempotent
Whether the caller may create a collection and a workbook in the root.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds that the check concerns creating a collection and a workbook in the root, but it does not disclose the return format (e.g., boolean vs. object) or any auth requirements, leaving a behavioral gap.
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 is appropriately concise for a simple permission check, though it could add a short clause about the return value without harming 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?
For a zero-parameter, read-only tool, the description states the permission being checked but omits what the response contains. With no output schema, this is a noticeable gap for an agent that needs to know whether the result is a simple boolean or a structured permission object.
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 cannot convey parameter meaning. The baseline for no parameters is 4; the description correctly adds no parameter detail because 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 specifies a permission check at the root for creating a collection and a workbook, which distinguishes it from generic permission getters. However, it is phrased as a question rather than a verb+resource statement and does not name or differentiate from sibling tools like datalens_entries_permissions_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?
No explicit when-to-use, prerequisites, or alternatives are provided. The agent could infer it is a pre-flight check before collection or workbook creation, but the description offers no guidance on when to call this tool versus other permission-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_collections_updateUpdate DataLens collectionBIdempotent
Change a collection's title or description; what is not given stays as it is.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New title. | |
| description | No | New description. | |
| collection_id | Yes | Collection id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context with the partial-update semantics (omitted fields are preserved), but says nothing about required permissions or failure modes for a non-existent collection.
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 compact sentence with the mutation front-loaded ('Change a collection's title or description') and the semantics clause appended. No wasted words, though it is terse enough that nothing extra is offered.
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 three-parameter update with full schema coverage and annotations carrying idempotency and safety, the description is adequate but thin: it omits permission requirements and any note on what identifies an invalid collection_id. No output schema exists, so return behavior need not be described.
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 title, description and collection_id. The description adds the partial-update meaning for the optional fields but no extra syntax, format or constraint 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 names a specific verb (change) and resource (a collection) and lists the two mutable fields, title and description. It is clearly distinct from siblings like datalens_collections_move or datalens_collections_delete, though it does not explicitly contrast itself with any of them.
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 'what is not given stays as it is' effectively tells the agent this is a partial update, which is useful usage context. However, there is no explicit when-to-use guidance, no prerequisites (e.g. ownership/permissions), and no named alternative for a full replacement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_connections_createCreate DataLens connectionA
Create a connection and return its id.
Give workbook_id (or dir_path) for where it lies. The password or the token you
give is stored by DataLens and never returned by connections_get. A connection to
Google Sheets (gsheets) cannot be created here: the API answers that the type is not
editable; it is made in the DataLens interface and then read like any other.
| Name | Required | Description | Default |
|---|---|---|---|
| connection | Yes | The new connection; ``type`` says which kind it is and selects its schema. Its schema is not listed here: read `ConnectionCreate` with schema_get(service="datalens", name="ConnectionCreate"), then the definitions it refers to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read, non-destructive, non-idempotent, open-world write, so the safety baseline is covered. The description adds real value beyond that: credentials are stored server-side and never returned by ``connections_get``, and one connection type is rejected by the API. It omits, however, any warning that repeating the call yields duplicate connections despite idempotentHint=false, and gives no permission requirements.
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?
Three short sentences, front-loaded with the action and return value, then placement, then the security note and the exclusion. The final sentence is a little long, but each sentence carries distinct information with no 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 one-parameter create tool with an externally referenced nested schema and no output schema, the description covers the essentials: return value, placement scope, credential handling, and a known unsupported case. Missing only secondary detail such as required permissions or duplicate-creation behavior.
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% for the single top-level ``connection`` object, so baseline is 3. The description goes further by explaining that ``workbook_id``/``dir_path`` sit inside that payload and that the actual type-specific schema is external and must be fetched with ``schema_get`` for ``ConnectionCreate``, which is meaningful guidance for a nested-unknown object.
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 first sentence states a specific verb and resource ('Create a connection') plus the return value ('return its id'), which no sibling duplicates. The description also implicitly separates it from read/update paths by naming ``connections_get`` as the reader. An agent can identify this as the creation primitive without opening the schema.
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?
It tells the agent where the resource must live (``workbook_id`` or ``dir_path``) and gives an explicit exclusion plus workaround: gsheets connections cannot be created here and must be made in the UI. It does not name a fallback tool or state prerequisites beyond that, so it stops short of full when/when-not/alternatives coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_connections_deleteDelete DataLens connectionADestructive
Delete a connection; the datasets built on it lose their source.
The API has no way to bring it back, and a chart that reads through it keeps naming its id (measured).
| Name | Required | Description | Default |
|---|---|---|---|
| connection_id | Yes | Connection id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety baseline is covered. The description nonetheless adds real value beyond them: it specifies what gets damaged (datasets lose their source), that the action is unrecoverable ('no way to bring it back'), and a referential side effect (charts keep naming the deleted id). The trailing '(measured)' is an unexplained artifact that slightly muddies otherwise strong 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?
Two tight sentences with the action front-loaded and the consequence trailing. The stray '(measured)' parenthetical is wasted tokens and the only blemish on otherwise efficient structuring.
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 single-parameter destructive delete with no output schema, the description plus annotations cover the essentials: what the tool removes and that it cannot be undone. It is nearly complete, missing only explicit permission/authorization requirements.
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 a single documented 'connection_id' parameter, so the schema carries the full burden. The description only obliquely references the id ('keeps naming its id') and adds no format or constraint detail. 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 gives a specific verb+resource ('Delete a connection') and immediately qualifies it with the consequence ('the datasets built on it lose their source'). This cleanly distinguishes it from the sibling get/create/update connection tools without ambiguity.
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?
There is no explicit when-to-use, when-not-to-use, or alternative routing. The irreversibility note implies caution, but it never tells the agent under what conditions deletion is the right choice versus, say, datalens_connections_update or detaching datasets first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_connections_getGet DataLens connectionARead-onlyIdempotent
One connection by id: its name, its kind and the settings of that kind.
The kind comes in db_type: the reply has no type, though creating one takes it.
A password or a token is never in the reply. workbooks_entries_list with the scope
connection finds the connections of a workbook.
| Name | Required | Description | Default |
|---|---|---|---|
| rev_id | No | The revision to read; the current one when left out. | |
| workbook_id | No | The workbook the connection lies in. | |
| connection_id | Yes | Connection id. | |
| binded_dataset_id | No | A dataset bound to the connection, to read it through. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds non-obvious behavior: the response uses db_type instead of type, and passwords/tokens are never returned, which is important for security expectations.
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?
Three short paragraphs: purpose first, then the db_type nuance, then security and an alternative. No filler; every sentence carries actionable 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?
No output schema exists, so the description must cover return values; it names the main returned fields and the db_type field, plus a secrets warning. It does not detail settings structure or error behavior, but for a read-only get with full input schema coverage this is close to 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%, so all four parameters are documented in the schema. The description adds no syntax or filtering details beyond noting lookup by id, so it does not exceed 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?
States it retrieves a single connection by id and enumerates the high-level returned fields (name, kind, settings of that kind). The note contrasting db_type with create's type and the reference to workbooks_entries_list distinguishes it from sibling create/list 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?
Names the alternative datalens_workbooks_entries_list for finding a workbook's connections, implying this tool is for when the connection id is known. However, it does not explicitly state when not to use it or list other prerequisites, so guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_connections_updateUpdate DataLens connectionBIdempotent
Change the fields given of a connection; returns an acknowledgement.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | The fields to change, of the connection's own kind; the others stay as they are. Its schema is not listed here: read `ConnectionUpdate` with schema_get(service="datalens", name="ConnectionUpdate"), then the definitions it refers to. | |
| connection_id | Yes | Connection id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (not read-only, idempotent, non-destructive, open-world). The description adds one genuinely useful behavioral fact beyond them: only the supplied fields change while the rest stay as-is, and the call returns an acknowledgement. It says nothing about permissions, what happens on invalid field values, or concurrency, so it adds some but not rich 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?
A single compact sentence that front-loads the action and the mutation semantics with no wasted words. It is arguably too terse for the underlying nested-schema complexity, but the sentence itself is 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?
Covers the minimum: what changes, partial-update behavior, and the acknowledgement return. However, for a mutation tool with a nested, externally-defined data object and no output schema, it does not tell the agent that the ConnectionUpdate schema must be resolved via schema_get, nor what the acknowledgement contains.
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's 'fields given' phrasing aligns with the schema's partial-update note, but adds no new syntax or format detail beyond what the schema already documents, including the pointer to schema_get for ConnectionUpdate.
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?
States a specific verb+resource combination ('Change the fields ... of a connection') and correctly implies a partial update. It is distinguishable from siblings like datalens_connections_create/delete/get by resource, but it does not explicitly differentiate itself from those siblings.
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?
There is no guidance on when to use this tool versus datalens_connections_create or the schema_get lookup the nested data parameter requires, nor any prerequisites or exclusions. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_dashboards_createCreate DataLens dashboardA
Create a dashboard and return it with its id.
data needs counter, salt, settings and tabs; a tab may be empty.
entry.meta must be an object, {} when empty: without it DataLens answers
400 entry.meta: expected record, received undefined.
| Name | Required | Description | Default |
|---|---|---|---|
| entry | Yes | The new dashboard: where it lies (`workbookId`, `name`), `data` and `meta`. Its schema is not listed here: read `DashboardCreate` with schema_get(service="datalens", name="DashboardCreate"), then the definitions it refers to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly=false, destructive=false, idempotent=false, openWorld=true). The description goes beyond them by documenting the return ('with its id') and a concrete failure mode — the 400 error when entry.meta is omitted — which is genuinely useful behavioral context for a create call.
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?
Front-loads the purpose in one sentence, then adds the field requirements and error detail without padding. Every sentence carries information, though the backtick-heavy inline markup is slightly noisy.
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 output schema, mentioning that the created dashboard with its id is returned is necessary and present, and the nested-type gap is partly compensated by the data/meta field notes. Permissions and post-creation behavior are not covered, keeping it from a 5.
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%, but the sole parameter's real shape is an external type (DashboardCreate) not listed inline, so the description's detail that data needs counter, salt, settings and tabs, that a tab may be empty, and that entry.meta must be an object adds real meaning 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?
States a specific verb and resource ('Create a dashboard') plus a return detail ('and return it with its id'), so it is clearly distinguished from the get/update/delete dashboard siblings by the verb alone. It stops short of naming an alternative tool, so it lands at 4 rather than 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 explicit when-to-use/when-not guidance and no mention of prerequisites like required permissions or the relationship to datalens_workbooks_create. A careful agent can infer it creates a new dashboard, but the description offers no routing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_dashboards_deleteDelete DataLens dashboardCDestructive
Delete a dashboard.
| Name | Required | Description | Default |
|---|---|---|---|
| lock_token | No | The token of the lock held on the dashboard, when it is locked. | |
| dashboard_id | Yes | Dashboard id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds no behavioral context such as irreversibility, permission requirements, or side effects on linked entries. It neither contradicts nor enriches 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 single sentence is front-loaded with a verb and object, and it wastes no words. However, it is under-specified rather than efficiently informative, so the brevity does not earn a top score.
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 structured fields are rich: annotations cover destructive, non-idempotent, and open-world behavior; the schema fully documents both parameters; and no output schema exists to explain. The description is terse and lacks usage guidance, irreversibility notes, and lock_token context, but the external context fills most 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 description coverage is 100%, and both dashboard_id and lock_token are documented in the input schema. The description adds no parameter meaning, so the baseline of 3 is appropriate because the schema already carries 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?
The description restates the tool name and title in sentence form ('Delete a dashboard') without adding any distinguishing detail. It identifies the verb and resource, but provides no information that would help an agent differentiate this delete operation from the many other delete tools in the sibling list.
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 when-to-use guidance, prerequisites, or alternatives are provided. It does not mention the optional lock_token condition, nor when to prefer this tool over other DataLens delete siblings. The agent must infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_dashboards_getGet DataLens dashboardARead-onlyIdempotent
One dashboard: its tabs and the charts, selectors and texts on them.
A real dashboard is large, 100 KB and more, which may be over what a client shows of a
tool's reply: read a big one as a file (ycli datalens dashboards get <id> > dash.json).
entry.data is what dashboards_update takes back.
| Name | Required | Description | Default |
|---|---|---|---|
| branch | No | The version to read when no revision is named: `saved` or `published`. A save writes the saved one: read `saved` before changing a dashboard. | |
| rev_id | No | One revision to read, as it is; give it or `branch`, not both. | |
| workbook_id | No | The workbook the dashboard lies in. | |
| dashboard_id | Yes | Dashboard id. | |
| include_links | No | Also say what the dashboard is linked to. | |
| include_favorite | No | Also say whether the dashboard is a favourite. | |
| include_permissions | No | Also say what the caller may do with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so safety is covered. The description adds valuable non-obvious behavior: payloads are routinely 100 KB+ and may be truncated by the client, with a concrete workaround, and that `entry.data` is the exact payload `dashboards_update` consumes.
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 tight sentences that front-load the resource and its contents before the size caveat. The CLI snippet is useful but slightly interrupts flow, and the closing line about `entry.data` is a fragment, so it is efficient rather than polished.
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 output schema, the description usefully sketches the return shape (tabs and their widgets) and the `entry.data` payload, plus the truncation risk. It stops short of covering the optional include_* enrichments or revision semantics, but the core is adequately covered.
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 branch, rev_id, workbook_id and the three include_* flags are already well documented in the schema. The description adds no additional parameter semantics (e.g. no guidance on combining branch vs rev_id), so the 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 names a concrete resource and enumerates what a retrieved dashboard contains (tabs, charts, selectors, texts), which is far more informative than 'get'. It also implicitly ties the tool to `dashboards_update` via the `entry.data` note, giving some sibling orientation, though it does not contrast against near neighbours like `datalens_entries_list`.
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?
It gives a practical operating hint – read a large dashboard as a file via the CLI when the response exceeds what a client displays – which is genuine usage context. However, it never states when to reach for this tool versus alternatives such as `datalens_entries_list` or `datalens_workbooks_get`, so the selection guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_dashboards_updateUpdate DataLens dashboardAIdempotent
Save a dashboard as given: read it, change data, send it back whole.
DataLens does not check a revision here: a save overwrites what was saved since you read it (measured).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | `save` keeps the dashboard as a draft; `publish` shows it to all. | |
| entry | Yes | The dashboard to save: its `entryId`, `data`, `meta` and `revId`. Its schema is not listed here: read `DashboardUpdate` with schema_get(service="datalens", name="DashboardUpdate"), then the definitions it refers to. | |
| lock_token | No | The token of the lock held on the dashboard, when it is locked. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint=false and idempotentHint=true, the description still adds real value: it discloses that there is no revision check on save, so a write silently clobbers anything saved since the read (a lost-update hazard). That is a genuine behavioral trait beyond the annotation set, though it does not cover the lock_token's role or failure 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?
Two tight sentences: the first front-loads the workflow, the second front-loads the concurrency hazard. No filler, no restating of the title, and the most decision-relevant fact (overwrite on save) is not buried.
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 nested-object mutation tool with no output schema but full schema coverage and a full annotation set, the description supplies the operational model and the destructive-ish overwrite semantics. Only lock_token behavior is left entirely to the schema, which is acceptable given 100% 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 the baseline is 3, but the description adds meaning beyond the schema: `entry` must be sent back as a complete object rather than a partial patch, and `data` is the field to mutate. That clarifies the whole-object contract that the nested DashboardUpdate schema alone does not spell out.
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?
It states a specific verb+resource (save a dashboard) and immediately defines the operation as a whole-object write ("read it, change data, send it back whole"), which separates it from the sibling datalens_dashboards_get/create/delete. It does not name those siblings explicitly, so routing still relies on the name, but the mechanism is 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 prescription "read it, change ``data``, send it back whole" tells the agent the required sequence, implicitly pointing at datalens_dashboards_get as the prerequisite step. There is no explicit when-not-to-use or named alternative, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_datasets_createCreate DataLens datasetA
Create a dataset in a workbook and return it with its id.
A dataset with no source and no field is valid: create it empty, then fill it with
datasets_update.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The dataset's name. | |
| rev_id | No | The revision. | |
| dataset | Yes | What the dataset holds: sources, their joins, fields. An empty one is valid. Its schema is not listed here: read `DatasetContent` with schema_get(service="datalens", name="DatasetContent"), then the definitions it refers to. | |
| options | No | What the editor may do with it. | |
| preview | No | Whether it is a preview. | |
| dir_path | No | The folder to create it in (old placement model). | |
| saved_id | No | The saved revision. | |
| created_via | No | How it is created: `user` or `workbook_copy`. | |
| workbook_id | No | The workbook to create it in. | |
| published_id | No | The published revision. | |
| collection_id | No | The collection to create it in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the write/non-destructive profile is covered. The description adds the useful nuance that an empty dataset is legal and that the created entry is returned with an id, but it says nothing about permission requirements or which of the mutually exclusive placement fields is required.
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 short sentences, front-loaded with the action and return value, then the empty-dataset nuance. No filler 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?
With 11 parameters, nested objects, and no output schema, the description is adequate but thin: it defers the DatasetContent shape to schema_get (as the schema itself instructs) and never clarifies the alternative placement parameters. An agent can call it, but traversal guidance is incomplete.
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 11 parameters; baseline is 3. The description adds no parameter-level detail (e.g., workbook_id vs collection_id vs dir_path selection, or what goes into options) beyond what the schema states.
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?
States a specific verb and resource ('Create a dataset in a workbook') and notes the return value (its id). It implicitly separates itself from the mutating sibling by pointing to datasets_update for filling content, though it offers no explicit differentiation from other create-family 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?
Gives a concrete usage pattern: an empty dataset is valid, create it first and populate it later with datasets_update. That is real guidance about sequencing, though it never states when this tool should not be used or which placement parameter (workbook_id vs collection_id vs dir_path) applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_datasets_data_getRead rows of a DataLens datasetARead-onlyIdempotent
Rows of a dataset: the columns asked for, one page per call.
Columns are named by the guid of a field, not by its title: read them with
datasets_get. For the next page give offset together with sort.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | The order of the rows: a field's guid and `asc` or `desc`. | |
| limit | No | The most rows to return; 100 when left out. | |
| offset | No | How many rows to skip; above zero it needs `sort`. | |
| params | No | Values for the dataset's parameters. | |
| columns | Yes | The guids of the fields to return (`dataset.result_schema[].guid`). | |
| filters | No | The rows to keep: a field's guid, an operation and its values. | |
| dataset_id | Yes | Dataset id. | |
| workbook_id | No | The workbook the dataset lies in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuine behavioral context beyond that: results are paginated (one page per call) and advancing pages requires offset combined with sort, which is a real pagination constraint the agent needs.
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 tight sentences with zero waste. The core scope is front-loaded and the two operative constraints (guid-based columns, offset+sort paging) follow 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?
For an 8-parameter read tool with full schema coverage and no output schema, the description covers the two non-obvious behaviors an agent needs (guid naming and pagination coupling). It does not describe the shape of returned rows, which is a minor gap given there is no output schema to lean on.
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, but the description adds actionable meaning by clarifying that columns are identified by field guid rather than title and by pointing to datasets_get as the source of those guids. This resolves a likely confusion that the raw schema alone does not preempt.
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?
States a concrete verb+resource ('Rows of a dataset') and immediately scopes it to 'the columns asked for, one page per call', which tells the agent this is a paginated row reader, not a metadata fetch. It references the sibling datasets_get for column guids, giving some sibling differentiation, though it doesn't distinguish itself from other data-reading tools like charts_data_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?
Provides real usage guidance for the mechanics (read guids via datasets_get; pass offset together with sort for the next page), but never states when to choose this tool over alternatives such as charts_data_get or sqlqueries_run. Usage context is implied rather than explicitly bounded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_datasets_deleteDelete DataLens datasetADestructive
Delete a dataset; the charts built on it lose their data.
The API has no way to bring it back, and a chart built on it keeps naming its id (measured).
| Name | Required | Description | Default |
|---|---|---|---|
| dataset_id | Yes | Dataset id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, so safety is partly covered. The description adds genuine value beyond that: charts built on the dataset lose their data, the deletion is irreversible ('no way to bring it back'), and a dangling id remains referenced by charts. The odd '(measured)' phrasing dilutes the last point but the substance is there.
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 first sentence is well front-loaded and earns its place. The second sentence is garbled ('a chart built on it keeps naming its id (measured)') and its intent is hard to parse, which undercuts the otherwise tight structure.
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 single-param destructive operation with no output schema, the description covers the crucial agent-relevant facts: irreversibility and cascading impact on dependent charts. Permission/authorization requirements are the only notable omission.
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?
Only one parameter (dataset_id) with 100% schema coverage, so the schema already documents it fully. The description adds no id format or source-of-id guidance, 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?
States a specific verb (Delete) + resource (DataLens dataset) and immediately adds the consequence for dependent charts. This clearly distinguishes it from siblings like datalens_datasets_get/create/update/validate without needing to open the schema.
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 destructive nature implies when it applies, but the description never states a when-to-use condition, prerequisites (permissions, entry locks), or an alternative to remove/reset a dataset. Usage is left largely to inference from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_datasets_getGet DataLens datasetARead-onlyIdempotent
One dataset by id: its sources, their joins and its fields.
dataset.result_schema lists the fields with their guids, which datasets_data_get
takes as columns. A source or a field of a kind this server does not know comes as it is.
| Name | Required | Description | Default |
|---|---|---|---|
| rev_id | No | The revision to read; the current one when left out. | |
| dataset_id | Yes | Dataset id. | |
| workbook_id | No | The workbook the dataset lies in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld, so the description's job is lighter. It adds a non-obvious behavioral detail: unknown source or field kinds are returned as-is rather than normalized or rejected, which an agent cannot derive from 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?
Two short sentences, front-loaded with the summary of what is returned before the cross-reference detail. The phrasing is slightly compressed but nothing is wasted.
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 output schema, the description carries the burden of explaining returns and does so by naming sources/joins/fields and the result_schema guid listing. Remaining minor gaps (pagination, error behavior) are not critical for a single-record get.
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 rev_id and workbook_id are already documented in the schema. The description adds no extra meaning about revision selection or workbook scoping, 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?
States a specific verb and resource ('One dataset by id') and enumerates exactly what the result contains (sources, joins, fields). This distinguishes it from datalens_datasets_data_get and other dataset siblings without needing the schema.
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?
It references datasets_data_get and the relationship between result_schema guids and its columns, which implies the division of labor (metadata here, data there). However, there is no explicit when-to-use/when-not guidance or prerequisite statement, leaving the routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_datasets_updateUpdate DataLens datasetAIdempotent
Save a dataset as given: read it, change what it holds, send it back whole.
data.dataset replaces the content. Check a change first with datasets_validate.
Read the dataset again after every save: content of an older revision is refused.
The reply holds the content and the revisions; its id is null (measured).
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | The content to save (`dataset`) and how (`mode`: `save` or `publish`). Its schema is not listed here: read `DatasetUpdate` with schema_get(service="datalens", name="DatasetUpdate"), then the definitions it refers to. | |
| dataset_id | Yes | Dataset id. | |
| workbook_id | No | The workbook the dataset lies in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=true, destructive=false, so the safety bar is partly met. The description goes further, disclosing optimistic-concurrency behavior (older revisions are refused), the need to re-read after saving, and what the reply contains, which is meaningful context beyond 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?
Three short, front-loaded sentences with no filler; the core action leads and the workflow caveats follow. The parenthetical '(measured)' and heavy backtick usage are slightly cryptic but do not bloat the text.
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 output schema, the description carries the return-value burden and partially does so ('the reply holds the content and the revisions; its id is null'). It also covers revision conflicts and the validate workflow, though the ``publish`` vs ``save`` mode of the nested ``data`` object is left entirely to the referenced schema.
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 ``data`` parameter already points to ``schema_get`` for the ``DatasetUpdate`` type, so the schema does the heavy lifting. The description only reinforces that the ``dataset`` key replaces content, adding marginal meaning over the schema 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 a specific verb and resource — saving a dataset by reading it, changing it, and returning it whole — and explicitly declares that ``data.dataset`` replaces the content. It differentiates from siblings by naming ``datasets_validate`` as the pre-check tool, so an agent can tell it apart from create/validate/delete without inspecting schemas.
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?
It gives concrete workflow context: validate a change first with ``datasets_validate``, and re-read the dataset after every save because older-revision content is refused. This is rich, actionable guidance, though it stops short of naming when-not-to-use cases or contrasting with ``datalens_datasets_create`` for net-new datasets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_datasets_validateValidate DataLens datasetARead-onlyIdempotent
Check a dataset, or changes to it, without saving anything.
The reply is the dataset as it would be, with code, message and dataset_errors.
Give the content as last read: after a save, content of an older revision is refused.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | The content to check (`dataset`) and the changes to try on it (`updates`). Its schema is not listed here: read `DatasetValidate` with schema_get(service="datalens", name="DatasetValidate"), then the definitions it refers to. | |
| dataset_id | Yes | Dataset id. | |
| workbook_id | No | The workbook the dataset lies in. | |
| binded_dataset_id | No | A dataset bound to this one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so the safety profile is covered. The description adds real behavioral value the annotations don't: the reply shape (code, message, dataset_errors) and the stale-revision refusal condition.
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?
Three short sentences with the no-save guarantee front-loaded and no padding. Efficient and well ordered, though the final clause is terse enough to need a second read.
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?
No output schema exists, but the description compensates by naming the three response fields, and it explains the no-persistence and revision constraints. The nested data object's shape is deferred to schema_get (documented in the schema, not the description), leaving a minor 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?
Schema description coverage is 100%, so the schema already documents all four parameters, including the pointer to DatasetValidate via schema_get. The description reinforces the 'as last read' freshness expectation for the data payload but adds no field-level syntax beyond the schema; 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?
States a specific verb and resource ('Check a dataset, or changes to it') and adds the key scope qualifier 'without saving anything,' which cleanly separates it from datalens_datasets_update/create. An agent can identify this as a dry-run validation without opening the schema.
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?
Strong implied usage: validate before persisting, and the revision-freshness rule ('after a save, content of an older revision is refused') tells the agent exactly when a call will fail. No sibling is named as an explicit alternative (e.g., datalens_datasets_get), so it falls just short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_embeddingsecrets_createCreate DataLens key for embeddingA
Make a key for embedding and return its id and its private key.
The private key is given once: embeddingsecrets_get and embeddingsecrets_list do not
return it. It comes in this tool's result, so it enters your context: hand it to the person
at once, and do not repeat it in later messages.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The name of the key. | |
| workbook_id | Yes | The workbook the key belongs to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing a critical behavioral trait: the private key is returned only once and never again by get/list, and it enters the agent's context. This is exactly the kind of non-obvious, security-relevant behavior that annotations (readOnlyHint/openWorldHint/idempotentHint) cannot convey.
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, zero filler. The purpose and return value are front-loaded, and the key-handling warning follows immediately after.
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?
There is no output schema, so the description must explain return values — and it does (id and private key). Combined with the handling instructions, an agent has everything needed to call this safely and 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% (title and workbook_id are both documented), so the schema already carries parameter meaning. The description adds nothing about parameter formats or constraints, so the 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?
States a specific verb and resource ('Make a key for embedding') and names exactly what it returns ('its id and its private key'). It also implicitly distinguishes itself from the sibling read tools by noting that embeddingsecrets_get/list do not return the private key.
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?
Gives operational context for using the tool's output ('hand it to the person at once, and do not repeat it in later messages'), which is real usage guidance. It does not, however, explicitly state when to prefer this over alternatives like datalens_embeds_create or the other secrets tools beyond the one negative note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_embeddingsecrets_deleteDelete DataLens key for embeddingBDestructive
Delete a key for embedding. Deleting again answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| embedding_secret_id | Yes | Id of the key for embedding. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered. The description adds one genuine behavioral fact beyond that: a repeated delete returns 404, which corroborates the non-idempotent hint. It says nothing about required permissions or side effects on embeddings that use the key.
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 very short sentences, front-loaded with the action and followed by the one notable edge case. No filler or redundant restatement of the tool name.
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 single-parameter delete whose annotations already convey destructiveness and non-idempotency, the description is nearly sufficient. It could be more complete by noting whether dependent embeds break or whether special permissions are needed, but nothing required to invoke it correctly is 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?
Schema description coverage is 100% and there is a single parameter whose meaning is fully documented in the schema, so the baseline of 3 applies. The description adds no additional semantics about the embedding_secret_id beyond what the schema already states.
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 (Delete) and resource (a key for embedding), so the intent is unambiguous. It does not explicitly contrast itself with the sibling embeddingsecrets_get/list/create tools, but the name and phrasing make it distinguishable without opening a schema.
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?
There is no explicit guidance on when to use this tool versus alternatives (get/list/create) or what prerequisites exist before deletion. The only routing-like information is the 404 note, which is a post-condition rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_embeddingsecrets_getGet DataLens key for embeddingARead-onlyIdempotent
One key for embedding: its name, its workbook, who made it. Never its private key.
| Name | Required | Description | Default |
|---|---|---|---|
| embedding_secret_id | Yes | Id of the key for embedding. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description goes beyond them by disclosing a meaningful behavior: the private key is never returned, which is genuinely useful for an agent deciding what data to expect and whether a follow-up call is needed.
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 tight clauses with the return content front-loaded and the security caveat last. It is efficient and wastes no words, though the clipped phrasing is slightly less readable than a full sentence.
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 output schema, the description usefully enumerates the returned fields and explicitly notes the omission of the private key, and the annotations carry the read-only/idempotent semantics. For a single-parameter get tool this is close to complete, with only usage routing and error behavior left unaddressed.
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 embedding_secret_id parameter, so the schema already documents it fully. The description adds no additional syntax, format, or sourcing detail beyond that, making the baseline 3 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 it returns a single embedding key and enumerates its fields (name, workbook, author), which clearly distinguishes it from the plural datalens_embeddingsecrets_list sibling. The retrieval verb is implied by the name/title rather than stated, so it falls just short of a fully self-contained purpose statement.
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?
There is no explicit when-to-use guidance, no mention of prerequisites, and no reference to the alternatives. The agent must infer that this is the by-id retrieval counterpart to datalens_embeddingsecrets_list and datalens_embeddingsecrets_delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_embeddingsecrets_listList DataLens keys for embeddingBRead-onlyIdempotent
The keys for embedding of a workbook, without their private keys.
| Name | Required | Description | Default |
|---|---|---|---|
| workbook_id | Yes | Workbook id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint, so the safety profile is covered. The description adds a genuinely useful behavioral detail beyond annotations: returned keys omit their private keys, which tells the agent what it will and won't get back.
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 compact clause with the key information front-loaded. It is a fragment rather than a full sentence, but every word earns its place and there is no 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 one-parameter read-only list tool with no output schema, the description covers the core purpose but leaves gaps: no guidance on alternatives and no mention of which workbook-scoped key list gets returned. Adequate but with clear room to do more.
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 single workbook_id parameter is documented. The description only implies the workbook scoping ('of a workbook') and adds no syntax or format detail beyond the schema, 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?
States a clear verb (list) and resource (embedding keys for a workbook), and adds an informative qualifier that the keys exclude private keys. It does not, however, distinguish this list tool from its close sibling datalens_embeddingsecrets_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?
No indication of when to use this tool versus datalens_embeddingsecrets_get, datalens_embeds_list, or datalens_embeddingsecrets_create. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_embeds_createCreate DataLens embedB
Embed an entry and return the embed.
The key for embedding is one of the workbook the entry lies in (embeddingsecrets_list).
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The name of the embed. | |
| deps_ids | No | The entries the embedded one depends on. | |
| entry_id | Yes | The entry to embed. | |
| settings | Yes | The settings of the embed; an empty object is valid. | |
| private_params | No | The parameters that go signed, inside the token. | |
| unsigned_params | No | The parameters a link may carry unsigned. | |
| public_params_mode | Yes | Whether the default mode of parameters is on. | |
| embedding_secret_id | Yes | The key for embedding that signs its links. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description only adds that it returns the embed; it says nothing about permissions, what preconditions exist, or side effects, so it adds little beyond the structured hints.
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 short sentences with the core action front-loaded, which is good. However the second sentence is grammatically broken ('the key for embedding is one of the workbook the entry lies in') and its referent/parenthetical are hard to parse, costing clarity rather than adding 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 non-idempotent create tool with 8 parameters (5 required) and no output schema, the description is thin: it omits the workflow for obtaining an embedding secret or how the created embed is used. Annotations plus full schema coverage make it minimally usable, but a richer description would be warranted.
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 eight parameters and nested settings. The description only gestures at the embedding_secret_id constraint ('the key ... is one of the workbook the entry lies in'), and does so in a garbled way that does not clearly add meaning 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?
States a specific verb and resource: it embeds an entry and returns the resulting embed, which lets an agent distinguish it from the sibling datalens_embeds_list/update/delete operations. The phrasing is slightly circular with the tool name, but the resource ('an entry') and the returned artifact are named.
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?
There is no explicit when-to-use statement or exclusion, but the second sentence points at datalens_embeddingsecrets_list as the source of the required key, giving an implied prerequisite/workflow. An agent can infer usage but receives no guidance on when this should be preferred or avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_embeds_deleteDelete DataLens embedADestructive
Delete an embed; its links stop working. Deleting again answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| embed_id | Yes | Embed id, from ``embeds_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, but the description adds real value beyond them: it discloses the side effect on generated links and specifies that a second delete fails with 404 rather than silently succeeding. It does not cover permissions or whether removal is permanent.
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 brief clauses, zero filler, with the core action and its effect front-loaded and the error behavior trailing. 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 single-parameter delete tool with a full annotation set and no output schema, the description supplies the two things an agent most needs: the consequence of deletion and the repeat-call behavior. Only authorization/permanence details are absent.
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 single embed_id parameter is already documented in the schema as coming from embeds_list, so the description correctly does not duplicate it. Baseline 3 applies since the schema carries the full parameter burden.
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?
States a specific verb and resource ("Delete an embed") plus the immediate consequence ("its links stop working"), which unambiguously separates it from the embeds_list/create/update siblings. It stops short of naming a sibling or its scope, so it is clear but not maximally differentiated.
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 destructive intent makes the usage context obvious, and the note that a repeat call returns 404 helps an agent avoid retry loops. However, there is no explicit when-to-use, when-not-to-use, or permission prerequisite stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_embeds_listList DataLens embedsBRead-onlyIdempotent
The embeds of one entry: where a chart or a dashboard is shown on another site.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | Yes | The id of the entry that is embedded. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered and the description does not contradict it. The description adds domain context for what an embed is, but says nothing about result volume, pagination, or permissions. Adequate but not rich against the lower annotation-covered bar.
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 that defines the resource before its qualifier, with no filler. It is tight, though it spends its one clause on a definition rather than on operational 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?
For a one-parameter, read-only list tool with no output schema and full safety annotations, the description covers the essentials. It still omits any notion of what a returned embed contains or whether results are paginated, leaving a minor gap for an agent planning the call.
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 single parameter entry_id is fully documented in the schema as 'the id of the entry that is embedded'. The description's mention of 'one entry' merely restates this, adding no format or sourcing detail, so the 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 names the resource (embeds) and scopes it to a single entry, plus explains what an embed is ('where a chart or a dashboard is shown on another site'), which distinguishes it from the sibling verbs embeds_create/update/delete. It does not differentiate from adjacent list tools such as datalens_workbooks_entries_list, so it stops short of 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?
There is no statement of when to use this tool versus alternatives, no prerequisites, and no exclusions. Usage must be inferred from the phrase 'of one entry', which implies an entry_id is required but gives no guidance on choosing this list over, say, entries_list or workbooks_entries_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_embeds_updateUpdate DataLens embedAIdempotent
Save an embed as given and return it.
The embed is replaced whole: read it with embeds_list and send back what is to stay; a
list left out is saved empty.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The name of the embed. | |
| deps_ids | No | The entries the embedded one depends on. | |
| embed_id | Yes | Embed id, from ``embeds_list``. | |
| settings | Yes | The settings of the embed; an empty object is valid. | |
| private_params | No | The parameters that go signed, inside the token. | |
| unsigned_params | No | The parameters a link may carry unsigned. | |
| public_params_mode | Yes | Whether the default mode of parameters is on. | |
| embedding_secret_id | Yes | The key for embedding that signs its links. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations covering safety (readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description adds important behavioral context: the update is a whole replacement, and omitted lists are saved empty. This is crucial and not inferable from annotations or 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 sentences, front-loaded with the core action and then the key replacement semantics. No wasted words; the structure is efficient and clear.
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 schema (8 params, 100% coverage), annotations covering safety, and no output schema, the description covers the essential update semantics. It doesn't mention error handling or permissions, but those are minor for this tool's 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 coverage is 100%, so baseline is 3. The description adds meaning for list-type parameters (deps_ids, private_params, unsigned_params) by explaining that a list left out is saved empty, which affects how agents should construct payloads. This is a useful addition 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 says 'Save an embed as given and return it' and then clarifies replacement, but it never explicitly states this is an update operation or distinguishes it from datalens_embeds_create. The verb 'Save' is ambiguous, and the title carries the update intent rather than the description. An agent might confuse it with a create-like save.
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 prerequisite workflow ('read it with embeds_list and send back what is to stay') but offers no explicit when-to-use or when-not-to-use guidance relative to siblings like datalens_embeds_create or datalens_embeds_delete. It is implied usage rather than clear routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_entries_listFind DataLens entriesARead-onlyIdempotent
Entries across the whole organization: dashboards, charts, datasets, connections.
The API requires one of scope, scopes and ids. An entry the caller may not read
comes with isLocked set and little else. Auto-paginated; capped at the configured item
cap unless limit is given.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Keep the entries with these ids. | |
| type | No | Keep these types of entries. | |
| limit | No | Max entries to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| scope | No | Keep one kind of entry. | |
| scopes | No | Keep several kinds of entries. | |
| filters | No | Keep the entries whose name has a text. | |
| order_by | No | What to sort by and in which direction. | |
| created_by | No | Keep what these users created. | |
| include_data | No | Also give the content of each entry (large). | |
| include_links | No | Also say what each entry is linked to. | |
| exclude_locked | No | Leave out the entries the caller may not read. | |
| ignore_shared_entries | No | Leave out the shared entries. | |
| ignore_workbook_entries | No | Leave out the entries that lie in workbooks. | |
| include_permissions_info | No | Also say what the caller may do with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), and the description still adds genuine behavior: unreadable entries return with isLocked and almost no other fields, results are auto-paginated, and output is capped at the configured item cap unless limit overrides it. Those are non-obvious traits an agent could not derive from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the resource and scope, then the invocation constraint, then return/pagination behavior. No filler, and the most important constraint appears before the edge-case 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 14-parameter read tool with no output schema, the description covers the essential constraints and the locked-entry return quirk, while the schema documents every parameter including include_data's 'large' warning. It stops short of naming the workbook-scoped or collections-content alternatives, which an agent scanning ~300 siblings would likely want.
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, but the description adds meaning beyond the schema by stating the one-of scope/scopes/ids requirement that the schema's empty required list contradicts, and by explaining that limit overrides the global cap rather than merely bounding the page.
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 names the resource (entries), enumerates concrete types (dashboards, charts, datasets, connections) and fixes the scope as 'across the whole organization'. That scope statement implicitly separates it from the sibling datalens_workbooks_entries_list, but the alternative is never named, so the differentiation is left for the agent to infer.
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?
It supplies a real prerequisite that the schema does not encode: the API requires one of scope, scopes or ids even though the input schema marks nothing as required. There is no explicit when-not or named alternative (e.g. the workbook-scoped sibling), which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_entries_permissions_getGet DataLens permissions on entriesARead-onlyIdempotent
What the caller may do with each entry, as a map by id.
An entry that does not exist gives error: "NOT_FOUND" under its id.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_ids | Yes | Entry ids. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds useful behavioral detail about missing entries returning error NOT_FOUND under their id, which is beyond what the annotations provide.
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 consists of two tight sentences with the core output shape front-loaded and the not-found behavior immediately after. There is no wasted wording.
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 read-only annotations, complete parameter schema, and absence of an output schema, the description is largely sufficient. It explains the return shape as a map by id and covers a key error case, though it could more explicitly state what the permission values represent.
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 entry_ids parameter, so the schema already carries the full parameter documentation. The description adds no additional syntax or format details for entry_ids, making the baseline 3 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 resource (entries) and the result (a map by id of what the caller may do), which effectively describes permissions retrieval. It does not, however, distinguish this tool from related permission or entry-listing siblings such as datalens_permissions_get_bulk or datalens_entries_list.
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 datalens_permissions_get_bulk or datalens_audit_entry_permissions_get. It only describes the output, 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.
datalens_entries_relations_listList what DataLens entries use or are used byARead-onlyIdempotent
What entries use (a chart's dataset, a dataset's connection) or what uses them.
Use it before changing or deleting an entry, to see what depends on it. Auto-paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max relations to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| scope | No | Keep one kind of related entry. | |
| entry_ids | Yes | Entry ids. | |
| link_direction | No | `from`: what the entries use; `to`: what uses them. | |
| include_permissions_info | No | Also say what the caller may do with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and idempotentHint=true, so safety and idempotency are covered. The description adds 'Auto-paginated' and the dependency-check use case, but does not disclose return shape, permission implications, or other behavioral details beyond that.
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?
Three short, front-loaded sentences with no filler. Purpose, usage timing, and pagination behavior are each stated compactly and nothing is repeated unnecessarily.
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 5-parameter read-only list tool with full schema descriptions and annotations, the description covers purpose, when to call it, and pagination. It stops short of describing the returned relation structure, but the absence of an output schema makes that a minor gap rather than a critical omission.
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 schema fully documents the limit, scope, entry_ids, link_direction and include_permissions_info parameters. The description's first sentence loosely echoes the link_direction concept but adds no syntax, defaults, or meaning beyond 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?
States a specific verb and resource: listing what DataLens entries use or are used by, with concrete examples (chart's dataset, dataset's connection). This dependency-relation purpose is clearly distinct from sibling list tools like datalens_entries_list or datalens_entries_revisions_list, even without naming them.
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?
Explicitly says to use it before changing or deleting an entry to see what depends on it, which gives clear context for when to invoke it. It does not name alternative tools or when-not to use it, so it falls short of full 5-level routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_entries_renameRename DataLens entryAIdempotent
Give an entry another name; its id and what refers to it stay.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The new name. | |
| entry_id | Yes | Entry id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false, so safety/idempotency is covered by structure. The description adds genuine behavioral value beyond that: it states the entry id and inbound references survive the rename, ruling out referential breakage an agent might otherwise worry about.
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 tight sentence that front-loads the action and appends the one non-obvious guarantee. Nothing redundant or padded.
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 2-parameter mutation with full schema coverage, no output schema, and annotations carrying the safety profile, the description covers what an agent needs. It could state permission requirements, but nothing essential is 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?
Schema description coverage is 100% (both entry_id and name are documented inline), so the baseline is 3. The description adds no extra parameter meaning -- no id format, no name uniqueness or length constraints.
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?
Specific verb (rename) plus resource (DataLens entry) makes the operation unmistakable. No sibling offers renaming, so ambiguity is low, but the description does not explicitly differentiate itself from the other datalens_entries_* tools the way a 5 would.
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 only implied: an agent infers you call this when you want to change an entry's display name. There is no explicit when-to-use, no prerequisite (e.g. ownership/permission) statement, and no mention of alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_entries_revisions_listList DataLens entry revisionsARead-onlyIdempotent
The revisions of an entry: who saved it and when. Auto-paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max revisions to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| rev_ids | No | Keep only these revisions. | |
| entry_id | Yes | Entry id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description earns its keep by disclosing 'Auto-paginated', a behavioral trait absent from the annotations, and by describing the returned facts (author and timestamp).
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 short sentence-fragment, front-loaded with the resource and the returned content, with no filler. It is tight, though arguably too terse to be fully instructive.
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 3-parameter read tool with no output schema, the description at least characterizes the return shape (who saved it and when) and mentions auto-pagination. It does not explain ordering, whether limit caps pagination, or how rev_ids interacts with pagination, leaving modest 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 description coverage is 100%, so entry_id, limit and rev_ids are already documented in the schema, including the MAX_ITEMS cap and the rev_ids filter. The description adds nothing parameter-specific beyond the pagination hint, so the 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?
States a specific verb and resource ('revisions of an entry') and adds the payload semantics ('who saved it and when'), so the agent knows it returns authorship metadata. It does not differentiate from the sibling wiki_pages_revisions_list, which is a different resource, but within DataLens it is 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?
Usage is implied by the phrasing: fetch revision history for a known entry_id. There is no explicit when-to-use/when-not guidance and no pointer to a related tool such as datalens_audit_entries_updates_list, which an agent might plausibly confuse with revision history.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_entrylocks_createLock a DataLens entryA
Lock an entry (a dataset, a chart, a dashboard) for editing.
The reply holds the token of the lock and nothing else: keep it, extending and releasing the lock take it. An entry that is already locked answers 423 with who holds the lock and until when.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | How long to hold the lock, in milliseconds. | |
| entry_id | Yes | Entry id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the operation profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=true), and the description goes further by disclosing the exact return contract (only a lock token), the obligation to retain it, and the failure semantics (423 plus holder identity and expiry when already locked). It stops short of stating permission/auth requirements, which keeps it out of 5 territory.
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 short sentences: the first is the purpose, the second is the return/error contract. Nothing is redundant and the most important fact (what you get back and why it matters) is front-loaded immediately after the 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?
With no output schema, the description correctly fills the gap by describing the response (token only) and the 423 already-locked case. Combined with the fully-covered input schema and annotations, this is nearly complete; only auth/permission prerequisites and the concurrency expectations around force are left unstated.
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 – entry_id, force, and duration are already documented inline. The description reinforces the semantics of the response token that force/duration interact with ('keep it, extending and releasing the lock take it'), but adds no syntax or defaulting 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 states a specific verb and resource ('Lock an entry') and enumerates the resource types (dataset, chart, dashboard), which lets an agent distinguish it from the sibling lock-lifecycle tools datalens_entrylocks_extend and datalens_entrylocks_delete without opening a schema.
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 rather than stated: locking before editing is the natural reading, and the mention that 'extending and releasing the lock take it [the token]' hints at the relationship to the extend/delete siblings. But there is no explicit 'use this when... / use X instead when...' routing, and the force-replaces-existing-lock path is only documented in the schema, not framed as a usage decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_entrylocks_deleteRelease the lock of a DataLens entryADestructive
Release a lock; with force it releases a lock another editor holds.
An entry that is not locked answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes | The token of the lock, or `force` for another's lock. | |
| entry_id | Yes | Entry id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds genuinely new behavior: that `force` overrides another editor's lock and that an unlocked entry returns 404, both useful beyond 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?
Two tight sentences, front-loaded with the action, and the edge-case behavior (404) packed in without filler. Every 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?
For a mutation tool with no output schema, the description covers the destructive force path and the unlocked-entry error, which is most of what an agent needs. It could still note permission requirements or what a successful release returns, but it is largely 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 baseline is 3. The description goes beyond the schema's terse "Whether to force lock deletion" by explaining the consequence of `force` (removing another editor's lock), giving real 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 states a specific verb and resource ("Release a lock") and qualifies scope with `force`. It clearly separates this from the sibling lock operations (create/extend) by describing what release does and what happens when the entry is not locked.
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?
It gives a clear condition that selects the `force` mode (releasing a lock another editor holds), which is actionable guidance. It does not, however, name or contrast against the sibling tools such as datalens_entrylocks_extend, so the when-to-use-this-vs-alternative aspect is only partially covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_entrylocks_extendExtend the lock of a DataLens entryBIdempotent
Hold a lock longer; the reply says when it expires now.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | The token of the lock and its new terms. | |
| entry_id | Yes | Entry id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state the tool is non-read-only, open-world, idempotent, and non-destructive. The description adds one behavioral detail—that the reply reports the new expiration time—but does not cover permissions, side effects, or other operational constraints.
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 clauses with no wasted words, and the core action is 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?
With annotations covering safety and schema covering parameters, the main remaining gaps are usage context and richer behavioral details. The single sentence about the reply adds some value but leaves the definition minimally viable.
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 entry_id, lockToken, duration, and force. The description adds no parameter-specific information, which is acceptable given the high 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 action ('hold a lock longer') and the title reinforces it as extending a DataLens entry lock. It is clear enough to identify the operation, though it does not explicitly distinguish itself from sibling lock operations like create or delete.
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 given about when to use this tool versus alternatives such as creating or deleting locks. The agent is left to infer the context from the name and title alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_htmlpages_createCreate DataLens HTML pageB
Create an HTML page; the reply has it under entry and warnings about its HTML.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | The page's key, in a folder. | |
| name | No | The page's name, in a workbook. | |
| content | Yes | The HTML of the page. | |
| annotation | No | A description of the page. | |
| workbook_id | No | The workbook to create the page in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose the write/side-effect profile (readOnlyHint=false, idempotentHint=false, openWorldHint=true), so the bar is lower. The description does add genuinely useful return-shape context — the created page under 'entry' and HTML validation feedback under 'warnings' — but says nothing about required permissions, side effects, or what happens on invalid HTML beyond warnings.
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?
One short sentence, front-loaded with the action and followed by the return-shape hint; no filler. It is perhaps too terse given the tool's complexity, but every clause carries 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?
With no output schema, the description's mention of 'entry' and 'warnings' is valuable, and annotations cover the safety profile. Still missing key context: the 'content' parameter is required HTML, placement in a workbook/folder matters, and nothing explains the relationship to the get/update/delete siblings.
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 every parameter (key, name, content, annotation, workbook_id) is already documented in the schema. The description adds no parameter-level syntax, format, or defaulting guidance, 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?
States a specific verb and resource ('Create an HTML page'), which is clear and unambiguous. However, it does not differentiate from the many sibling tools, notably datalens_htmlpages_get/update/delete, beyond the bare verb.
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?
There is no guidance on when to use this versus datalens_htmlpages_update or datalens_workbooks_create, nor any mention of prerequisites such as needing a workbook_id or permissions. Usage must be inferred entirely 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.
datalens_htmlpages_deleteDelete DataLens HTML pageCDestructive
Delete an HTML page.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | Yes | Entry id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, readOnlyHint=false, and openWorldHint=true, so the safety profile is covered by structured data. The description adds nothing beyond that — no statement about permanence, cascading effects on dependent dashboards, or required authorization. It neither contradicts nor enriches 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?
A single short, front-loaded sentence — structurally clean with no padding. It is arguably too terse for a destructive operation, but there is no waste to trim.
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 delete with rich annotations and no output schema, the description is technically sufficient to invoke the tool. It is missing any warning about irreversibility or side effects, which is material for a destructive operation, but annotations carry the core safety signal.
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 entry_id parameter, so the schema carries the parameter meaning and baseline 3 applies. The description 'Entry id.' in the schema is itself minimal, but the description text adds nothing 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 states a specific verb and resource ('Delete an HTML page'), so the operation is unambiguous. However, it is essentially a restatement of the tool name/title minus the vendor prefix and adds no distinguishing detail versus siblings like datalens_htmlpages_update or datalens_htmlpages_preview_url_get. Minimum viable rather than genuinely helpful.
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?
There is no guidance on when to use this tool, no mention of prerequisites or permissions, no warning about irreversibility, and no reference to alternatives (e.g. update vs delete). The agent gets zero routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_htmlpages_getGet DataLens HTML pageARead-onlyIdempotent
One HTML page: where it lies and its revisions.
The reply has no HTML of the page; htmlpages_preview_url_get gives a link that shows
it. entries_list with the scope artifact finds the pages.
| Name | Required | Description | Default |
|---|---|---|---|
| branch | No | The version to read when no revision is named: `saved` or `published`. | |
| rev_id | No | One revision, as it is; give it or `branch`, not both. | |
| entry_id | Yes | Entry id. | |
| include_favorite | No | Also say whether the page is a favourite. | |
| include_permissions | No | Also say what the caller may do with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, so the safety profile is covered. The description adds a key behavioral detail: the response contains no HTML body, which prevents a likely agent misjudgment. However it doesn't describe what the response does contain (layout location, revisions) in more depth, nor revision resolution behavior beyond 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 short sentences with zero filler, front-loaded with the core return description and followed by the critical disambiguation. Every 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?
For a read-only getter with a fully documented schema and clear annotations, the description covers the main gotcha (no HTML returned) and the discovery path. It lacks detail on the revision model or response shape, but an output schema is absent so some ambiguity remains around what exactly is returned.
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 five parameters (entry_id, branch, rev_id, include_favorite, include_permissions) are documented in the schema. The description adds nothing about parameter syntax or the branch/rev_id mutual exclusion beyond what the schema states. 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?
States a specific verb and resource ('One HTML page: where it lies and its revisions') and distinguishes from the preview tool. It is clear what is returned, though it doesn't explicitly name the datalens_htmlpages_get siblings (create/update/delete) since the verb+resource already disambiguates.
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?
Explicitly states when to use this tool versus alternatives: 'The reply has no HTML of the page; htmlpages_preview_url_get gives a link that shows it' and routes to entries_list with the artifact scope for discovering pages. Clear when-to-use and named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_htmlpages_preview_url_getGet a preview link of a DataLens HTML pageCRead-onlyIdempotent
A temporary signed link that shows the page; it stops working after a while.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language of the preview: `en` or `ru`. | |
| theme | No | Theme of the preview. | |
| branch | No | The version to read when no revision is named: `saved` or `published`. | |
| rev_id | No | One revision, as it is; give it or `branch`, not both. | |
| entry_id | Yes | Entry id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds genuinely useful context beyond that by disclosing that the link is signed, temporary, and expires ('stops working after a while'), though the TTL is left vague and nothing is said about permissions or the shape of the returned URL.
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 efficient sentence with the key caveat front-loaded and no filler. It is slightly under-sized for a five-parameter tool, but there is no wasted text.
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 output schema, the description usefully characterizes the return value as a signed, expiring link. However, for a tool with five parameters covering language, theme, and revision selection, it omits how the link should be used or how branch/rev_id affect it, leaving the picture only partially 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 all five parameters (lang, theme, branch, rev_id, entry_id) are already documented in the schema, including the branch/rev_id exclusivity note. The description adds no parameter meaning, so the 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 is a noun phrase describing the artifact ('A temporary signed link that shows the page') rather than stating the action. Combined with the name and title the intent is inferable, but the description itself never says it retrieves/generates a link, and it does nothing to distinguish itself from siblings like datalens_htmlpages_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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives (e.g., datalens_htmlpages_get vs. this preview tool). The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_htmlpages_updateUpdate DataLens HTML pageAIdempotent
Save new HTML of a page, or make one of its revisions the current one.
mode save makes a new revision and leaves the public one; publish shows it to
everyone. With revId, save copies that revision as the current draft.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Either new HTML, `{entryId, content, mode}`, or a revision to make current, `{entryId, revId, mode}`: one of the two, not both. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the safety bar is partly covered. The description adds genuinely new behavioral context beyond annotations: save leaves the published version untouched, publish is user-visible, and revId+save copies a revision into the current draft.
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?
Three compact sentences, front-loaded with the purpose before the mode semantics, and every clause carries information an agent needs. No filler or restatement of the title.
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 single polymorphic body parameter this is nearly complete: both oneOf branches and all three mode/enum semantics are explained, and no output schema exists to require return-value documentation. It omits only peripheral concerns such as permissions or revision-retention behavior.
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, but the description goes beyond the schema's terse 'HTML page update mode' by defining what save vs publish actually do and by clarifying the revId branch resolves to the second oneOf shape ('one of the two, not both' is also restated in 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?
States a specific verb and resource ('Save new HTML of a page, or make one of its revisions the current one') and covers both entry paths, so an agent can tell this apart from datalens_htmlpages_create/get/delete. It never names a sibling alternative explicitly, so it lands at 4 rather than 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?
Gives real mode-selection guidance: 'save' makes a new revision and leaves the public one, while 'publish' shows it to everyone, plus the revId-with-save case. That is clear when-to-use-which guidance for the two modes, though it offers no exclusions or pointers to the create/delete siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_lakehouseoperations_getGet DataLens Lakehouse operationARead-onlyIdempotent
How far an operation is: done or not, and then its error or its response.
Experimental in the DataLens API and written from its document: not measured. An id nothing knows answers 403 Permission denied, not 404: it is not a lack of rights.
| Name | Required | Description | Default |
|---|---|---|---|
| operation_id | Yes | Operation id, from making a cloud environment or a REST catalog. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuine behavioral context beyond the annotations: the tool is experimental/unmeasured, and an unknown id returns 403 Permission denied rather than 404, which is non-obvious error behavior an agent should know.
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 short sentences and no padding. The status/result semantics are front-loaded; the second sentence is useful behavioral metadata, though its phrasing ('written from its document: not measured') is a bit stilted.
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 output schema, the description carries the burden of describing the return: it says the response reports done/not-done and then error or response. Combined with the error-code disclosure, this is largely sufficient for a single-parameter status GET, though the exact response shape remains loose.
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 sole parameter's meaning ('from making a cloud environment or a REST catalog') is fully documented in the schema. The description adds nothing beyond it, 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 states the resource (an operation) and what it returns: whether it is done, plus its error or response. The phrasing 'How far an operation is' is slightly awkward but communicates the status-polling purpose; it does not explicitly distinguish itself from the many sibling *_get tools, though the operation-id semantics make it fairly identifiable.
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?
There is no when-to-use guidance, no mention of what produces the operation_id, and no routing to alternatives for other async patterns (e.g., forms_operations_get, wiki_operations_move_get). The second paragraph discusses error semantics rather than usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_licensing_licenses_assignAssign DataLens licencesA
Give each of these users a licence and return the licences given.
A licence is a seat DataLens bills for: ask the person before calling. Written from the DataLens document and never called: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| user_ids | Yes | The users to give a licence to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the bar is low; the description still adds genuine context by flagging the operation as billable ('a licence is a seat DataLens bills for') and stating it returns the licences granted. It stops short of covering revocability or repeat-call 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 first sentence is tight and front-loaded, but the trailing fragment 'Written from the DataLens document and never called: not measured.' is confusing meta-commentary that does not help an agent invoke the tool and arguably does not earn 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 single-parameter write tool with no output schema, the description covers purpose, cost, and consent, which is reasonable. It omits auth/permission requirements and what happens to already-licensed users (idempotentHint is false), leaving meaningful gaps for a billing-relevant mutation.
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?
Only one parameter exists and schema description coverage is 100%, so the schema fully documents user_ids. The description's 'each of these users' merely echoes the array semantics without adding format or constraint detail; 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?
States a specific verb+resource ('give each of these users a licence') and even describes the return ('return the licences given'). However, it never distinguishes itself from licensing siblings such as datalens_licensing_licenses_list or datalens_licensing_limit_set, so the agent gets no explicit routing help.
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 caution 'ask the person before calling' gives a real prerequisite (consent/cost), which is implied when-to-use guidance. But there is no stated alternative, no condition for choosing this over listing licences or setting the limit, and no explicit exclusion, so usage stays at a minimum-viable level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_licensing_licenses_listList DataLens licencesARead-onlyIdempotent
The licences (seats) of the DataLens instance, auto-paginated.
Each says whose it is, its type (creator or viewer), whether it is active, and when
its holder last signed in.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max licences to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| order | No | The order of the sort. | |
| status | No | Only the licences in this state. | |
| sort_by | No | The field to sort by. | |
| user_ids | No | Only the licences of these users. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered. The description goes beyond them by disclosing 'auto-paginated' behavior (a real trait, since the schema exposes no cursor/offset) and by summarizing the shape of each returned record, which matters given there is no 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?
Two short sentences, zero filler, with the core identity ('licences (seats) of the DataLens instance') and the pagination behavior front-loaded. The second sentence is a compact field enumeration rather than padding.
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?
A read-only list tool with full schema coverage and clear annotations; the description covers the one thing the schema does not, namely that results are auto-paginated and what each record contains (compensating for the absent output schema). Only the filter parameters' effect on results is left unaddressed.
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 limit, order, status, sort_by and user_ids are already documented in the schema; baseline 3 applies. The description mentions nothing about filtering by status or user, or about sort order, so it adds no meaning beyond the structured fields.
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?
States a specific verb+resource ('The licences (seats) of the DataLens instance') and enumerates the entity's fields (holder, type creator/viewer, active status, last sign-in), so the agent knows exactly what is being listed. It is clearly distinct from siblings like datalens_licensing_limit_get or datalens_licensing_licenses_assign, though it never names those alternatives to sharpen the distinction.
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 when-to-use guidance is given: nothing says when to prefer this over datalens_licensing_limit_get (the cap) or datalens_licensing_licenses_assign (seat assignment). The name implies 'list', but the description adds no context, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_licensing_limit_getGet DataLens licence limitARead-onlyIdempotent
How many licences the instance may hold: the limit in force and the one that takes over.
current carries the count of active licences; next is null when no change is set.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds real value beyond annotations by explaining the return shape: 'current' holds the active licence count and 'next' is null when no change is pending. This matters because there is no output schema, and the null-vs-present distinction is a behavioral detail an agent cannot infer otherwise.
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 short sentences with no filler, and the core answer ('the limit in force and the one that takes over') is front-loaded. The phrase 'the one that takes over' is slightly loose prose, only clarified by the following sentence naming 'next', which costs a bit of crispness.
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 zero-parameter read tool with no output schema, the description covers what is needed: the two returned concepts and the null semantics of 'next'. Remaining gaps are minor – whether any DataLens scope or permission is required to read the limit, and how this relates to the sibling set/list licence tools.
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 takes zero parameters, so the baseline is 4 and there is nothing for the description to disambiguate. No parameter confusion is possible with an empty, additionalProperties:false 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?
States a specific verb+resource: 'How many licences the instance may hold' with the notion of a limit in force and its successor. Clear read operation on a well-defined DataLens resource. It does not, however, name or contrast with the obvious sibling datalens_licensing_limit_set, so it stops short of full 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 read-only framing implies usage ('fetch the current licence limit'), and the mention of 'the one that takes over' hints at the read-before-change workflow. But there is no explicit when-to-use statement, no reference to datalens_licensing_limit_set or datalens_licensing_licenses_list as alternatives, and no stated prerequisites. Adequate but with clear gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_licensing_limit_setSet DataLens licence limitAIdempotent
Set how many licences the instance may hold and return the limits.
The limit is the number of seats DataLens bills for: ask the person before calling. Written from the DataLens document and never called: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | The most licences the instance may hold. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare that this is a non-read-only, idempotent, non-destructive write with open-world effects. The description adds billing impact and a human-confirmation requirement, which is useful context beyond the annotations, though permissions requirements remain unstated.
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 first sentence is front-loaded and clear. The second sentence contains a useful warning but also includes the cryptic phrase 'Written from the DataLens document and never called: not measured,' which is not clearly actionable and weakens the structure.
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 one-parameter write operation with full schema coverage, no output schema, and rich annotations, the description covers the essential behavior: it sets a billing-related limit, returns limits, and requires human confirmation. It is largely complete for this tool's 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 coverage is 100% and the single parameter is already documented as the most licences the instance may hold. The description adds business meaning by explaining that this value is the number of seats DataLens bills for, which clarifies the parameter beyond the schema text.
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 and resource: setting how many licences the DataLens instance may hold and returning the limits. This clearly distinguishes it from datalens_licensing_limit_get and datalens_licensing_licenses_assign.
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?
It gives one important prerequisite: ask the person before calling because the value determines billed seats. However, it does not explicitly say when to use this tool versus reading the limit with datalens_licensing_limit_get or assigning licences with datalens_licensing_licenses_assign.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_members_listList DataLens membersARead-onlyIdempotent
The users, groups and service accounts of the organization, auto-paginated.
The sub of a member is the subject id a role is given to: find it here before
collections_access_bindings_update or workbooks_access_bindings_update. Capped at
the configured item cap unless limit is given.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max members to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| filter | No | A filter expression of the API. | |
| search | No | Keep the members whose name or address has this text. | |
| tab_id | No | Keep one kind of subject. | |
| language | No | Language of the names. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description adds non-obvious behavioral detail: results are auto-paginated and capped at the configured item cap unless ``limit`` is supplied.
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?
Three short, front-loaded sentences with no filler; the resource definition leads and the workflow hint follows. Slightly dense with reStructuredText backticks, but each sentence carries 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?
With no output schema, the description does enough by defining what a member is, explaining the ``sub`` identifier, and noting pagination/cap behavior. Return-field detail beyond that is left implicit, a minor gap for a list 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 already documents all five parameters, including the limit/cap semantics. The description reinforces the cap behavior and introduces the ``sub`` concept, but adds little beyond the structured fields. 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?
States a specific verb and resource ('users, groups and service accounts of the organization') and immediately situates it relative to the access-binding update siblings. An agent can distinguish it from the many other datalens list tools without inspecting the schema.
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?
Gives concrete workflow context: use this to find a member's ``sub`` before calling ``collections_access_bindings_update`` or ``workbooks_access_bindings_update``. It names the dependent tools and the reason to use it, though it offers no explicit when-not or alternative for listing members.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_permissions_get_bulkGet DataLens permissions on many objectsARead-onlyIdempotent
What the caller may do with many entries, workbooks and collections, in one call.
Each of the three maps is keyed by id: an object the caller can see gives permissions,
one that does not exist gives error: "NOT_FOUND".
| Name | Required | Description | Default |
|---|---|---|---|
| entry_ids | No | Ids of entries. | |
| workbook_ids | No | Ids of workbooks. | |
| collection_ids | No | Ids of collections. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld), so the bar is lower. The description still adds real behavioral value: visibility-gated results (visible object returns permissions) and explicit NOT_FOUND semantics for missing objects, which an agent cannot derive from 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?
Two tight sentences with no waste; the scope statement is front-loaded before the return-shape detail. The opening 'What the caller may do' is slightly indirect for a tool that actually returns permission data, but it is efficient overall.
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?
There is no output schema, so the description must carry the return shape – and it does partially describe the three id-keyed maps and the NOT_FOUND case. It omits the actual form of a 'permissions' value (roles/permission bits), which is the main remaining gap for a bulk read 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% and the three id-array parameters are self-documenting, so baseline 3 applies. The description explains that the three maps are keyed by id, mapping inputs to response structure, but adds no format or constraint 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?
States a specific verb and resource – retrieving what the caller may do with entries, workbooks and collections – and the scope ('many ... in one call') makes the bulk nature explicit. It does not name the singular permissions-get siblings (e.g. datalens_entries_permissions_get), so the distinction is inferable rather than stated.
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?
'in one call' implies this is the batched alternative to per-object permission lookups, which is useful implied guidance. However, there is no explicit when-to-use, when-not, or named alternative, so the agent must infer the routing from the word 'bulk' alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_reports_createCreate DataLens reportA
Create a report in a workbook; the API keeps no layout of slide elements.
Measured (2026-10-06): a report made through the API loses the layout of the
elements of its slides and part of its settings, so a copy of a report read with
reports_get loses where its elements stood. Say so before making one. DataLens
refuses a report with no slide: data.slides holds at least one.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | The report's key, in a folder. | |
| data | Yes | What the report holds: its slides and its settings; it replaces the whole of it. Its schema is not listed here: read `ReportData` with schema_get(service="datalens", name="ReportData"), then the definitions it refers to. | |
| meta | Yes | Metadata of the entry; null for none. Required. | |
| name | No | The report's name. | |
| annotation | No | A description of the report. | |
| workbook_id | No | The workbook to create the report in. | |
| include_permissions | No | Also say what the caller may do with the new report. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only mark this as a non-read-only, non-idempotent write. The description goes well beyond them by disclosing that API-created reports lose the `layout` of slide elements and part of `settings`, so a later reports_get round-trip is lossy, and by adding the hard constraint that at least one slide is required. That is exactly the kind of non-obvious behavioural warning an agent needs.
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?
Purpose and the critical data-loss caveat are front-loaded, and every sentence carries information. The 'Measured (2026-10-06)' provenance line and the fragmented backtick-heavy formatting cost a little readability, but nothing is 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 mutation tool with nested objects and no output schema, it covers the riskiest unknowns (lossy layout/settings, minimum slide requirement, where to find the nested schema). It stops short of describing the creation response or permission requirements, but the essentials for a correct call are present.
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, but the description adds real meaning: it states that `data` replaces the whole report payload, points the agent at schema_get(service="datalens", name="ReportData") for the unlisted nested schema, and constrains `data.slides` to at least one entry.
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 first clause gives a specific verb and resource ('Create a report') and the scope ('in a workbook'), which cleanly separates it from datalens_reports_get/update/delete among the many siblings. An agent knows exactly what object is being produced.
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?
It supplies prerequisites (read `ReportData` via schema_get first; a report needs at least one slide) and instructs the caller to disclose the lossy behaviour before creating. However, it never states when to prefer this tool over an alternative workflow or any when-not conditions, so 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.
datalens_reports_deleteDelete DataLens reportBDestructive
Delete a report.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | Yes | Report id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, openWorldHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds no additional behavioral context such as irreversibility, permissions, cascading effects, or what happens to linked entries.
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?
One short, front-loaded sentence with no wasted words. It is appropriately sized for a simple delete tool, though its brevity contributes to gaps covered elsewhere.
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 one-parameter delete tool, the required id is fully covered by the schema and destructive behavior is covered by annotations. The description is minimal but the structured fields make it sufficient to call correctly, though it does not help with routing or prerequisites.
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 only parameter, entry_id, is fully documented by the schema as 'Report id.' with 100% schema description coverage. The description adds no syntax, format, or lookup guidance beyond the schema, so the 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?
States a specific verb (Delete) and resource (report), distinguishing it from get/create/update report siblings and delete operations on other DataLens resources. However, it adds no scope, return, or sibling-routing detail beyond the bare action, so it is clear but not fully differentiated.
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 when-to-use, prerequisites, or alternatives are given. It does not explain when to delete versus update, bulk delete, or how to obtain the entry_id, leaving usage entirely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_reports_getGet DataLens reportARead-onlyIdempotent
One report: its slides and the charts and texts on them.
entry.data and entry.meta are what reports_update takes back.
entries_list with the scope report finds reports.
A report has no branch in the API: the read answers the saved version (measured).
| Name | Required | Description | Default |
|---|---|---|---|
| rev_id | No | The revision of the report to read; the current when left out. | |
| entry_id | Yes | Report id. | |
| include_favorite | No | Also say whether the report is a favourite. | |
| include_permissions | No | Also say what the caller may do with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds a meaningful nuance about the missing branch semantics (the read answers the measured saved version), but it omits permission requirements despite having include_permissions, and does not explain revision 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 content is short but front-loaded with a sentence fragment, and the second clause mixes the update contract and the discovery route into one paragraph. No sentence is wasted, but the structure is terse and lacks clear separation of concerns.
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 4-param read tool with no output schema, the description covers discovery, the update coupling, and branch semantics, but omits what entry.data and entry.meta actually contain, how include_permissions and include_favorite affect the response, and default behavior when rev_id is null.
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 entry_id, rev_id, include_favorite, and include_permissions. The description names entry.data and entry.meta from the response, which is forward-looking rather than parameter-level, so the 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 names the resource ('One report') and enumerates its contents ('its slides and the charts and texts on them'), making the verb/resource specific. It does not directly contrast against sibling datalens_reports_update or datalens_dashboards_get, so it stops short of 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?
It gives concrete guidance by pointing to reports_update for write-through of the returned data and to entries_list with scope=report for discovery. No explicit when-not-to-use statement, but the surrounding context is rich enough for an agent to route between the three report tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_reports_updateUpdate DataLens reportAIdempotent
Save a report; it LOSES the layout of its slide elements and some settings.
DataLens does not check a revision here: a save overwrites what was saved since you read it (measured).
Measured (2026-10-06): DataLens drops them on a save through the API, without a word,
though every value is sent. Ask the person before saving an existing report. Otherwise:
read it, change data, send it back whole.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | What the report holds: its slides and its settings; it replaces the whole of it. Its schema is not listed here: read `ReportData` with schema_get(service="datalens", name="ReportData"), then the definitions it refers to. | |
| meta | Yes | Metadata of the entry; null for none. Required. | |
| mode | Yes | `save` keeps the report as a draft; `publish` shows it to all. | |
| rev_id | No | The revision of the report the change is made on. | |
| entry_id | Yes | Report id. | |
| annotation | No | A description of the report. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing what the save destroys (slide ``layout`` and some ``settings``), that no revision check is performed so concurrent writes are silently overwritten, and that the API drops fields 'without a word, though every value is sent'. This is exactly the beyond-schema behavioral context an agent needs. The data-loss warning sits awkwardly next to destructiveHint=false, but it errs on the side of caution rather than misleading the caller, so I treat it as a caveat rather than a hard annotation contradiction.
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 most important fact is front-loaded ('it LOSES the ``layout``...'), which is good. However the loss is restated in the third sentence and 'measured' appears twice (once bracketed with a date, once not), giving a slightly repetitive, informal structure that could be tightened.
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 mutation tool with six parameters, nested objects, no output schema, and open-world annotations, the description covers the critical unknowns: destructive side effects, lack of optimistic-concurrency protection, and a safe procedure. It omits only peripheral detail (permissions, return shape), which the annotation profile and the absent output schema render less important.
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 six parameters (including data, mode, rev_id, meta, annotation) are already documented in the schema. The description's mention of 'change ``data``' and the unenforced revision is useful color but adds little syntax or format meaning beyond what the schema states ('it replaces the whole of it'; 'save keeps the report as a draft; publish shows it to all'). 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?
States a concrete verb and resource ('Save a report') and immediately characterizes the scope of the write, so it reads as an update-to-existing-entry operation ('before saving an existing report'). It is distinguishable from the report siblings (get/create/delete), though it never names them explicitly.
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?
Gives clear operating context: 'Ask the person before saving an existing report' and the fallback workflow 'read it, change ``data``, send it back whole', which implies using the read tool first. It stops short of naming alternatives or an explicit when-not-to-use-this-tool rule, so it is strong but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_restcatalogs_createCreate DataLens REST catalogA
Make a REST catalog and return the operation that makes it.
It creates a bucket in a cloud, which may be billed: ask the person before calling. Ask
lakehouseoperations_get for the operation until done. Experimental in the DataLens
API, written from its document and never called: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The catalog's name. | |
| labels | No | Labels, a name to a value. | |
| description | No | A description. | |
| bucket_settings | Yes | The settings of its bucket; an empty object is valid. | |
| cloud_environment_id | Yes | The cloud environment to make it in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare non-read-only/non-idempotent/open-world; the description adds materially new context beyond them — cost/billing side effect requiring user consent, asynchronous operation semantics, and the caveat that the endpoint is experimental, written from docs, and never invoked/measured. That last point is unusually valuable for an agent deciding whether to trust the call.
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?
Front-loaded with the purpose, then the billing warning and polling workflow, then the experimental caveat — a sensible order with little waste. The phrasing "make ... the operation that makes it" is slightly awkward but not harmful.
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 output schema, the description usefully explains that the return is an operation and how to poll it, and it flags the billing side effect for this 5-param nested-object tool. Coverage is good though it does not detail the operation object's contents, which is left to lakehouseoperations_get.
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 every parameter (including the nested bucket_settings fields) is already documented in the schema. The description adds no parameter-level detail, 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 states a specific verb+resource ("Make a REST catalog") and adds a distinguishing behavioral note that it returns an async operation handle rather than the finished catalog. It does not explicitly contrast with nearby siblings like datalens_restcatalogs_list or datalens_trinoclusters_catalog_create, so sibling differentiation is only implicit.
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?
Strong, actionable guidance: it warns that a cloud bucket is created and may be billed, instructs to ask the user before calling, and directs the agent to poll lakehouseoperations_get until "done". It does not name when to prefer this over other catalog-creation tools, so it is clear context without explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_restcatalogs_listList DataLens REST catalogsARead-onlyIdempotent
The REST catalogs of the DataLens instance, auto-paginated.
Experimental in the DataLens API. An instance with none answers an empty list.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max catalogs to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| filter | No | Conditions such as ``name="…"``; only matching catalogs are kept. | |
| sort_by | No | The field to sort by. | |
| reverse_order | No | Sort the other way round. | |
| include_permissions | No | Also say what the caller may do with it. | |
| cloud_environment_id | No | Only the catalogs of this cloud environment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint, but the description adds genuinely new behavioral facts: results are auto-paginated (so the caller need not loop), the endpoint is experimental (stability risk), and an instance without catalogs returns an empty list rather than an error. That is substantive context beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero filler; the resource and its scope are front-loaded, followed by the two caveats an agent most needs (experimental status, empty-list response). Nothing could be removed without losing 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 zero-required-parameter list tool with annotations covering the safety profile, the description covers pagination behavior, empty-result handling, and API stability. It does not hint at the shape of a returned catalog, but with no mutating risk and trivial invocation, this is a small residual 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?
Schema description coverage is 100% across all six parameters, including limit, filter, sort_by, reverse_order, include_permissions, and cloud_environment_id, so the schema carries the full burden. The description adds nothing about parameter behavior, which is the expected baseline when the schema is this complete.
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 names the exact resource (REST catalogs of the DataLens instance) and its scope, so an agent immediately knows what comes back. It is phrased as a noun fragment rather than a verb+resource statement ('Returns/Lists...'), which is a minor weakness, but the resource is unambiguous and distinct from siblings like datalens_restcatalogs_create.
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?
There is no when-to-use or when-not-to-use guidance, and no alternative is named. The 'Experimental in the DataLens API' note is a stability caveat, not usage guidance, so the agent must infer that this is the entry point for discovering REST catalogs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_sparkapplications_cancelCancel DataLens Spark applicationB
Stop a Spark application and return the operation that cancels it.
Experimental in the DataLens API, written from its document and never called: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| cluster_id | Yes | Id of the Spark cluster. | |
| application_id | Yes | Id of the Spark application. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful context the annotations cannot: the call returns an async operation handle, and the caveat that the endpoint is experimental and 'never called: not measured' — a meaningful reliability 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?
Two short sentences, the action and return value front-loaded, followed by the caveat. No filler, though the second sentence's phrasing ('written from its document and never called: not measured') is slightly stilted.
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 two-parameter mutation with annotations covering safety and no output schema (the return is described as an operation), this is adequate. It omits prerequisites and any statement of what happens to the application or its in-flight work after cancellation, which an agent would want for a cancel 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?
Schema description coverage is 100% with two documented required parameters (cluster_id, application_id), so the schema carries the parameter semantics. The description adds nothing about parameter format or semantics, which is the expected baseline when the schema is complete.
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 names a specific verb and resource ('Stop a Spark application') and states what is returned ('the operation that cancels it'), which distinguishes it from siblings like datalens_sparkapplications_get/list/create/log_list. It stops short of explicitly differentiating from adjacent lifecycle tools such as datalens_sparkclusters_stop.
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?
There is no explicit when-to-use guidance, no preconditions (e.g. the application must be running), and no named alternative. The only implied usage comes from the verb 'Stop', which a caller must infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_sparkapplications_createCreate DataLens Spark applicationA
Make a Spark application on a cluster and return the operation that makes it.
Experimental in the DataLens API, written from its document and never called: not measured. Ask the person before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The application to make: ``clusterId``, a ``name``, the ``catalogs`` to attach, and exactly one of ``sparkApplication`` (a JAR), ``pysparkApplication`` (a Python file) or ``sparkConnectApplication``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, openWorld=true, idempotent=false, destructive=false, so the safety profile is covered. The description then adds genuinely new behavioral context: the endpoint is experimental, written only from documentation, never exercised, and unmeasured, which is exactly the kind of reliability warning annotations cannot express. It still omits auth requirements, rate limits, and whether the returned operation must be polled.
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 short sentences, purpose front-loaded and the caution immediately after; nothing is padded. The phrasing 'the operation that makes it' is slightly awkward, and the second sentence could be tightened, but it is well within a reasonable size.
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 single-body-parameter creation tool with annotations providing the safety profile, the description covers purpose, return type and an important experimental caveat. It doesn't mention that the three application variants are mutually exclusive or that the returned operation is asynchronous, but those gaps are largely filled by the schema.
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 body parameter already documents the clusterId/name/catalogs plus the exactly-one-of sparkApplication/pysparkApplication/sparkConnectApplication structure. The description adds no parameter-level meaning beyond 'on a cluster', so the baseline 3 for schema-driven params 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?
States a specific verb and resource ('Make a Spark application on a cluster') and adds the return type ('the operation that makes it'), which naturally separates it from the sibling list/get/cancel/log_list tools. The verb 'make' is less precise than 'create', and no sibling is named explicitly, so it lands just short of 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?
It gives a real usage instruction ('Ask the person before calling') tied to the tool's experimental status, which is useful. However it never names an alternative tool or spells out when this is preferred over, say, datalens_sparkclusters_create or the other sparkapplications tools, so the when-vs-alternatives guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_sparkapplications_getGet DataLens Spark applicationARead-onlyIdempotent
One Spark application: its status, its times and what it runs.
Experimental in the DataLens API and written from its document: not measured. An id nothing knows answers 403 Permission denied, not 404.
| Name | Required | Description | Default |
|---|---|---|---|
| cluster_id | Yes | Id of the Spark cluster. | |
| application_id | Yes | Id of the Spark application. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Excellent value-add beyond annotations: it discloses that the API is experimental and 'not measured,' and, crucially, the unusual error contract that an unknown id returns 403 Permission denied rather than 404. This is exactly the kind of non-obvious behavior an agent needs. Annotations already cover readOnly/idempotent/openWorld, so no contradiction.
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?
Front-loads the purpose in the first sentence, then adds two short caveats. Reasonably tight, though the phrasing is a bit fragmented ('its times and what it runs').
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 2-param read tool with annotations covering the safety profile, the description supplies the key operational caveats (experimental status, misleading 403 on unknown id). An output-shape note is unnecessary since no output schema exists, but could have been more explicit.
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 cluster_id and application_id are already documented in the schema. The description adds no parameter syntax or format beyond that; 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?
States a specific verb+resource: retrieves one Spark application, and enumerates what it returns (status, times, runs). This clearly distinguishes it from the sibling datalens_sparkapplications_list, though the sibling isn't named explicitly. Not tautological.
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 strongly implied – this is the get vs the list. But the description never explicitly says 'use this to fetch a single application by id, use datalens_sparkapplications_list to enumerate them.' No when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_sparkapplications_listList DataLens Spark applicationsBRead-onlyIdempotent
The applications of a Spark cluster, auto-paginated.
Experimental in the DataLens API and written from its document: not measured. A cluster nothing knows answers 403 Permission denied, not 404: it is not a lack of rights.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max applications to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| filter | No | Conditions, all of which must hold; each is ``field="value"`` over ``name``, ``created_by``, ``application_type`` or ``catalog_id``. | |
| cluster_id | Yes | Id of the Spark cluster. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/open-world, so the bar is lower, yet the description adds real behavioral context: auto-pagination, the experimental/unmeasured API status, and the non-obvious quirk that an unknown cluster returns 403 rather than 404. That last point is genuinely useful and not derivable from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Reasonably short, but the phrasing is awkward and cryptic ('A cluster nothing knows answers 403 Permission denied, not 404: it is not a lack of rights') forces the reader to decode it. The purpose is front-loaded, but the error note costs more parsing effort than its length suggests.
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 paginated list tool with no output schema and full schema coverage, the description covers pagination and a key error case, which is adequate. It does not describe what an application record contains or how the configured cap interacts with limit, leaving some operational 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 description coverage is 100%, so limit, filter, and cluster_id are already fully documented in the schema. The description adds nothing about parameter syntax or semantics, 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?
States the resource clearly ('the applications of a Spark cluster') and the scope is unambiguous against the sibling datalens_sparkapplications_get, which retrieves one application. The verb is only implied via the name/title, and the sentence is a fragment rather than a full 'lists X for Y' statement.
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 statement of when to call this versus datalens_sparkapplications_get or the other datalens_sparkapplications_* siblings. The only contextual note is the 403-vs-404 error behavior, which is diagnostic rather than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_sparkapplications_log_listRead the log of a DataLens Spark applicationBRead-onlyIdempotent
One fragment of an application's log, and the token of the next one.
Give nextPageToken back as page_token to read on. Experimental in the DataLens API
and written from its document: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | The most characters the fragment may hold. | |
| cluster_id | Yes | Id of the Spark cluster. | |
| page_token | No | The token of the fragment to read; the first when left out. | |
| application_id | Yes | Id of the Spark application. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety/behavior profile is mostly covered. The description adds pagination semantics (fragment + nextPageToken) which the annotations don't convey. The honest caveat that the API is 'Experimental...not measured' is useful transparency, but no info on rate limits, log retention, or truncation behavior of fragments.
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, front-loaded with the return format and then the continuation instruction. Minimal waste, though the 'Experimental...written from its document: not measured' caveat is awkward and mid-sentence; a cleaner phrasing would lose nothing.
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 paginated read with annotations covering the safety profile and a fully described schema, the essentials are present. But there's no output schema, and the description doesn't say what a fragment's log content looks like or how to detect end-of-log, which an agent needs to correctly loop pagination. Adequate but with a clear 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?
Schema description coverage is 100%, so cluster_id, application_id, page_size, and page_token are all documented in the schema. The description restates the page_token usage which the schema already covers ('the token of the fragment to read'), so no meaningful value is added beyond the schema. 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 names the resource (an application's log) and the key behavior (returns one fragment plus a continuation token). It's clear this is a paginated log-read, and the sibling set contains no other log-reading DataLens tool, so differentiation is implicit rather than stated. The 'fragment' framing is slightly unusual but functional.
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 tells the agent how to continue pagination ('Give nextPageToken back as page_token to read on'), which is useful usage guidance. However, it gives no when-to-use guidance relative to alternatives (e.g., sparkapplications_get, sparkapplications_list), no mention of when the log is unavailable, and no handling guidance for the last page.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_sparkclusters_createCreate DataLens Spark clusterA
Create a Spark cluster and return the operation that creates it.
A cluster is paid for while it runs: create one only when asked to. The operation goes on
after the reply: lakehouseoperations_get with its id says how it ended. Experimental
API, not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The cluster's name. | |
| config | Yes | The Spark version and the pools of the driver and executors. | |
| labels | No | Labels of the cluster. | |
| description | No | A description of the cluster. | |
| collection_id | Yes | The collection to create the cluster in. | |
| cloud_environment_id | Yes | The cloud environment the cluster runs in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-idempotent, open-world, non-destructive, but the description adds value they don't carry: the cluster is billed while running, creation is asynchronous (the operation outlives the reply), how to poll it, and that the API is 'experimental, not measured.' That is exactly the extra behavioral context annotations cannot express.
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?
Front-loaded with the action, then cost warning, then post-call polling, then an experimental caveat — every sentence carries distinct information. The middle sentence about the operation continuing 'after the reply' is slightly convoluted but 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 nested-config mutation with no output schema, the description covers cost, asynchrony, how to resolve the operation, and experimental status. The main remaining gap is a note on the required collection/cloud-environment scoping, which the schema handles adequately.
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 collection_id, cloud_environment_id, name and the deeply nested config are already fully documented. The description adds no parameter guidance (e.g., nesting of resourcePools or sparkVersion defaults), so the 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?
States a precise verb+resource ('Create a Spark cluster') and even discloses the return shape ('return the operation that creates it'). Among the many datalens_sparkclusters_* siblings (list/get/start/stop/delete), 'create' is unambiguous, and the mention of lakehouseoperations_get signals the async follow-up path.
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?
Explicit when-not guidance tied to cost: 'A cluster is paid for while it runs: create one only when asked to.' It also tells the agent what to do after the call ('lakehouseoperations_get with its id says how it ended'). It does not compare against start/stop or reuse of an existing cluster, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_sparkclusters_deleteDelete DataLens Spark clusterADestructive
Delete a Spark cluster and return the operation; lakehouseoperations_get reads it.
Experimental API, not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Spark cluster id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: the call returns an asynchronous operation, that operation is read via lakehouseoperations_get, and the API is experimental and not measured.
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 short sentences, front-loaded with the action and result. Every clause earns its place: operation return, follow-up tool, and experimental status.
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 one-parameter destructive tool with full annotation coverage and no output schema, the description is nearly complete. It explains the async return and experimental state, though it omits any permission or irreversibility details that might matter for a delete 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?
Schema description coverage is 100%, with the single 'id' parameter clearly documented as 'Spark cluster id.' The description adds no extra syntax, format, or constraints beyond the schema, 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?
States a specific verb and resource: 'Delete a Spark cluster'. The name and description together make the action unambiguous against all sibling tools, including the Spark cluster stop/start variants.
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 when-to-use, when-not-to-use, or alternative guidance is given. It mentions a follow-up tool (lakehouseoperations_get) but does not help the agent decide between deleting, stopping, or leaving the cluster running.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_sparkclusters_getGet DataLens Spark clusterARead-onlyIdempotent
One Spark cluster: its settings, health and status. Experimental API, not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Spark cluster id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds a genuinely useful operational caveat ('Experimental API, not measured'), but says nothing about error behavior for an unknown id or any access requirements, so it adds only modest context beyond 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?
Two short sentences with no waste and the payload summary front-loaded. Slightly telegraphic phrasing ('One Spark cluster:') and the ambiguous 'not measured' keep it from being fully polished.
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-resource read with rich annotations and no output schema, the description covers what concept is retrieved and its experimental status. It omits only error/not-found behavior, which is a minor gap at this complexity level.
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 'id' parameter, so the schema already carries the semantics and the description adds nothing about format, source, or how to obtain an id. Baseline 3 applies when the schema does all the work.
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?
States a specific verb (get) and resource (one Spark cluster) and enumerates what the payload contains (settings, health, status). It implicitly distinguishes itself from datalens_sparkclusters_list by saying 'One Spark cluster', but never names the sibling or the id-based lookup condition explicitly.
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 only implied: the singular 'One Spark cluster' suggests fetching by known id rather than enumerating. There is no explicit when-to-use, no pointer to datalens_sparkclusters_list as the alternative, and no note on prerequisites such as needing an existing cluster id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_sparkclusters_listList DataLens Spark clustersARead-onlyIdempotent
The Spark clusters of DataLens, auto-paginated.
Experimental API, not measured: ycli follows its document. Capped at the configured item
cap unless limit is given.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max clusters to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| filter | No | Filter expressions of the API. | |
| collection_id | No | Keep the clusters of one collection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds genuinely useful context beyond that: auto-pagination behavior, the configured item cap (YCLI__HTTP__MAX_ITEMS), and the experimental/unmeasured status of the API.
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?
Short and front-loaded with the resource and pagination trait first. The phrase 'Experimental API, not measured: ycli follows its document' is somewhat cryptic and could be clearer, but the overall text is compact with little waste.
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 list tool with annotations covering safety, 100% schema coverage, and no output schema, the description covers the essentials: what it lists, that results are paginated, and the item-cap behavior. Nothing critical to correct invocation is 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?
Schema coverage is 100%, so all three parameters (limit, filter, collection_id) are already documented in the schema. The description only reinforces the limit/cap behavior, adding little beyond what the schema provides; baseline 3 applies when the schema does the heavy lifting.
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 names the resource ('Spark clusters of DataLens') and the tool name/title carry the verb ('List'). It is clear what is returned, but it does not differentiate itself from siblings like datalens_sparkclusters_get or the other datalens_sparkclusters_* 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?
There is no explicit when-to-use guidance, no exclusion conditions, and no reference to alternative tools. The agent must infer that this lists rather than fetches a single cluster (datalens_sparkclusters_get) or a resource preset list from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_sparkclusters_resource_presets_getGet DataLens Spark resource presetBRead-onlyIdempotent
One resource preset: its cores and its memory. Experimental API, not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| resource_preset_id | Yes | Resource preset id. | |
| cloud_environment_id | Yes | The cloud environment the presets are for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile needs no restating. The description does add something beyond the structured fields by flagging the API as experimental and 'not measured', but this warning is cryptic and never explains what the caveat means practically.
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 terse sentences with the resource described first and the experimental caveat last; nothing is padded. Very short, but each clause carries content.
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 two-param read that has no output schema, the description helpfully names the returned fields and warns of experimental status. It nonetheless omits how the cloud_environment_id scopes the lookup and offers no pagination/format detail, leaving it minimally 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%, so both required params (resource_preset_id, cloud_environment_id) are already documented in the schema. The description adds no parameter-level detail, 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?
States a specific verb and resource ('One resource preset') and even lists the returned attributes (cores, memory), which implicitly separates it from the sibling datalens_sparkclusters_resource_presets_list. It does not name or contrast against that sibling explicitly, keeping it from 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?
No when-to-use guidance and no mention of the obviously related datalens_sparkclusters_resource_presets_list alternative. The only contextual note is 'Experimental API, not measured', which is a caveat rather than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_sparkclusters_resource_presets_listList DataLens Spark resource presetsARead-onlyIdempotent
The sizes an instance of a Spark cluster can take, auto-paginated.
Experimental API, not measured. Capped at the configured item cap unless limit is given.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max presets to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| cloud_environment_id | Yes | The cloud environment the presets are for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, idempotentHint, openWorldHint), so the bar is lower, yet the description still adds real value: it discloses auto-pagination, the default item cap behavior, and that this is an experimental, unmeasured API. That experimental caveat is exactly the kind of context an agent cannot infer from the schema or 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 short sentences with no padding, and the cap/pagination constraint is stated plainly. The opening clause is a noun phrase rather than a verb, which slightly weakens front-loading but costs little.
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 small read-only list tool with no output schema, the description covers resource meaning, pagination, the limit/cap interaction, and experimental status. It does not mention the required environment scoping, but the schema carries that cleanly.
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 only two parameters, so the schema already documents both limit and cloud_environment_id in detail. The description's remark about the item cap reinforces the limit parameter but adds no syntax or semantics beyond what the schema states, so the 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 defines the resource precisely ('the sizes an instance of a Spark cluster can take'), which tells an agent what a resource preset is, and the title supplies the 'List' verb. It does not explicitly differentiate itself from the singular sibling datalens_sparkclusters_resource_presets_get or the trinoclusters variant, so it stops short of 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?
It hints at how to control result size ('capped at the configured item cap unless limit is given') and notes pagination is automatic, which is useful call-time guidance. However, there is no explicit when-to-use vs. the _get sibling or the trinoclusters presets tool, and no stated prerequisites (the required cloud_environment_id) despite the tool being scoped per environment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_sparkclusters_startStart DataLens Spark clusterA
Start a stopped Spark cluster and return the operation.
A cluster is paid for while it runs: start one only when asked to. lakehouseoperations_get
says how the operation ended. Experimental API, not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| cluster_id | Yes | Spark cluster id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (non-read-only, non-destructive, non-idempotent, open-world), yet the description adds real behavioral context the annotations cannot: billing accrues while running, the call returns an operation rather than a completed cluster, how to resolve that operation (lakehouseoperations_get), and the "Experimental API, not measured" caveat.
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?
Front-loaded with the core action, then cost guidance and the operation follow-up; every sentence earns its place. The trailing fragment "Experimental API, not measured" is terse to the point of ambiguity, which slightly dents structure.
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 single-parameter mutation with no output schema, the description covers what an agent needs: the precondition, the cost consequence, the async return, and where to check the result. Annotations carry the safety hints, so nothing material is 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?
Only one parameter (cluster_id) with 100% schema description coverage, so the schema already carries the meaning. The description adds no format or sourcing detail for cluster_id; the baseline of 3 applies for high-coverage schemas.
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 gives a specific verb and resource ("Start a stopped Spark cluster") with the precondition that the cluster must be stopped, which implicitly separates it from datalens_sparkclusters_create and datalens_sparkclusters_stop. It does not explicitly name a sibling to contrast with, so it stops just short of the top mark.
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?
"A cluster is paid for while it runs: start one only when asked to" is an explicit when-to-use (and when-to-refrain) rule grounded in cost. It does not point to alternatives such as creating a new cluster or starting a TriNo cluster instead, so it lacks the full alternative-routing of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_sparkclusters_stopStop DataLens Spark clusterA
Stop a running Spark cluster and return the operation; lakehouseoperations_get reads it.
Experimental API, not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| cluster_id | Yes | Spark cluster id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotation set already covers the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true). The description adds genuinely new context: the call is asynchronous and returns an operation object that must be read via lakehouseoperations_get, plus an 'Experimental API, not measured' caveat. It does not describe rate limits or permissions, so not a full 5.
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 short sentences, front-loaded with the action and immediately followed by the result-handling hint and the caveat. 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 output schema, the description adequately covers the return contract by pointing to lakehouseoperations_get, and flags the experimental status. Close to complete for a one-parameter mutation; only explicit permission/state prerequisites 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?
Schema description coverage is 100% with a single required cluster_id, so the schema already carries the parameter meaning. The description adds nothing about the parameter beyond what is in the schema, which is the expected 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?
States a specific verb and resource ('Stop a running Spark cluster') that is inherently distinguishable from the sibling verbs start/delete/get. It does not explicitly name those siblings, but the operation is 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?
Implies usage ('a running Spark cluster') and routes the agent to datalens_lakehouseoperations_get to read the result, which is helpful. However it never states when to prefer stop vs delete or restart, nor any prerequisites beyond the implicit running-state condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_sqlqueries_createCreate DataLens saved SQL queryA
Save a SQL query in a workbook and return it.
Experimental in the DataLens API and written from its document: not measured. An
organization whose SQL editor is off answers 403 SQL_EDITOR_NOT_ALLOWED.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The query's name in the workbook. | |
| query | Yes | The text of the query. | |
| params | No | The parameters the text takes: a name, a type and a default each. | |
| description | No | A description. | |
| workbook_id | Yes | The workbook to keep it in. | |
| connection_id | Yes | The connection it runs over: PostgreSQL, ClickHouse, MySQL, Greenplum, Trino. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, idempotent=false and openWorld=true. The description adds genuinely new behavioral context beyond those: the endpoint is experimental and unmeasured, and a specific failure mode with its error code. It could still say more about side effects on the workbook, but this is useful 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?
Two short sentences, front-loaded with the action and followed by the caveat. The second sentence carries real signal (experimental status, 403 condition) rather than filler, though the "written from its document: not measured" phrasing is a bit meta.
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 annotations covering the safety profile, a 100%-documented schema and no output schema, the description supplies the missing operational context (experimental status, auth/permission failure mode) and notes that the created query is returned. It is adequately complete for an agent to call 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%, so every parameter is already documented in the schema and the baseline is 3. The description only indirectly touches workbook_id ("in a workbook") and adds nothing about query, params, connection_id or description, so it neither compensates nor detracts.
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 gives a specific verb and resource ("Save a SQL query in a workbook") plus the return behavior, which cleanly separates it from datalens_sqlqueries_update, _run, _get and _delete. It stops short of explicitly naming a sibling it should not be confused with, so it is clear but not fully differentiated.
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?
It surfaces a real precondition — the tool fails with 403 SQL_EDITOR_NOT_ALLOWED when the organization's SQL editor is disabled — which implies when the tool is available. However it never states when to choose this over datalens_sqlqueries_update or datalens_sqlqueries_run, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_sqlqueries_deleteDelete DataLens saved SQL queryBDestructive
Delete a saved SQL query.
Experimental in the DataLens API and written from its document: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| sql_query_id | Yes | SQL query id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is fully covered by structured fields. The description's only added context is the experimental/unmeasured caveat, which is genuine behavioral information but does not disclose what is destroyed or any auth requirements.
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?
Very short and front-loaded: the action is stated first, followed by a brief caveat. Every sentence is relevant, though the experimental note is phrased awkwardly.
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 delete with rich annotations and no output schema, the description is minimally sufficient. It lacks any usage context or confirmatory detail (e.g., irreversibility, error on missing id), leaving gaps an agent might care about.
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?
There is a single parameter with 100% schema description coverage ('SQL query id.'), so the schema already carries the semantics. The description adds nothing about the id format or how to obtain it, which is acceptable but not enriching.
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?
States a clear verb ('Delete') and resource ('saved SQL query'), and 'saved' usefully distinguishes it from the sibling datalens_sqlqueries_run, which executes rather than removes a query. It stops short of explicitly routing against the other sqlqueries siblings, but the purpose is 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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as datalens_sqlqueries_get or update. The second sentence describes API maturity, not when or when-not to invoke the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_sqlqueries_getGet DataLens saved SQL queryARead-onlyIdempotent
One saved SQL query: its text, its connection and its parameters.
Experimental in the DataLens API and written from its document: not measured. An
organization whose SQL editor is off answers 403 SQL_EDITOR_NOT_ALLOWED.
| Name | Required | Description | Default |
|---|---|---|---|
| rev_id | No | The revision to read; the current one when left out. | |
| sql_query_id | Yes | SQL query id. | |
| include_favorite | No | Also say whether it is a favourite. | |
| include_permissions | No | Also say what the caller may do with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuinely new context beyond that: the endpoint is experimental/not measured, and an organization with the SQL editor disabled receives 403 SQL_EDITOR_NOT_ALLOWED. This is useful operational detail the annotations cannot express.
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 tight sentences front-load the identity of the resource and its returned fields, followed by the caveat about experimental status and the 403 case. No filler and nothing redundant with the structured fields.
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 output schema, the description carries the return-value burden and does so by naming the three returned facets (text, connection, parameters), plus it warns about the permission failure mode. It is nearly complete; minor omissions like pagination/revision behavior are negligible for a single-item get.
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 rev_id, sql_query_id, include_favorite and include_permissions are already documented in the schema. The description's mention of 'its parameters' refers to the stored query's parameters, not the input arguments, so it adds no meaning beyond the schema. 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 names a specific verb-resource pair implicitly ('One saved SQL query') and enumerates what it returns: text, connection, parameters. It is clearly a read of a single saved query, distinguishable from datalens_sqlqueries_create/update/delete/run in the sibling list, though it does not explicitly name those siblings.
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?
There is no guidance on when to choose this over datalens_sqlqueries_run (to execute) or datalens_entries_revisions_list (to enumerate revisions), and no statement of prerequisites. The 403 SQL_EDITOR_NOT_ALLOWED note is a failure condition, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_sqlqueries_runRun DataLens saved SQL queryB
Run a saved SQL query on its connection and return the result of each statement.
The text runs as it is saved: one that changes data changes it. Experimental in the DataLens API and written from its document: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | The values of the parameters, by name; one left out takes its default. | |
| sql_query_id | Yes | SQL query id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true). The description adds real context beyond that: the query mutates data exactly as saved, results are returned per statement, and the tool is flagged as experimental and unverified. No contradiction with destructiveHint=false, since mutating data is not the same as irreversible destruction.
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 tightly written sentences with the action front-loaded and the mutation caveat immediately after. The experimental disclaimer is meta rather than operational, but it is short and does communicate a reliability caveat, so it 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 2-parameter tool with no output schema, the description does cover the return shape ('result of each statement') and mutation semantics, which annotations already imply. It omits operational prerequisites such as how to find a valid sql_query_id and any authentication/permission expectations, leaving a usage 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?
Schema description coverage is 100% and both parameters (sql_query_id, params) are documented in the schema, so the baseline is 3. The description adds nothing about parameter meaning, formats, or how named params map to the saved query.
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?
States a specific verb+resource: 'Run a saved SQL query on its connection and return the result of each statement.' The verb 'run' cleanly separates it from siblings like datalens_sqlqueries_get/create/update/delete. It does not explicitly name a sibling, but the execution semantics are 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 when-to-use guidance, no prerequisites, and no alternatives named. It never tells the agent how to obtain the required sql_query_id (e.g., via datalens_sqlqueries_get/list/create), nor when to prefer this over fetching the query definition. Only a mutability caution is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_sqlqueries_updateUpdate DataLens saved SQL queryBIdempotent
Save a SQL query anew and return it; the connection and the text go every time.
Experimental in the DataLens API and written from its document: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The text of the query. | |
| params | No | The parameters the text takes. | |
| description | No | A description. | |
| sql_query_id | Yes | SQL query id. | |
| connection_id | Yes | The connection it runs over: PostgreSQL, ClickHouse, MySQL, Greenplum, Trino. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (writable, idempotent, non-destructive, open-world), so the bar is lower. The description adds genuinely useful context the annotations do not: connection and query text are re-sent on every call (full replacement, not a partial patch), plus an honest "experimental / written from the document, not measured" caveat.
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 short sentences, front-loaded with the operation and the always-resend constraint, with the experimental caveat last. No filler, though the second sentence is more about provenance than invocation.
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 5-parameter mutation tool with no output schema, the description hints at a return value and replacement semantics but says nothing about the params/description fields, error behavior, or what the returned query looks like. Adequate but thin.
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 reinforces that connection_id and query are supplied every call, but adds no syntax or meaning beyond that for the nested params array or description field.
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?
"Save a SQL query anew" conveys an update/replacement of a saved SQL query and implies a return value, but the phrasing is oblique — it never plainly says it updates an existing query by id, nor distinguishes itself from the sibling datalens_sqlqueries_create.
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 when-to-use guidance is given: nothing says when to update versus create a new query, what happens on a bad sql_query_id, or what permissions/connection requirements apply. The agent is left to infer the tool's place among the sqlqueries_get/create/delete/run siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_tenant_details_getGet the DataLens instanceARead-onlyIdempotent
The DataLens instance the credentials reach (a safe auth probe).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds real value beyond that by framing the call as a 'safe auth probe', telling the agent that a failure here signals bad credentials rather than a destructive side effect. It still does not describe the shape of the returned instance.
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 short sentence with no filler; the core noun phrase comes first and the clarifying use case is appended in parentheses. Nothing could be trimmed without losing meaning.
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 zero-parameter, no-output-schema tool the description is minimally sufficient, but with no output schema the reader would benefit from knowing roughly what the 'instance' payload contains (id, name, endpoint) so they can use the result. As written it is adequate but thin.
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 takes zero parameters, so the baseline is 4. The description correctly implies the operation is parameterless by scoping the result entirely to 'the credentials', requiring no argument-level clarification.
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 identifies a specific resource, 'the DataLens instance the credentials reach', which tells the agent this returns the tenant/instance bound to the current credentials. It is a noun fragment rather than a verb+resource statement, but combined with the name and title the operation is unambiguous. It partly differentiates from siblings like datalens_cloudenvironments_get by tying the result to the caller's credentials.
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 parenthetical '(a safe auth probe)' implies the primary use case: verifying that credentials are valid and reach a DataLens tenant. However, no explicit when-to-use/when-not-to-use guidance or alternative tools are named, so the routing guidance is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_trinoclusters_catalog_createAttach a REST catalog to a DataLens Trino clusterB
Attach a REST catalog to a Trino cluster and return the operation.
Experimental in the DataLens API, written from its document and never called: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| catalog | Yes | The REST catalog to attach, by its id. | |
| cluster_id | Yes | Id of the Trino cluster. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the mutation/safety profile is covered. The description adds two things beyond that: the call "returns the operation" (implying an async operation object rather than the attached catalog), and that the endpoint is experimental and unverified. It still omits permission requirements and side effects on existing catalogs.
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 short sentences with the core action front-loaded and no padding. The second sentence is a metadata caveat rather than tool behavior, but it is brief and does not obscure the primary statement.
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 2-parameter required-only mutation with no output schema, the description at least signals the operation-return behavior. It nonetheless leaves unanswered whether attaching requires existing REST catalog registration, whether the attach is reversible, and what errors to expect, which matters for an experimental write endpoint.
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 cluster_id and catalog.catalogId are already documented in the schema. The description adds no syntax, format, or constraint detail about either parameter, so the 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?
States a specific verb ("Attach") and resource ("REST catalog to a Trino cluster"), so the action is unambiguous. However, it never distinguishes itself from the sibling datalens_trinoclusters_catalog_delete, which is the natural inverse operation an agent must choose between.
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?
There is no when-to-use guidance, no prerequisites (e.g. cluster must exist / be in a particular state), and no mention of the delete sibling. The only contextual note is a provenance disclaimer about the endpoint being untested, which is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_trinoclusters_catalog_deleteDetach a REST catalog from a DataLens Trino clusterADestructive
Detach a REST catalog from a Trino cluster; the catalog itself stays.
Experimental in the DataLens API, written from its document and never called: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| catalog_id | Yes | The id of the REST catalog to detach. | |
| cluster_id | Yes | Id of the Trino cluster. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds real value beyond them: it clarifies that the catalog resource survives the detach (disambiguating 'destructive'), and it honestly discloses that the operation is experimental, undocumented-in-practice, and never actually exercised — a reliability caveat an agent needs.
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 short sentences, front-loaded with the action and its key scope constraint, with the experimental caveat kept tight. No 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 two-parameter mutation with no output schema, the description covers action, scope, and reliability caveat. It could say more about what happens to the cluster's state or required permissions, but it is close to 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% for both parameters (cluster_id, catalog_id), so the schema already carries the semantics. The description adds nothing about parameter format, id syntax, or constraints, 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?
States a specific verb ('Detach') and resource ('REST catalog from a Trino cluster') and immediately scopes it against the nearest confusion point with 'the catalog itself stays.' An agent can distinguish this from datalens_trinoclusters_catalog_create or the datalens_restcatalogs_* siblings without opening either schema.
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 the 'catalog itself stays' clause, but the description names no alternative tool or condition (e.g., when to detach vs delete the catalog, or how to reattach with catalog_create). No explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_trinoclusters_createCreate DataLens Trino clusterA
Make a Trino cluster and return the operation that makes it.
A cluster is cloud resources, billed while it runs: ask the person before calling. Experimental in the DataLens API, written from its document and never called: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The cluster's name. | |
| labels | No | Labels, a name to a value. | |
| description | No | A description. | |
| collection_id | Yes | The DataLens collection to make it in. | |
| trino_version | No | The version of Trino; the service's own when left out. | |
| worker_config | Yes | The workers: their resource preset and how many there may be. | |
| catalogs_config | No | The REST catalogs to attach. | |
| cloud_environment_id | Yes | The cloud environment to make it in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (openWorld, non-idempotent, non-destructive), and the description adds real context beyond them: the call is asynchronous (returns an operation), it incurs ongoing billing while the cluster runs, and it is experimental and never actually exercised. The billing and untested caveats are exactly the kind of behavioral warning annotations cannot convey.
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?
Three short sentences, front-loaded with the core action, and no filler. The final experimental caveat is somewhat meta but earns its place as a reliability warning.
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 an 8-parameter, deeply nested create tool with no output schema, the description covers the essentials: it is a creation, it is async (operation returned), it costs money, and it is experimental. An agent has enough to decide and invoke correctly, with only fine-grained parameter detail left to the schema.
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% across all 8 parameters, including nested worker_config, so the schema already documents every field. The description contributes nothing about parameter meaning or defaults, which is the expected baseline when the schema does the heavy lifting.
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?
States a specific verb and resource ("Make a Trino cluster") and even notes the return value is an operation. The resource name clearly separates it from sibling create tools like datalens_sparkclusters_create and from the trinoclusters list/get/start/stop siblings, though it never explicitly contrasts with them.
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?
"A cluster is cloud resources, billed while it runs: ask the person before calling" gives a genuine precondition for invocation (human confirmation due to cost). However it names no alternative tool or when-not-to-use condition, leaving routing between this and sibling cluster tools to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_trinoclusters_deleteDelete DataLens Trino clusterBDestructive
Delete a Trino cluster and return the operation that deletes it.
Experimental in the DataLens API, written from its document and never called: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Trino cluster. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description usefully adds that the call returns an asynchronous operation object (important since there is no output schema) and that the endpoint is experimental and never actually measured, but it never states what is destroyed beyond the cluster itself (e.g., whether catalogs/data are cascaded).
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 short sentences, with the core action and return value front-loaded. The second sentence is a meta caveat about the API rather than tool behavior, but it is brief and does not bloat the definition.
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 one-parameter destructive delete with full annotation coverage and no output schema, the description covers the action and the async return, which is most of what an agent needs. It omits any note on irreversibility, cascade effects, or permissions, which would matter for a destructive cluster removal.
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?
There is a single required 'id' parameter with 100% schema description coverage, so the schema fully documents it. The description adds nothing about the id (format, source, or whether a cluster name works instead), 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 gives a specific verb and resource ('Delete a Trino cluster') and states the return ('the operation that deletes it'), so the agent knows exactly what it does. It does not explicitly distinguish itself from the close sibling datalens_trinoclusters_catalog_delete, which also deletes a Trino-related resource, so it stops short of 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 offers no when-to-use guidance, no prerequisites, and no alternative tools or conditions for choosing deletion over stopping (datalens_trinoclusters_stop) or deleting a catalog. Usage must be inferred entirely from the name and annotations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_trinoclusters_getGet DataLens Trino clusterARead-onlyIdempotent
One Trino cluster: its configuration, its health, its status and its coordinator.
Experimental in the DataLens API and written from its document: not measured. An id nothing knows answers 403 Permission denied, not 404: it is not a lack of rights.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Trino cluster. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld), but the description adds a genuinely non-obvious behavioral quirk: an unknown id returns 403 Permission denied rather than 404, so a 403 here does not imply insufficient rights. It also flags the tool as experimental and document-derived rather than measured.
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?
Purpose is reasonably front-loaded, but the second paragraph ('written from its document: not measured') is cryptically worded and takes effort to parse. It is short overall but could be phrased more cleanly.
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 output schema, the description compensates by listing what the response contains (configuration, health, status, coordinator) and documents the notable error case. For a single-parameter read tool this is close to sufficient, with only the experimental caveat left slightly vague.
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 there is only one parameter, so the schema already documents 'id'. The description adds only indirect parameter meaning via the unknown-id error behavior, which is more about response semantics than the parameter itself.
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 names the specific resource (one Trino cluster) and enumerates the returned aspects: configuration, health, status, and coordinator. This clearly separates it from datalens_trinoclusters_list, though it never explicitly names its siblings as alternatives.
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 only implied via the get-by-id shape against list/create/delete/start/stop siblings. There is no explicit statement of when to call this versus datalens_trinoclusters_list or which prerequisites must hold.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_trinoclusters_listList DataLens Trino clustersARead-onlyIdempotent
The Trino clusters of the DataLens instance, auto-paginated.
Experimental in the DataLens API. An instance with none answers an empty list.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max clusters to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| filter | No | Conditions the clusters must meet. | |
| catalog_id | No | Only the clusters this REST catalog is attached to. | |
| collection_id | No | Only the clusters of this collection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld, so the bar is lower. The description adds real operational context beyond that: results are auto-paginated, the endpoint is experimental, and an instance with no clusters returns an empty list rather than an error — a genuinely useful non-obvious 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?
Three short fragments, zero filler, with the resource identification and the pagination behavior front-loaded. Nothing could be removed without losing 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 four-parameter read-only list tool with a fully documented schema and no output schema, the description covers the essentials: scope, auto-pagination, and empty-result behavior. Minor gap in not pointing to the sibling get tool or restating the filterable dimensions.
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 limit, filter, catalog_id, and collection_id; baseline of 3 applies. The description adds no meaning beyond the schema — e.g. it never mentions that filtering by catalog or collection is possible.
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 names a specific resource (DataLens Trino clusters) with the listing semantics implied by the title and the 'auto-paginated' modifier. It is distinguishable from sibling datalens_trinoclusters_get, though the 'list' verb itself only appears in the name/title rather than the description body.
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 on when to call this versus datalens_trinoclusters_get or datalens_restcatalogs_list, and no prerequisites stated. The only contextual note is the experimental API flag and the empty-list case, neither of which tells the agent when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_trinoclusters_resource_preset_getGet DataLens Trino resource presetCRead-onlyIdempotent
One size of a cluster's machines: its cores and its memory.
Experimental in the DataLens API and written from its document: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| resource_preset_id | Yes | Id of the resource preset. | |
| cloud_environment_id | Yes | The cloud environment the presets are of. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering the safety profile. The description adds one genuinely useful disclosure – that the API is 'Experimental... not measured' – but it is vague about what the caller should expect (unstable output? no guarantees?). It neither states return format nor contradicts 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?
Two short sentences with no padding. The structural weakness is that the leading sentence describes the concept rather than the tool's action, so the front-loaded information is not the operational framing an agent needs first.
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 two-parameter read tool with full schema coverage and no output schema, coverage is adequate to avoid errors, but the description omits the action, the relationship to the list sibling, and any concrete meaning of the 'experimental/not measured' caveat.
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 both required parameters (resource_preset_id, cloud_environment_id), so the schema already documents them. The description adds no syntax, format, or scoping detail beyond it, so the 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 defines the resource ('one size of a cluster's machines: its cores and its memory') but never states the action the tool performs. The verb 'get' lives only in the name/title, so the description reads as an entity definition rather than a retrievable operation. An agent can infer the purpose, but it is not stated 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?
There is no guidance on when to call this versus the clearly related sibling datalens_trinoclusters_resource_presets_list, nor any mention of prerequisites such as needing a valid cloud_environment_id. The description provides no usage context at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_trinoclusters_resource_presets_listList DataLens Trino resource presetsBRead-onlyIdempotent
The sizes a cluster's machines may have in a cloud environment, auto-paginated.
Experimental in the DataLens API and written from its document: not measured. An environment nothing knows answers 403 Permission denied, not 404.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max presets to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| cloud_environment_id | Yes | The cloud environment the presets are of. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered. The description adds genuinely non-obvious context beyond that: the tool is experimental and unmeasured, and an unknown environment returns 403 Permission denied rather than 404, which materially changes how an agent should interpret failures.
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?
It is short and front-loads the resource definition, but the second sentence is densely and awkwardly phrased ('An environment nothing knows answers 403 Permission denied, not 404') and takes a re-read to parse. The ideas earn their place; the phrasing does not fully earn the space it takes.
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, auto-paginated list with 100% schema coverage and no output schema, the description supplies the one thing structured fields cannot: what the listed items represent and the non-standard error semantics. It stops short of describing returned fields, but the safety and schema layers cover most of the remaining burden.
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 limit (with its configured-cap default) and cloud_environment_id are already documented in the schema, including the auto-pagination cap. The description adds no parameter-specific syntax or semantics, so the 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 defines exactly what the resource is – 'the sizes a cluster's machines may have in a cloud environment' – which is more informative than restating the title, and the tool name carries the 'list' verb. It does not distinguish this from the near-identical sibling datalens_sparkclusters_resource_presets_list or the singular resource_preset_get, so it never reaches 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?
There is no explicit when-to-use guidance and no mention of the obvious alternatives (the singular preset getter, or the Spark variant of the same list). The closest thing to routing guidance is the 403 error note, which is about failure behavior rather than tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_trinoclusters_startStart DataLens Trino clusterA
Start a stopped Trino cluster and return the operation that starts it.
A running cluster is billed: ask the person before calling. Experimental in the DataLens API, written from its document and never called: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| cluster_id | Yes | Id of the Trino cluster. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so safety is partly covered. The description adds value annotations cannot: the billing consequence of a running cluster and the fact that it is experimental and untested. It still omits what happens if the cluster is already running (idempotency edge case).
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?
Three tight sentences, front-loaded with the action and return value, then the cost warning, then the reliability caveat. No padding; every sentence changes agent behavior.
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 one-parameter start operation with no output schema, the description covers purpose, cost implications and experimental status adequately. The main omission is what to do if the cluster is not stopped and how to track the returned 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?
Schema description coverage is 100% with a single documented cluster_id parameter, so the schema carries the load. The description adds no additional meaning about the parameter, which is the expected baseline here.
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?
States a specific verb (Start) and resource (a stopped Trino cluster) and additionally names the return value (the operation that starts it). The 'stopped' qualifier implicitly but clearly distinguishes it from its sibling datalens_trinoclusters_stop without needing the schema.
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?
Explicitly scopes use to stopped clusters and adds a decisive routing condition: 'A running cluster is billed: ask the person before calling.' That is a real when-to-use gate, and the experimental/never-called note tells the agent to treat results cautiously.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_trinoclusters_stopStop DataLens Trino clusterB
Stop a running Trino cluster and return the operation that stops it.
Experimental in the DataLens API, written from its document and never called: not measured.
| Name | Required | Description | Default |
|---|---|---|---|
| cluster_id | Yes | Id of the Trino cluster. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and openWorldHint=true, covering the safety profile. The description adds genuinely useful context: the call is asynchronous (returns an operation) and is flagged as experimental/never-tested in the DataLens API, which the annotations do not convey. It stops short of permission or failure-mode 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 primary action is front-loaded in the first sentence, with the experimental caveat scoped to a second sentence. Nearly every clause earns its place, though the meta note about tooling ('written from its document and never called') is somewhat verbose.
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 one-parameter asynchronous stop operation with no output schema, the description covers purpose and the operation-return behavior adequately. However, it omits lifecycle context (e.g., what state the cluster ends in, whether stop is reversible, or what the returned operation implies for polling).
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 a single parameter and 100% schema description coverage, the schema already documents cluster_id fully. The description adds nothing about parameter 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?
States a specific verb ('Stop') and resource ('Trino cluster') and notes the return value (the operation that stops it), so the action is unambiguous. It does not explicitly contrast with siblings like datalens_trinoclusters_start or datalens_trinoclusters_delete, though the distinction is largely obvious from the verb.
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 when-to-use guidance, no preconditions, and no mention of alternatives such as delete or start. The agent gets no routing help beyond the obvious name, so usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_workbookexports_cancelCancel DataLens workbook exportAIdempotent
Stop an export: its status becomes error, with WORKBOOK_EXPORT_CANCELLED.
An export that is over stays as it ended, and the call answers the same.
| Name | Required | Description | Default |
|---|---|---|---|
| export_id | Yes | Export id, from ``workbookexports_start``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Provides useful behavioral context beyond the annotations: the export status becomes 'error' with code 'WORKBOOK_EXPORT_CANCELLED', and a finished export remains unchanged while the call still succeeds. The annotations already cover idempotency and destructiveness at a high level, so this is valuable added detail rather than a complete behavioral 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?
Two tightly written sentences with no wasted words. The cancellation effect is front-loaded, and the idempotency nuance follows immediately without 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?
For a simple one-parameter cancellation tool with no output schema, the description covers the essential outcome and the edge case where the export has already completed. It does not need to explain return values, and the annotations already cover the safety profile.
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 coverage is 100% and the single parameter 'export_id' is already documented as coming from 'workbookexports_start.' The description adds no parameter-level semantics, which is acceptable when the schema fully covers the parameter.
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?
States a specific verb and resource: 'Stop an export.' The outcome is clearly described. However, it does not explicitly name sibling tools or clarify why this is distinct from status/result retrieval beyond the cancellation effect.
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?
Only implies usage through the imperative 'Stop an export.' There is no explicit when-to-use guidance, no when-not-to-use guidance, and no mention of alternatives like checking status or retrieving results before cancelling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_workbookexports_result_getGet DataLens workbook export resultARead-onlyIdempotent
The exported workbook: every entry it holds, as one document.
data is what workbookimports_start takes. An export that is not over, or was
cancelled, answers 409 Conflict. The document is large (hundreds of kilobytes for a
workbook with a dashboard) and holds no password or token of a connection.
| Name | Required | Description | Default |
|---|---|---|---|
| export_id | Yes | Export id, from ``workbookexports_start``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld, so the bar is lower, yet the description still adds real behavior: the 409 failure mode for incomplete or cancelled exports, the payload magnitude (hundreds of KB with a dashboard), and the assurance that no connection secrets are included. That last point is valuable for an agent deciding whether the response is safe to surface.
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?
Front-loaded with what the tool returns, then the downstream use of ``data``, then the failure mode and size caveat. Three sentences, all earning their place, though the opening line is slightly elliptical ('as one document').
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 output schema, the description must characterize the return, and it does: the document's contents, its rough size, the round-trip use as input to workbookimports_start, and the error condition. It stops short of stating the serialization format, which is the one remaining gap for an agent handling a hundreds-of-KB payload.
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 single export_id is already documented as coming from workbookexports_start, so the schema carries the load. The description adds no syntax or format detail beyond that 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?
States a specific resource and its shape: the exported workbook returned as one document holding every entry. This clearly separates it from datalens_workbookexports_status_get (progress) and datalens_workbookexports_cancel, though neither sibling is named explicitly, so an agent must infer the split.
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 409-on-not-finished/cancelled clause tells the agent the export must be complete before calling, which is actionable gating context. It stops short of naming datalens_workbookexports_status_get as the tool to poll first, so the routing 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.
datalens_workbookexports_startStart DataLens workbook exportA
Start exporting a workbook and return the id of the export.
The export runs on its own: ask workbookexports_status_get until status is
success, then workbookexports_result_get for the document.
| Name | Required | Description | Default |
|---|---|---|---|
| workbook_id | Yes | Workbook id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly=false, idempotent=false, destructive=false, openWorld=true), so the bar is lower. The description adds genuinely useful behavior beyond them: the operation is asynchronous and self-running, and it yields an export id the agent must track. It does not mention auth requirements, failure modes, or whether duplicate concurrent exports are allowed.
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 short sentences, front-loaded with the action and return value, followed by the lifecycle instructions. Every sentence earns its place with zero 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?
There is no output schema, but the description states the return value (the export id) and the follow-up polling/result steps, so an agent can complete the task. Missing only edge-case context such as error behavior or permissions for a 1-param async mutation.
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?
Only one parameter (workbook_id) with 100% schema description coverage, so the schema already documents it. The description adds no format, source, or constraint detail about workbook_id. Baseline 3 is correct when the schema does the heavy lifting.
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?
States a specific verb and resource ("Start exporting a workbook") plus the immediate return value (the export id). It explicitly names the two sibling tools in the lifecycle (workbookexports_status_get, workbookexports_result_get), so an agent can place it precisely among the datalens_workbookexports_* family.
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 routes the agent through the full workflow: call this to start, poll status_get until success, then call result_get. That is clear context for when to use the tool and which siblings follow, though it gives no explicit "when not to use" or exclusion (e.g., vs. workbookimports_start or workbooks_get).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_workbookexports_status_getGet DataLens workbook export statusARead-onlyIdempotent
How far an export is: pending, success or error, and the progress in percent.
notifications holds what the export has to say about an entry: id, level, message.
| Name | Required | Description | Default |
|---|---|---|---|
| export_id | Yes | Export id, from ``workbookexports_start``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/openWorld/idempotent, so the safety profile is covered. With no output schema, the description usefully discloses the return payload: the three terminal/transient states and the notifications structure (id, level, message). That is meaningful added context beyond 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?
Two tight sentences with no filler; the status values are front-loaded. The second sentence about notifications is a bit loosely phrased but still earns its place by documenting return fields absent an output schema.
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 single-parameter, read-only status lookup, describing the possible states and the notifications payload is largely sufficient given no output schema exists. It stops short of explaining polling behavior or the handoff to result_get, leaving a small 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?
Schema description coverage is 100% and export_id is documented there as coming from workbookexports_start. The description adds nothing about the parameter, so the baseline 3 applies when the schema does the heavy lifting.
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 conveys what the tool returns (export phase: pending/success/error, progress percent, notifications) which effectively communicates purpose, and the title supplies the verb. It does not, however, distinguish this status tool from close siblings like datalens_workbookexports_result_get or _cancel, so it lands at 4 rather than 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?
There is no explicit when-to-use guidance: no mention of polling after workbookexports_start, no statement of what to do while status is pending, and no routing to result_get for the actual artifact. The agent must infer the workflow entirely from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_workbookimports_startStart DataLens workbook importA
Start making a workbook from an export; returns the ids of the import and the workbook.
The workbook exists at once and is filled as the import runs: ask
workbookimports_status_get until status is success. Its connections come
without their secrets (a notification …CONN.CHECK_CREDENTIALS says so): give each its
password or token again with connections_update.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | The ``data`` of ``workbookexports_result_get``: ``export``, ``hash``. | |
| title | Yes | The title of the new workbook. | |
| description | No | The description of the new workbook. | |
| collection_id | No | The collection to make it in; the root when left out. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say non-readOnly, non-idempotent, openWorld. The description adds substantive behavior beyond that: the workbook materializes immediately and is populated asynchronously, connections arrive stripped of secrets, and a CONN.CHECK_CREDENTIALS notification signals this. This is exactly the kind of context the annotations cannot convey.
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?
Three short sentences, front-loaded with the action and its return value, then the async/credential caveats. Slightly dense with backticked identifiers and the truncated '…CONN.CHECK_CREDENTIALS' token, but no sentence is wasted.
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?
There is no output schema, and the description compensates by stating what is returned (import and workbook ids) plus the asynchronous lifecycle and the credential gap an agent must close. Nothing needed to call and follow through on this tool is 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?
Schema description coverage is 100%, so the schema already documents all four parameters including the nested `data` object. The description's note that `data` is the output of workbookexports_result_get is useful but largely duplicates the schema wording, so the 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?
States a specific verb and resource ('Start making a workbook from an export') and explicitly ties itself to the export flow, distinguishing it from datalens_workbookexports_start and datalens_workbookimports_status_get. An agent can identify the tool's role without opening the schema.
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 spells out the full operational sequence: start the import, poll workbookimports_status_get until status is success, then re-supply credentials via connections_update. It names the alternatives/follow-ups and the conditions that select them rather than leaving the workflow to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_workbookimports_status_getGet DataLens workbook import statusARead-onlyIdempotent
How far an import is: pending, success or error, and the progress in percent.
notifications holds what the import has to say about an entry: id, level, message.
| Name | Required | Description | Default |
|---|---|---|---|
| import_id | Yes | Import id, from ``workbookimports_start``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, idempotent, open-world operation. The description adds useful behavioral context by naming the status values and explaining the structure of the notifications field, though it does not discuss permissions or rate limits.
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 short sentences are front-loaded with the status result and then cover the notifications structure. Every sentence carries useful information and there is 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?
For a simple read-only status endpoint with no output schema, the description adequately explains the return values: status, progress percent, and notification fields. It could be slightly more explicit about the response shape, but the key information an agent needs is present.
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% description coverage, so the import_id parameter and its source are already documented. The description adds no additional parameter semantics, which is appropriate for a single documented parameter.
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 this retrieves the progress/status of a DataLens workbook import and enumerates the possible status values. It does not explicitly distinguish itself from similarly named export-status siblings, but the import-specific content makes the resource 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?
Usage is implied: the tool returns how far an import is, so an agent can infer it should be called after starting an import. However, there is no explicit when-to-use guidance, no mention of polling behavior, and no comparison to alternative status endpoints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_workbooks_access_bindings_listList the roles on a DataLens workbookBRead-onlyIdempotent
Who has which role on a workbook, auto-paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max subjects to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| workbook_id | Yes | Workbook id. | |
| get_inherited_bindings | No | Also list the roles inherited from above. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds one genuinely useful behavioral trait not in the annotations: 'auto-paginated', telling the agent it need not hand-roll paging. It does not disclose the inherited-bindings behavior, which the schema carries instead.
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 compact sentence with no waste, and the core purpose is front-loaded. The trailing 'auto-paginated' earns its place, though the sentence is terse enough to border on under-specification for a three-parameter 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 read-only list tool with full schema coverage and read-only annotations, the description is adequate but thin: it does not mention the inherited-bindings capability or the configured max-items cap, and there is no output schema to explain return shape.
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 three parameters (limit, workbook_id, get_inherited_bindings) are documented in the schema itself. The description adds no parameter-level meaning beyond what the schema already provides, 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?
States a specific resource and data (roles on a workbook) in a compact verbless phrasing. An agent can tell it apart from the sibling datalens_workbooks_access_bindings_update (list vs update), but the phrasing 'Who has which role' is looser than an explicit 'List access bindings'.
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 when-to-use, when-not-to-use, or alternative is named. The relationship to the parallel update tool and to the inherited-bindings option is left entirely for the agent to infer from the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_workbooks_access_bindings_updateChange the roles on a DataLens workbookA
Give or take away roles on a workbook; the roles not named stay as they are.
| Name | Required | Description | Default |
|---|---|---|---|
| deltas | Yes | The roles to add (`ADD`) and remove. | |
| workbook_id | Yes | Workbook id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-idempotent, non-destructive write. The description adds a genuinely useful behavioral fact beyond them: it is a merge-style delta operation where unspecified roles are preserved. It still omits permission requirements and what happens when an ADD targets an already-present binding (notable given idempotentHint=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?
A single sentence of two tight clauses, with the core action front-loaded and the merge semantics appended. No filler, no restatement of the title.
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 two-parameter mutation with full schema coverage and annotations carrying the read/write and idempotency profile, the description supplies the one thing the structured fields don't: the delta/merge semantics. It could still mention required permissions or error behavior on conflicting bindings, but nothing essential for correct invocation is 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?
Schema description coverage is 100%, so workbook_id and the deltas structure (action, accessBinding.roleId, subject.id/type) are already documented in the schema. The description adds no syntax or format detail beyond that, 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?
States a specific verb phrase ("Give or take away roles") and the resource ("a workbook"), so an agent immediately knows this mutates workbook access bindings. It does not name or contrast itself with the near-identical siblings datalens_collections_access_bindings_update or datalens_sharedentries_access_bindings_update, leaving scope differentiation to the tool name.
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 clause "the roles not named stay as they are" implies this is a partial/delta update, which hints at when to use it (incremental changes rather than full replacement). However, no alternatives are named and there is no guidance on when to add vs. remove or when to use the sibling bindings_list tool instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_workbooks_createCreate DataLens workbookA
Create a workbook in a collection, or in the root when no collection is given.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the workbook. | |
| description | No | Description of the workbook. | |
| collection_id | No | The collection to put the workbook in; the root when left out. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=true, so the agent knows this is a non-idempotent, non-destructive write. The description adds only the default-placement behavior and says nothing about required permissions or side effects, so it contributes modest value over 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?
A single sentence that front-loads the action and appends the placement caveat with zero waste. Nothing could be removed without losing 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 three-parameter create tool with full schema coverage and annotations covering the safety profile, the description supplies the one behavior not obvious from structured fields (default root placement). It is essentially complete, though permissions context is absent.
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 title, description, and collection_id. The description restates the collection_id default rather than adding syntax, constraints, or format detail beyond the schema, which matches 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 gives a specific verb and resource ("Create a workbook") and adds the placement scope, which is enough to distinguish it from datalens_workbooks_update, move, or delete. It does not explicitly name a sibling tool, so it stops short of 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 clarifies the default behavior (root when no collection is given), which is useful context, but it offers no guidance on when to choose this tool over related operations or any prerequisites for creating a workbook. Usage 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.
datalens_workbooks_deleteDelete DataLens workbookADestructive
Delete a workbook with everything it holds: connections, datasets, charts, dashboards.
Deleting a workbook that is already deleted answers 500, not 404: after a server error, read the workbook before deleting it again.
| Name | Required | Description | Default |
|---|---|---|---|
| workbook_id | Yes | Workbook id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description goes beyond that by naming exactly what is destroyed (connections, datasets, charts, dashboards) and by documenting a non-obvious error behavior that confirms the non-idempotency hint. Still silent on permissions and on what a successful response returns.
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, both earning their place: the first states scope of destruction, the second the failure/retry quirk. Front-loaded with the essential destructive scope.
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 one-parameter destructive tool with no output schema and strong annotations, the description covers the destruction footprint and a real failure-mode gotcha. Missing auth/permission requirements, which would be the remaining 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?
Only one parameter, and the schema documents it at 100% coverage ('Workbook id.'). The description adds no format, source, or lookup guidance for the id, so it does not exceed 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?
Specific verb+resource (delete a workbook) plus an explicit statement of cascade scope: connections, datasets, charts, dashboards. That scope detail separates it from datalens_workbooks_delete_bulk and datalens_charts_editor_delete without any schema 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?
Implicit usage is clear (deleting a single workbook), and the description gives a useful retry rule for the 500-not-404 case. But it never states when to prefer this over datalens_workbooks_delete_bulk, nor any permission or prerequisite conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_workbooks_delete_bulkDelete DataLens workbooksBDestructive
Delete several workbooks with everything they hold.
| Name | Required | Description | Default |
|---|---|---|---|
| workbook_ids | Yes | Workbook ids. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description does add one genuinely useful behavioral fact beyond the annotations — 'with everything they hold' signals cascading deletion of contained entries — but says nothing about irreversibility, partial-failure behavior, or permissions.
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 the action first and no padding. It is efficient, though so terse that some of the terseness reads as under-specification rather than economy.
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 bulk destructive operation with no output schema, the annotations carry most of the risk signal and the description supplies the cascade scope. Still missing are guarantees about atomicity/partial failure across the id list, which matters for a batch delete.
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 one parameter and 100% schema description coverage, the schema already documents workbook_ids. The description adds no format, batching limit, or id-validation detail, so the 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?
States a specific verb ('Delete') and resource ('workbooks') with a bulk scope ('several'), which distinguishes it from the singular datalens_workbooks_delete sibling. It does not, however, name or contrast with that sibling explicitly.
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?
There is no when-to-use guidance, no precondition (e.g. what permissions are required), and no mention of the alternative single-delete tool. The agent must infer all usage context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_workbooks_entries_listList the entries of a DataLens workbookARead-onlyIdempotent
What a workbook holds: connections, datasets, charts and dashboards, auto-paginated.
scope says the kind of each entry; its id opens it with the tools of that kind. Capped
at the configured item cap unless limit is given.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max entries to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| scope | No | Keep only these kinds of entries. | |
| filters | No | Keep the entries whose name has a text. | |
| only_my | No | Keep only what the caller created. | |
| order_by | No | What to sort by and in which direction. | |
| created_by | No | Keep only what this user created. | |
| workbook_id | Yes | Workbook id. | |
| include_permissions_info | No | Also say what the caller may do with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds two real behavioral facts beyond that: results are auto-paginated, and output is capped at the configured item cap (YCLI__HTTP__MAX_ITEMS) unless ``limit`` is supplied. It does not characterize permission behavior or the full paging contract, so this is adequate-plus rather than 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?
Three short sentences/fragments with the key scoping constraint (auto-pagination and the lookup cap) front-loaded. No filler, though the backticked inline formatting is slightly awkward for a tool description.
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 an 8-parameter list tool with no output schema, the description usefully hints at the returned entry shape (each entry has a scope and an id that opens it elsewhere) and at pagination/cap behavior. It stops short of describing ordering defaults or whether paging requires follow-up calls, which is the only remaining 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?
Schema description coverage is 100%, so every parameter (limit, scope, filters, only_my, order_by, created_by, include_permissions_info, workbook_id) already carries a description; baseline 3 applies. The description restates the cap/limit behavior and clarifies that ``scope`` denotes entry kind, but adds little syntax or defaulting detail beyond the schema itself.
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 concrete verb and resource: it enumerates what a workbook holds (connections, datasets, charts, dashboards) and frames the tool as the listing endpoint for that container. It is clear without opening the schema, but it never contrasts itself with its closest siblings (datalens_workbooks_list, datalens_entries_list), so an agent must infer the boundary.
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?
There is an implied usage path — the ``scope`` of an entry tells you which family of tools opens it by id — which is genuinely useful routing guidance. However, it never says when to call this versus datalens_entries_list or datalens_workbooks_list, and offers no prerequisites or exclusions, so usage is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_workbooks_getGet DataLens workbookBRead-onlyIdempotent
One workbook by id: its title, description and collection.
| Name | Required | Description | Default |
|---|---|---|---|
| workbook_id | Yes | Workbook id. | |
| include_permissions_info | No | Also say what the caller may do with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds that the result is scoped to three fields, but says nothing about auth requirements, error behavior on a missing id, or how include_permissions_info alters the response.
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 compact sentence with the key constraint ('by id') front-loaded and the result shape appended. No waste, though it is terse enough that it omits useful detail rather than trimming fat.
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 output schema, the description carries the burden of describing the return value, and it names only three fields while ignoring the permissions dimension of include_permissions_info. Adequate for a simple getter but leaves the response contract partially unspecified.
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 of 3 applies. The description clarifies that workbook_id selects a single workbook, but it never mentions the optional include_permissions_info parameter, leaving the schema to do all the work for the second parameter.
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?
Clear verb+resource ('Get... one workbook by id') and enumerates the returned fields (title, description, collection), so an agent knows exactly what it retrieves. It does not name the sibling it is distinct from (e.g. datalens_workbooks_list or datalens_workbooks_list_by_ids), so differentiation is left to the agent.
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 only implied by the name and the 'by id' phrasing — fetch a single knowable workbook. There is no explicit when-to-use, no mention of when to prefer datalens_workbooks_list_by_ids for multiple ids, and no prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_workbooks_listList DataLens workbooksARead-onlyIdempotent
The workbooks of one collection (the root by default), auto-paginated.
It does not descend into nested collections: collections_content_list shows what a
collection holds. Capped at the configured item cap unless limit is given.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max workbooks to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| only_my | No | Keep only what the caller created. | |
| order_field | No | What to sort by. | |
| collection_id | No | Collection to list; the root when left out. | |
| filter_string | No | Keep the workbooks whose title has this text. | |
| order_direction | No | Sort direction. | |
| include_permissions_info | No | Also say what the caller may do with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnly/idempotent/openWorld, so the bar is lower, but the description adds real behavior: results are auto-paginated, it does not descend into nested collections, and output is capped at the configured item cap unless limit is given. These are useful operational traits beyond 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?
Two compact sentences: scope first, then the exclusion and cap behavior. Front-loaded and every sentence earns its place, though the cap detail slightly overlaps the schema's own limit description.
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 output schema needed and all seven params optional and fully schema-documented, the description covers the essentials an agent needs: scope, default root, pagination, nesting limitation, and the item cap. Only the return shape is unspecified, which is acceptable given no output schema exists.
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 seven parameters including limit's default cap behavior. The description only echoes the limit/cap relationship without adding syntax or meaning the schema lacks, so the 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?
States a specific verb (list) and resource (workbooks) scoped to 'one collection (the root by default)', and explicitly distinguishes itself from the sibling it is not: collections_content_list. An agent can tell precisely what this returns without opening a schema.
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?
Names the alternative (collections_content_list) and the condition that selects it (when you need to descend into nested collections). Clear when-to-use context, though it does not contrast against other list siblings such as datalens_workbooks_list_by_ids or datalens_workbooks_entries_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_workbooks_list_by_idsList DataLens workbooks by idARead-onlyIdempotent
The workbooks with these ids; an id the caller cannot see is left out.
| Name | Required | Description | Default |
|---|---|---|---|
| workbook_ids | Yes | Workbook ids. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds valuable non-obvious behavior: ids the caller cannot see are silently omitted, which is an authorization-visibility trait not captured by the annotations. It still does not describe return format or error handling for invalid ids.
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 fragment with no wasted words. It efficiently states the primary output and the access-filtering rule, though the noun-phrase style is slightly telegraphic rather than a fully structured sentence.
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 list-by-ids tool with full schema coverage and rich annotations, the description covers the essential purpose and an important visibility edge case. It lacks usage routing and return-structure details, but those gaps are minor relative to the tool's simplicity and the annotation 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%, and the single workbook_ids array parameter is documented in the schema as 'Workbook ids.' The description adds no additional parameter semantics, such as ordering, limits, or id format, 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 identifies the resource (workbooks) and the keying mechanism (these ids), so an agent understands it retrieves multiple workbooks by id. It does not explicitly name a verb or distinguish itself from siblings like datalens_workbooks_list or datalens_workbooks_get, but the scope is clear enough given the title.
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 offers no guidance on when to use this tool versus alternatives such as datalens_workbooks_list, datalens_workbooks_get, or datalens_collections_list_by_ids. The only provided behavior is an output filtering rule, not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_workbooks_moveMove DataLens workbookB
Move a workbook into a collection, or into the root when no collection is given.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New title to give it on the way. | |
| workbook_id | Yes | Workbook id. | |
| collection_id | No | The collection to put the workbook in; the root when left out. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=true, which is the whole safety profile. The description adds nothing beyond that and merely restates the schema's collection/root default; no permission requirements, side effects on entries, or concurrency caveats are disclosed.
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 sentence, front-loaded with the action and its destination, with zero filler. Nothing to trim.
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 three-parameter mutation with no output schema, the description is adequate but thin: it omits whether the move requires access to both source and destination, what happens to the workbook's entries or bindings, and how it relates to the bulk variant. Annotations carry part of the burden, but gaps remain.
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 workbook_id, collection_id and title are all documented in the schema (including the root default), making 3 the baseline. The description adds no new parameter meaning beyond what the schema already states.
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?
Clear specific verb (move) plus resource (workbook) plus destination semantics, including the root fallback. It does not name or contrast with the obvious sibling datalens_workbooks_move_bulk, so it falls short of 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 implies when to use it (single workbook relocation into a collection or root), but gives no explicit when-not conditions and never points to datalens_workbooks_move_bulk for multiple workbooks or to datalens_collections_move for collection relocation. Usage is only inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_workbooks_move_bulkMove DataLens workbooksA
Move several workbooks into a collection, or into the root when none is given.
All or none: if one workbook already lies in the destination, the API answers 409 and moves none of them.
| Name | Required | Description | Default |
|---|---|---|---|
| workbook_ids | Yes | Workbook ids. | |
| collection_id | No | The collection to put the workbook in; the root when left out. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it is a non-read-only, non-destructive, non-idempotent operation. The description adds valuable behavioral detail beyond that: the operation is atomic ('All or none') and fails with a 409 when any workbook is already in the destination. It does not describe auth requirements or return values, but the failure semantics are a meaningful addition.
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 short sentences with zero filler, front-loading the core action and then the critical atomicity caveat. 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 two-parameter mutation tool with no output schema and full annotation coverage, the description includes the essential behavioral constraint (atomic 409 failure). It does not mention permission requirements or the shape of a successful response, but those are largely covered by annotations and the absence of an output 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?
Schema description coverage is 100%, so both parameters are fully documented in the schema. The description restates the collection/root default but adds no syntax or format detail beyond the schema, making a baseline 3 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?
States a specific verb and resource ('Move several workbooks') and distinguishes itself from the single-workbook sibling via 'several'. The destination scope (collection or root) is also made 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?
Clearly indicates when to use it (multiple workbooks to a collection, or to root when no collection is given), implicitly contrasting with the single-move tool. It does not explicitly name alternatives or exclusions, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datalens_workbooks_updateUpdate DataLens workbookAIdempotent
Change a workbook's title or description; what is not given stays as it is.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New title. | |
| description | No | New description. | |
| workbook_id | Yes | Workbook id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds real behavioral value by disclosing patch semantics ('what is not given stays as it is'), which annotations do not convey.
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 economical sentence with the operation front-loaded and the partial-update caveat appended. Nothing is wasted.
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 3-param mutation whose safety traits are already carried by annotations and whose parameters are fully schema-documented, the description is sufficient. Only a hint about when to choose it over related workbook tools is 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?
Schema description coverage is 100%, so title/description/workbook_id are already documented in the schema; the baseline of 3 applies. The patch-semantics sentence adds partial-update meaning for the optional fields, a marginal lift over 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 a specific verb+resource+scope: 'Change a workbook's title or description'. That is clear enough to distinguish it from sibling datalens_workbooks_create/delete/move/get, though it doesn't explicitly name an alternative.
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 when-to-use guidance or alternatives are offered. An agent must infer from the name alone whether this is the right tool versus datalens_entries_rename, datalens_workbooks_move, or datalens_workbooks_access_bindings_update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_access_grantGrant Forms survey accessBIdempotent
Let a user or a group perform an action on a form; returns every permission.
Granting someone who already has the action changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The action and the user or group to add. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false). The description adds real context beyond that: it states the return is 'every permission' (valuable since there is no output schema) and clarifies the idempotency consequence with 'Granting someone who already has the action changes nothing'.
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 short sentences with no waste; the core action is front-loaded and the idempotency note is a useful trailing clarification. Sized appropriately for a two-parameter mutation.
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?
Annotations and a fully covered schema carry most of the burden, and the description adds the return-value note. However, for a mutation tool with three closely related siblings it omits the routing guidance needed to call 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 coverage is 100%, so the schema already documents survey_id, user/group, and the action enum. The description only restates 'a user or a group' and 'action' with no added syntax, format, or constraint detail, so it does not exceed 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?
States a specific verb and resource: grants a user or group an action on a form. It is clear what the tool does, though it never names the sibling tools (forms_access_set, forms_access_revoke) that an agent must distinguish it from.
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 when-to-use guidance and no alternatives named. Given that forms_access_set and forms_access_revoke sit right beside it, an agent gets no help deciding which of the three to call for a given intent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_access_listGet Forms survey accessARead-onlyIdempotent
Who may edit (change) and who may fill (submit) a form, one entry per action.
access is owner, restricted (the listed users/groups), common (the whole
organization) or public (anyone with the link).
| Name | Required | Description | Default |
|---|---|---|---|
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description adds real value beyond them by spelling out the returned shape (one entry per action) and the vocabulary of the access field (owner / restricted / common / public, with public meaning anyone with the link). It does not mention what permission is required to view access, but for a read tool this is minor.
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 tight sentences, no padding, and the core answer (who may edit / who may fill, per action) is front-loaded ahead of the enumeration of access values.
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?
No output schema exists, so the description must sketch the return value, and it does: one entry per action plus the meaning of each access level and the users/groups listing. What is missing is any note about pagination or the permission needed to read access, but for a one-parameter read tool this is close to 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?
There is a single parameter (survey_id) and schema description coverage is 100%, so the schema already documents it fully (24-char hex from surveys_list). The description adds nothing about the parameter, which is the expected baseline 3 when the schema carries the burden.
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 concrete verb+resource: it returns who may edit (change) and who may fill (submit) a form, one entry per action. That is specific and an agent can tell it is a read/list of access entries rather than the mutation siblings. It never explicitly names forms_access_grant/update/revoke, so sibling differentiation is only implicit.
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?
There is no when-to-use statement and no alternatives named. The agent must infer that this is the read counterpart to forms_access_grant, forms_access_update and forms_access_revoke from the name alone. No prerequisites or exclusion conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_access_revokeRevoke Forms survey accessBDestructive
Stop a user or a group performing an action on a form; returns every permission.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The action and the user or group to remove. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds that the call returns every permission, which is useful, but it does not disclose permission requirements, reversibility, or other behavioral details beyond 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 compact sentence with no wasted words, and the core action is front-loaded. It is appropriately sized for a two-parameter mutation 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 rich schema and annotations, the description is minimally adequate: it states the action and mentions the return value. However, it lacks usage guidance relative to sibling access tools and does not clarify permission requirements, leaving some contextual gaps for an agent choosing and invoking 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 nested user, group, action, and survey_id fields are already well documented. The description only alludes to the user/group/action concept and does not add syntax, constraints, or meaning 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 a specific action (stopping a user or group from performing an action on a form) and the resource involved. It clearly implies revocation rather than granting, but it does not explicitly name sibling tools such as forms_access_grant or forms_access_set.
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 the tool is relevant by saying 'Stop a user or a group performing an action,' but it provides no explicit guidance on when to use this tool versus forms_access_set or forms_access_grant. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_access_updateSet Forms survey access levelBIdempotent
Set the access level of one action (change or submit); returns every permission.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The action and its new access level. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it as a non-read-only, idempotent, non-destructive mutation, so the safety profile is covered. The description adds one useful behavioral detail — 'returns every permission' — signaling the response is the full permission set rather than just the modified action, but says nothing about auth requirements or side effects on other actions.
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?
One compact sentence that front-loads the operation and appends only the return-value note. No 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 2-parameter mutation with fully documented nested schema, the description covers purpose and return semantics adequately. It could say more about how this relates to grant/revoke, but nothing essential to invocation is 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?
Schema description coverage is 100%, so both survey_id and the nested body fields are already documented. The description restates the action enum values already present in the schema and adds no format or syntax detail beyond 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?
States a specific verb+resource: setting the access level of one Forms survey action (change or submit). Clear and distinct from read-oriented siblings like forms_access_list, though it doesn't explicitly contrast with forms_access_grant/revoke.
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 when-to-use guidance, no prerequisites, and no mention of the closely related forms_access_grant, forms_access_revoke, or forms_access_list siblings. The agent must infer that this modifies an existing permission rather than granting a new one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_answers_deleteDelete a Forms answerADestructive
Delete one answer of a form; answers_restore brings it back.
| Name | Required | Description | Default |
|---|---|---|---|
| answer_id | Yes | Answer id (integer) from answers_list. | |
| survey_id | Yes | Form id (24-char hex). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new behavioral context by disclosing that the deletion is recoverable via answers_restore, which annotations cannot express, though it says nothing about permissions or side effects on exports/aggregates.
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 clause stating the action, followed immediately by the recovery path. Zero padding; every 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?
For a two-parameter destructive call with full schema coverage and annotation-backed safety hints, the description gives an agent what it needs: what it destroys, at what granularity, and how to undo it. Minor omissions (permission requirements, effect on derived data) keep it from being exhaustive.
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 both required parameters documented in-schema (answer_id sourced from answers_list, survey_id as 24-char hex). The description adds no parameter-level detail, 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?
States a specific verb (delete) and a precisely scoped resource (one answer of a form), leaving no ambiguity about granularity. It also names the recovery counterpart answers_restore, which lets an agent distinguish this from restore-style siblings without opening either schema.
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?
Provides clear context that this is the removal path and that answers_restore is the inverse operation, implying when to reach for each. It stops short of explicit when-not guidance (e.g., when to prefer restore, or what happens if the answer id is unknown).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_answers_exportExport Forms answersA
Start an async export of a form's answers (csv/xlsx); returns the operation to poll.
An empty body exports every answer as xlsx. Poll the returned id with
operations_get until the status is terminal; download the finished file with the
forms answers export --wait CLI command (binary payload — not exposed over MCP).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /v1/surveys/{id}/answers/export`` (start an async export). Every field is optional — the API defaults ``format`` to ``xlsx`` and ``upload`` to ``default``. Unset (``None``) fields are dropped before the request is sent, so a bare ``AnswerExport()`` exports every answer of the form in ``xlsx``. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark readOnlyHint=false/openWorldHint=true but don't convey the async model. The description adds crucial context the annotations cannot: the call returns a pollable operation, an empty body defaults to exporting everything as xlsx, and the binary result is not retrievable over MCP. It omits retry/idempotency nuance (idempotentHint=false means a re-invocation starts a new export).
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?
Front-loads the core action, then the operational workflow in a tight second sentence. No filler; every clause carries actionable 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?
With no output schema, the description usefully explains the return (operation id to poll) and how to obtain the file. It leaves 'terminal' status semantics and failure handling unspecified, but covers what an agent needs to invoke and follow up 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%, so the nested body fields are fully documented already; the description's 'empty body exports every answer as xlsx' largely restates the schema's own default note. 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?
States a specific verb and resource ('Start an async export of a form's answers') with output formats, distinguishing it from read-oriented siblings like forms_answers_list. An agent can tell immediately this initiates a job rather than returning 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?
Gives a clear usage workflow: poll the returned id with operations_get until terminal, then download via the CLI. It does not explicitly contrast with forms_answers_list or state when-not to use this, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_answers_getGet Forms answerARead-onlyIdempotent
One full form response by answer_id or answer_key (the API takes one of them).
A flat query-param route (GET /v1/answers) — no survey id needed. Each data
item is a self-describing question record ({id, label, type, value, …}).
| Name | Required | Description | Default |
|---|---|---|---|
| answer_id | No | Numeric answer id (from ``answers_list``; needs form-edit access). | |
| answer_key | No | Answer key hash — works without form-edit access. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so safety is covered. The description adds genuinely useful behavioral context beyond that: the route is a flat GET /v1/answers with no survey id required, and each data item is a self-describing record ({id, label, type, value, …}), which compensates for the missing 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?
Front-loads the core purpose in the first clause, then adds two compact sentences on routing and response shape. No filler, though the RST-style backticks add slight noise.
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 output schema, the description usefully sketches the response structure and notes the flat route, covering the main gaps for a simple read tool. It stops short of explaining pagination or error behavior, but nothing critical to calling it is 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?
Schema description coverage is 100%, so both parameters are already documented in the schema, including the access-level difference between answer_id and answer_key. The description only adds that the API accepts one of them, which is marginal additional meaning.
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?
States a specific verb+resource: retrieve 'one full form response' by answer_id or answer_key. The word 'one' implicitly distinguishes it from the list/export siblings in the forms_answers_* family, though no sibling is named explicitly.
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 when-to-use or when-not-to-use guidance, and no alternative is named. The only selection hint is implicit in the parameter notes (answer_id needs form-edit access, answer_key does not), which is largely a restatement of the schema rather than routing advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_answers_integrations_listList Forms answer integrationsARead-onlyIdempotent
The integration runs one answer triggered, by answer_id or answer_key (one of them).
Each entry has the run's status and the field of its type (issue_key, link,
to_address, url, ...); notifications_get has the full run.
| Name | Required | Description | Default |
|---|---|---|---|
| answer_id | No | Numeric answer id (from ``answers_list``; needs form-edit access). | |
| answer_key | No | Answer key hash — works without form-edit access. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuine return-shape context absent from annotations: each entry carries the run's status and its type field (issue_key, link, to_address, url, ...), and it routes the agent to notifications_get for the full run detail.
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?
It is short and front-loads the resource, but the first sentence is awkwardly worded and requires re-reading, and the two clauses about entry fields and notifications_get are compressed to the point of ambiguity. No wasted padding, but clarity suffers for the size.
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 output schema, the description is the only source of return-value information, and it does partially cover that (status, type field) plus where to get full detail. However, it never clarifies ordering, pagination, or whether a missing run is returned, leaving gaps for an agent that needs to interpret the list.
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, but the description adds a constraint the schema does not express: exactly one of answer_id or answer_key must be supplied ('one of them'). The schema marks both as optional with null defaults, so this clarification is real added semantics beyond the structured field 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 identifies the resource as integration runs triggered by an answer and states the two filter inputs, so an agent can tell it lists per-answer integration activity rather than the answers themselves. The opening sentence ('The integration runs one answer triggered, by answer_id or answer_key') is grammatically garbled, which slightly blunts an otherwise clear verb+resource statement.
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?
It implies usage by saying the runs are triggered 'by answer_id or answer_key (one of them)', and it points to notifications_get for the full run, which is a mild alternative pointer. But there is no explicit when-to-use/when-not statement or condition distinguishing this summary listing from other forms_answers_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_answers_listList Forms answersARead-onlyIdempotent
A form's responses, at most limit (drains pages via the next cursor).
Returns the {columns, answers, next} envelope; next is always None
in the merged result.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max answers to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| date_to | No | ISO-8601: answers given at or before. | |
| ordering | No | ``asc`` is oldest first; the default is ``desc``. | |
| date_from | No | ISO-8601: answers given at or after. | |
| page_size | No | Answers per request (the API's default is 25). | |
| questions | No | Comma-separated question ids to return answers for. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| use_slugs | No | Name questions and options by slug instead of id. | |
| answer_format | No | ``default`` (cells aligned to ``columns``) or ``raw`` (each answer's data as stored, with no ``columns``). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety is covered. The description adds a genuinely useful non-obvious behavior: it drains pages internally via the cursor and merges results so that 'next' is always None in the returned envelope.
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 tight sentences with no waste, and the core behavior (bounded result plus auto-paging) is front-loaded. Minor awkwardness in phrasing ('A form's responses, at most limit') but structurally sound.
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 output schema, the description usefully explains the {columns, answers, next} return envelope and the merged-pagination semantics. Permissions, rate limits, and error behavior are unaddressed, but for a read-only list tool this is largely 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 all 9 parameters (limit, date_from/to, ordering, page_size, questions, survey_id, use_slugs, answer_format) are already documented in the schema. The description only adds meaning for 'limit' and the envelope shape, so the 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?
States a specific verb+resource: listing a form's responses/answers, and clarifies the paging model. It does not explicitly differentiate from siblings like forms_answers_get or forms_answers_export, so an agent must infer the distinction from the name.
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 on when to choose this over forms_answers_get, forms_answers_export, or forms_answers_integrations_list, and no prerequisites or exclusions are stated. Usage is only implied by the verb 'list'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_answers_restoreRestore a deleted Forms answerC
Bring a deleted answer of a form back.
| Name | Required | Description | Default |
|---|---|---|---|
| answer_id | Yes | Id of the deleted answer (integer). | |
| survey_id | Yes | Form id (24-char hex). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, and idempotentHint=false. The description adds no behavioral context beyond restating the action, such as permission requirements, side effects, or whether repeated calls have different effects. It does not contradict the annotations, but it adds no value 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, front-loaded sentence with no wasted words. However, its extreme brevity borders on under-specification rather than optimal conciseness for a mutation 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 two-parameter restore operation with no output schema and annotations covering safety, the description is minimally adequate. It conveys the core action, but omits prerequisites, permission context, and any note about non-idempotency, which could matter to an 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%, and both parameters (answer_id and survey_id) are fully documented in the schema. The description adds no additional parameter meaning, 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 states a clear verb and resource: bringing a deleted answer of a form back. It distinguishes the action from deletion, though it doesn't explicitly name sibling tools like forms_answers_delete or forms_answers_get. The purpose is immediately understandable.
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 when-to-use guidance, prerequisites, or alternatives are provided. The phrase 'deleted answer' implies the answer must already be deleted, but there is no explicit instruction about when to use this vs. other answer-related tools or what happens if the answer is not deleted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_hook_createCreate Forms integration-group conditionB
Add a condition group to an integration group; returns it with its id.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The new group: operator + at least one clause. | |
| hook_id | Yes | Integration group id (integer) from hooks_list. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnly=false, idempotent=false, destructive=false, openWorld=true), so safety is covered. The description adds one useful behavioral fact — the response includes the created entity's id — but omits auth/permission requirements and any note that the referenced hook must already exist.
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 zero filler that leads with the action and ends with the return value. It is arguably too terse for a tool with a nested object body, but nothing is wasted.
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 3-required-param nested mutation with no output schema and 100% schema coverage, the description is adequate but thin: it does not explain the effect of the condition group on the integration group, nor when the hook must pre-exist. Annotations and schema carry most of the burden, so a 3 fits.
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 survey_id, hook_id, and the nested body fully documented (including the note contrasting write vs read clause semantics). The description adds no parameter detail beyond what the schema already provides, so the 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?
States a specific verb (Add) and resource (a condition group to an integration group), and even discloses the return shape (the created group with its id). An agent can distinguish it from forms_conditions_hook_update / _set_operator by the create action, though the description never names those siblings explicitly.
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 when-to-use guidance, no prerequisites, and no reference to the neighboring forms_conditions_hook_* tools (update, set_operator, delete). The agent must infer that this is for creating a new group rather than modifying an existing one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_hook_deleteDelete Forms integration-group conditionBDestructive
Delete one condition group from an integration group; the others stay untouched.
| Name | Required | Description | Default |
|---|---|---|---|
| hook_id | Yes | Integration group id (integer) from hooks_list. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| condition_id | Yes | Condition group id (integer) from the matching *_list tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description usefully adds that only the targeted condition group is removed while others persist, but says nothing about reversibility, permissions, or side effects on the integration group.
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 filler; the scope qualifier is placed where it reads naturally. Efficient, though extremely terse for a destructive operation.
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 three required params, no output schema, and annotations carrying the safety profile, the description is minimally sufficient. It omits any note on irreversibility or what the caller observes after deletion, which for a destructive tool is a meaningful 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?
Schema coverage is 100% and each parameter description already names its source tool (hooks_list, surveys_list, matching *_list). The prose adds no parameter-level detail beyond the schema, so the 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?
States a specific verb and resource: 'Delete one condition group from an integration group.' An agent can distinguish it from the hook_create/update/set_operator siblings. Minor terminology drift ('condition group' here vs 'condition' in the title/name) keeps it from 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?
No when-to-use guidance, no prerequisites, and no alternatives named. The clause 'the others stay untouched' clarifies scope of effect but not when this tool should be chosen over, say, updating the condition or deleting the whole hook.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_hook_getGet Forms integration-group conditionARead-onlyIdempotent
One condition group of an integration group by id — its operator and clauses.
| Name | Required | Description | Default |
|---|---|---|---|
| hook_id | Yes | Integration group id (integer) from hooks_list. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| condition_id | Yes | Condition group id (integer) from the matching *_list tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds only that the result carries an operator and clauses; it says nothing about auth requirements, error behavior for a missing condition, or nesting under an integration group.
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 clause with zero filler; the resource, the lookup key, and the returned fields are all stated up front.
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?
No output schema exists, so the description's mention of operator and clauses is a useful partial disclosure of return shape. However, for a three-parameter read tool that nests under hooks/forms, it leaves the calling context and failure modes unstated.
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 each parameter is documented with its source tool (surveys_list, hooks_list, matching *_list). The description adds nothing beyond 'by id', so the 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?
Specific verb + resource: it fetches a single integration-group condition group by id and even names the payload (operator and clauses). It is distinguishable from the *_list/*_create/*_update siblings, though the description never names those siblings explicitly.
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 'by id' and by the sibling naming convention (forms_conditions_hook_list), but there is no explicit statement of when to call this versus the list tool, nor of any prerequisite (e.g. that the hook/condition must already exist).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_hook_listList Forms integration-group conditionsBRead-onlyIdempotent
An integration group's conditions: the {operator, items} envelope of groups.
The group's integrations run on a new answer only when these conditions match.
| Name | Required | Description | Default |
|---|---|---|---|
| hook_id | Yes | Integration group id (integer) from hooks_list. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it read-only, idempotent, and open-world, so the safety profile is covered. The description adds domain behavior — that the group's integrations fire on a new answer only when these conditions match — which helps interpretation, but says nothing about auth requirements, scope, or result size.
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 short sentences with no filler, front-loading the resource and its shape. The noun-phrase opening is slightly awkward as an action statement but costs nothing in clarity.
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 output schema, the description usefully sketches the returned structure (``{operator, items}``) that an agent would otherwise have to guess, and the two required parameters are fully covered by the schema. Minor gaps remain (ordering, whether items may be empty) but nothing essential is missing for a simple read.
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%: hook_id (integer from hooks_list) and survey_id (24-char hex from surveys_list) are both documented in the schema, and the description adds no syntax or format detail beyond that. Baseline 3 applies when the schema does the heavy lifting.
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 names the resource precisely — an integration group's (hook's) conditions — and explains that they form a ``{operator, items}`` envelope. That distinguishes it from the sibling question/page/submit condition listers, though the description never uses an explicit verb like 'list' or 'retrieve' and relies on the name for that.
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?
There is no statement of when to call this versus forms_conditions_hook_get, forms_hooks_list, or the other condition listers. The second sentence explains what the conditions mean semantically, but that is domain context, not usage guidance or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_hook_updateModify Forms integration-group conditionAIdempotent
Replace an integration group's condition group — a FULL replacement.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | FULL replacement (PATCH validates the complete group). | |
| hook_id | Yes | Integration group id (integer) from hooks_list. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| condition_id | Yes | Condition group id (integer) from the matching *_list tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety and repeatability profile is covered. The description does add real value by warning that this is a FULL replacement, meaning clauses omitted from the body are dropped — a consequence not visible from the annotations. It does not, however, describe the response or error 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?
A single sentence, front-loaded with the action and resource, with the critical caveat ('a FULL replacement') placed where it cannot be missed. No 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 nested-body mutation with no output schema and a genuinely destructive-to-existing-data semantic, the description conveys the replacement behavior but says nothing about what the call returns, permission requirements, or what happens on a malformed group. The rich input schema and annotations carry most of the load, leaving this adequate but thin.
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 nested body schema is unusually well documented (clause types, operators, the 100-char value cap, the absence of a per-clause operator). The description adds no parameter-level detail beyond what the schema already provides, so the 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?
States a specific verb (Replace) and resource (an integration group's condition group), and the 'FULL replacement' qualifier distinguishes it from the sibling forms_conditions_hook_set_operator, which only touches the operator. It stops short of explicitly naming that sibling, so differentiation is implied rather than spelled out.
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 'FULL replacement' framing implies when this is appropriate (rewriting an entire condition group) versus a narrower update, but no alternative is named and no prerequisites or exclusions are given. Usage is inferable from the emphasis rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_hook_update_operatorSet Forms integration-group conditions operatorBIdempotent
Set the boolean operator BETWEEN an integration group's condition groups.
| Name | Required | Description | Default |
|---|---|---|---|
| hook_id | Yes | Integration group id (integer) from hooks_list. | |
| operator | Yes | Boolean operator joining the condition groups. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so safety is covered. The description adds the useful structural fact that the operator joins condition groups (a relationship-level mutation), but says nothing about permissions, side effects on existing conditions, or error 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?
A single, front-loaded sentence that states the mutation target without filler. Efficient, though it could carry one more clause of routing guidance without bloating.
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 low-complexity, three-parameter mutation with full schema coverage and annotations covering the safety profile, the description supplies enough structural context. The main omission is the absence of any routing note relative to its near-identical sibling tools.
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 hook_id, survey_id and operator are all documented in the schema; baseline is 3. The description reinforces what 'operator' means but adds no syntax or value guidance 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?
States a specific verb (set) and a precise resource (the boolean operator between an integration group's condition groups), which distinguishes it from the broader sibling forms_conditions_hook_update. It does not explicitly name that sibling as the alternative, but the scope is narrow 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?
There is no when-to-use guidance, no prerequisites, and no mention of the sibling tools (forms_conditions_hook_update, forms_conditions_hook_create) that an agent must choose between. Usage is only weakly implied by the verb 'set'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_page_createCreate Forms page show conditionA
Add a condition group to a page — the page shows only when its conditions match.
Page clauses still reference QUESTION slugs (type=question + question). Returns the
created group with its server-assigned integer id.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The new group: operator + at least one clause. | |
| page_id | Yes | Page id (integer) from questions_list pages. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false and idempotent=false, so the safety profile is covered. The description adds value beyond them by disclosing the return value ('the created group with its server-assigned integer id') and the semantic effect on page visibility, which the annotations cannot convey.
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 tight sentences with the core effect (page shows only when conditions match) front-loaded, followed by one useful constraint and the return value. No filler, and the break before the return sentence aids scanning.
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 non-idempotent mutation with no output schema, the description covers the essential gaps: what it creates, its visibility effect, and the shape of the response. It omits error/conflict behavior and any interaction with the existing operator, but nothing critical to a correct call is 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?
Schema coverage is 100% and the nested clause object is thoroughly documented, so the baseline is 3. The note that clauses reference question slugs repeats what the schema already states for the 'question' field, adding only marginal reinforcement rather than new meaning.
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 names a specific verb (add) and resource (condition group on a page) and adds real semantics — 'the page shows only when its conditions match.' The 'page' scope implicitly separates it from the sibling forms_conditions_question_create, but no sibling is named explicitly, so it falls short of full routing clarity.
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 only implied: the agent can infer this is the write path for page show-conditions, but the description never states when to use it versus forms_conditions_question_create, forms_conditions_page_update, or forms_conditions_page_set_operator. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_page_deleteDelete Forms page show conditionBDestructive
Delete one condition group from a page; the other groups stay untouched.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Page id (integer) from questions_list pages. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| condition_id | Yes | Condition group id (integer) from the matching *_list tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered. The description adds useful scope information ('the other groups stay untouched') that annotations do not convey, but it says nothing about irreversibility, permissions, or error 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?
A single efficient sentence with the delete action front-loaded and no wasted words. It is appropriately sized 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 destructive delete with full schema coverage and annotations declaring the destructive/idempotency profile, the description is nearly complete. The absence of any note on reversibility or permissions is a minor gap that annotations partly cover.
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 three parameters (survey_id, page_id, condition_id) are documented in the schema. The description adds no parameter-level meaning beyond that, making the baseline 3 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?
States a specific verb (delete) and resource (one condition group from a page), and clarifies the scope of deletion. It is clear enough to separate from sibling conditions_page tools, though it never names an alternative to distinguish itself explicitly.
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?
There is no when-to-use or when-not-to-use guidance. The agent is not told how this relates to forms_conditions_page_update or forms_conditions_page_set_operator, nor any precondition for deleting a group.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_page_getGet Forms page show conditionBRead-onlyIdempotent
One condition group of a page by id — its operator and clause items.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Page id (integer) from questions_list pages. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| condition_id | Yes | Condition group id (integer) from the matching *_list tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds value by naming the returned payload shape (operator and clause items), which the annotations cannot convey. It stops short of noting missing-id behavior or any fetch caveats.
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 that states the resource, the lookup key, and the returned fields with no filler. Slightly telegraphic (em-dash fragment), but every element 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?
With no output schema, the description partially covers return values (operator, items) but does not characterize the response further, and says nothing about not-found or error behavior. Annotations carry the safety profile, and params are fully documented, so it is adequate but leaves gaps for a getter whose contract is otherwise unstructured.
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 all three required params (survey_id, page_id, condition_id) are documented in the schema itself, including their source tools. The description only restates 'by id' and adds no format, source, or constraint detail beyond the schema. 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 states a specific resource and scope: one condition group of a page retrieved by id, including the fields it returns (operator, items). This implicitly distinguishes it from the question/submit/hook condition getters, though it never names a sibling explicitly. Clear verb-resource pairing, just short of full 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?
There is no when-to-use guidance, no mention of prerequisites (e.g. that condition_id comes from a list call), and no routing away from forms_conditions_page_list or the question/submit/hook variants. The agent must infer usage entirely 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.
forms_conditions_page_listList Forms page show conditionsARead-onlyIdempotent
A page's show conditions: the {operator, items} envelope of condition groups.
The top-level operator joins the GROUPS; each group has its own operator joining its
clauses. A group's integer id is what the get/update/delete tools take.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Page id (integer) from questions_list pages. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description earns credit by disclosing the return structure with no output schema present: the nested operator semantics (top-level joins groups, group-level joins clauses) and the meaning of the integer group id.
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?
Three tight sentences, front-loaded with the resource, then the nesting semantics, then the id routing. The heavy backtick markup is slightly noisy but the content is dense and waste-free.
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 output schema, the description appropriately explains the return envelope and its nesting, and annotations cover the safety profile. An agent has enough to call it and interpret the result; only explicit usage routing is thin.
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 both parameters (page_id, survey_id) are documented in the schema with source hints. The description adds no additional parameter meaning, so the 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 names the resource precisely (a page's show conditions) and characterizes it as the {operator, items} envelope of condition groups. It lacks an explicit verb like 'list/retrieve', but the resource and return shape make the operation unambiguous, and it distinguishes itself from siblings by noting the group id feeds the get/update/delete 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?
Usage is only implied: the note that a group's integer id is what get/update/delete take hints this is the read entry point that feeds those mutations, but there is no explicit when-to-use, when-not, or named alternative (e.g. forms_conditions_page_get).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_page_updateModify Forms page show conditionAIdempotent
Replace a page's condition group — a FULL replacement, not a partial update.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | FULL replacement (PATCH validates the complete group). | |
| page_id | Yes | Page id (integer) from questions_list pages. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| condition_id | Yes | Condition group id (integer) from the matching *_list tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotency, non-destructiveness and open-world behavior, but the description adds the critical semantic that this is a whole-group replacement rather than a merge — a real behavioral trait an agent needs to avoid silently dropping clauses. It stops short of stating what happens to omitted clauses or permission requirements.
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 that states the action and the one non-obvious semantic caveat with zero waste. Nothing to trim.
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 four-required-param mutation it covers the key trap (full replacement) and relies on annotations plus the 100%-covered schema for the rest. Missing details are minor: no mention of auth scope or that condition_id must reference an existing group.
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%, including rich nested descriptions for operator, items, type, value, question and condition, so the schema carries parameter meaning. The description adds no parameter-level detail beyond what the schema provides, which is the expected 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?
Specific verb (replace) plus resource (a page's condition group), so an agent can tell it apart from the page condition create/list/get siblings. It does not explicitly contrast with forms_conditions_page_set_operator or page_create, but the semantics are clear.
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 statement of when to use this tool versus alternatives (set_operator, page_create, page_delete). The 'FULL replacement' note implies intent but never tells the agent the precondition (an existing condition group must exist) or when to prefer set_operator instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_page_update_operatorSet Forms page conditions operatorBIdempotent
Set the boolean operator BETWEEN a page's condition groups; returns the envelope.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Page id (integer) from questions_list pages. | |
| operator | Yes | Boolean operator joining the condition groups. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=true, destructive=false, and openWorld=true, so the safety and mutation profile is covered. The description only adds "returns the envelope," which is thin context; it does not explain what preconditions the page must satisfy (e.g., existing condition groups) before the operator can be set.
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 clause that front-loads the action and the affected object, with the return note appended. No padding or 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?
For a simple three-parameter idempotent setter with rich annotations and full schema coverage, this is nearly sufficient. The only shortfall is the lack of routing guidance among the four similarly named operator tools, which a complete definition should address.
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 page_id, operator, and survey_id are already documented, including the and/or values. The description's "BETWEEN a page's condition groups" marginally clarifies operator scope but adds no format or constraint detail 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?
Specific verb ("Set") plus precise resource: the boolean operator joining a page's condition groups. This clearly differentiates it from forms_conditions_page_update (which edits the conditions themselves) and from the question/submit/hook operator siblings, though no sibling is named explicitly.
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 on when to use this versus forms_conditions_page_update, forms_conditions_question_update_operator, forms_conditions_submit_update_operator, or forms_conditions_hook_update_operator. The agent must infer context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_question_createCreate Forms question show conditionA
Add a condition group to a question — it shows only when its conditions match.
The group operator joins the clauses WITHIN it; at least one clause is required.
Returns the created group with its server-assigned integer id.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The new group: operator + at least one clause. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| question_id | Yes | Question id (integer) from questions_list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnly=false, destructive=false, idempotent=false). The description adds genuine context beyond them: the minimum-clause constraint and the fact that the response contains a server-assigned integer id, which matters for a non-idempotent create. It stops short of describing auth requirements or rate limits.
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 tight paragraphs, front-loaded with the action and its effect, followed by the two constraints that matter. No filler sentences.
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 nested-object mutation with no output schema, the description covers the required structure constraint and the return shape (created group with integer id), which is exactly what the missing output schema would otherwise supply. Remaining gaps are minor: no permissions or error behavior noted.
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 operator, items, clause type/value/question/condition in detail. The description's note that operator joins clauses WITHIN the group and that at least one clause is required largely restates the body schema description, adding only marginal clarification. 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?
States a specific verb and resource ('Add a condition group to a question') and immediately explains the semantic effect ('it shows only when its conditions match'). The 'question' scoping distinguishes it from the sibling forms_conditions_page/hook/submit_create tools, so an agent can route to it without opening the schema.
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 purpose and the scoping to questions, but there is no explicit when-to-use guidance and no mention of the neighboring forms_conditions_question_update, set_operator, or list tools. The agent must infer that this is the creation entry point from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_question_deleteDelete Forms question show conditionADestructive
Delete one condition group from a question; the other groups stay untouched.
| Name | Required | Description | Default |
|---|---|---|---|
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| question_id | Yes | Question id (integer) from questions_list. | |
| condition_id | Yes | Condition group id (integer) from the matching *_list tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and non-idempotent behavior, so the safety profile is covered. The description adds real value beyond them by clarifying the blast radius: only one condition group is removed and sibling groups are preserved, which an agent cannot infer from destructiveHint alone.
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 the scope constraint stated immediately; every clause earns its place with no 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, low-complexity destructive call with full schema coverage, the description plus annotations supply what an agent needs: the action, its destructive nature, and the partial-deletion scope. Additional context such as whether deletion is reversible or requires an unpublished survey is absent but not strictly required.
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 three parameters (survey_id, question_id, condition_id) are already documented in the schema with their sources. The description adds no further meaning about parameter formats or constraints, 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?
States a specific verb and resource (delete one condition group from a question) and adds the crucial scope qualifier that other groups remain untouched. It does not explicitly distinguish itself from the parallel forms_conditions_page_delete / _submit_delete / _hook_delete siblings, but the 'question' scope is 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 the operation is a targeted single-group removal, which hints at when it is appropriate versus a broader delete. It gives no explicit when-to-use guidance, no prerequisites, and does not point to forms_conditions_question_list as the source of condition_id or to set_operator for other modifications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_question_getGet Forms question show conditionARead-onlyIdempotent
One condition group of a question by id — its operator and clause items.
Clauses have no ids of their own: edit one by replacing the whole group via
conditions_question_update.
| Name | Required | Description | Default |
|---|---|---|---|
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| question_id | Yes | Question id (integer) from questions_list. | |
| condition_id | Yes | Condition group id (integer) from the matching *_list tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so the safety profile is covered. The description adds genuinely useful behavior beyond that: clause items are id-less, so mutation must happen at the group level via conditions_question_update, and it hints at the returned shape.
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 short sentences, front-loaded with what is returned, then the one non-obvious constraint. No 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?
With no output schema, the description usefully sketches the return shape (operator + clause items) and flags the id-less clause constraint. Complete enough for a 3-param read tool, though it could mention pagination or empty/missing-group behavior.
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 schema already documents survey_id, question_id and condition_id, including their source tools. The description adds only the notion that operator/items are the group contents, which is marginal beyond 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?
States a specific verb+resource: fetching a single condition group of a question by id, and names the returned fields (operator, clause items). It is clearly a single-item get rather than a list or mutation, though it does not explicitly contrast itself with forms_conditions_question_list.
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?
Gives clear context plus a routing hint: clauses have no ids, so editing one must be done by replacing the whole group via conditions_question_update. It does not explicitly state when to prefer this over the *_list tool, but the single-group-by-id framing implies it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_question_listList Forms question show conditionsARead-onlyIdempotent
A question's show conditions: the {operator, items} envelope of condition groups.
The top-level operator joins the GROUPS; each group has its own operator joining its
clauses. A group's integer id is what the get/update/delete tools take.
| Name | Required | Description | Default |
|---|---|---|---|
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| question_id | Yes | Question id (integer) from questions_list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), and the description adds genuinely useful behavioral context: the two-level operator/items structure and the fact that group ids are the handles other tools consume. This is real value beyond the annotations, though it says nothing about pagination or empty results.
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 short paragraphs, front-loaded with the purpose and then the structural detail. Every sentence carries information, though the backtick-heavy formatting is slightly noisy.
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 output schema, the description usefully explains the return envelope and the group-id relationship, which is the main thing an agent needs to consume the result and chain into sibling tools. Missing only minor details like pagination or empty-list behavior.
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 both survey_id and question_id are fully documented in the schema, including the 24-char hex format and source tool. The description adds no parameter-level meaning, which is the expected baseline when the schema does the work.
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 identifies the resource (a question's show conditions) and characterizes the return shape as a {operator, items} envelope, and it names the sibling get/update/delete tools that consume a group's integer id. The list verb is implied rather than stated, and it does not sharply distinguish itself from forms_conditions_question_get, but the resource and scope are clear.
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?
There is no explicit statement of when to call this versus forms_conditions_question_get or the page/submit/hook condition variants. The only guidance is indirect — that group ids feed the get/update/delete tools — which requires the agent to infer the routing itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_question_updateModify Forms question show conditionAIdempotent
Replace a question's condition group — a FULL replacement, not a partial update.
Despite the PATCH verb the API validates a complete group: operator and at least one
clause are both required; the group id is never sent.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | FULL replacement (PATCH validates the complete group). | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| question_id | Yes | Question id (integer) from questions_list. | |
| condition_id | Yes | Condition group id (integer) from the matching *_list tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and idempotentHint=true, so safety is partly covered. The description adds genuinely non-obvious behavior: the API validates a complete group despite the PATCH verb, requiring both operator and at least one clause, and that the group id is never transmitted in the body.
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, front-loaded with the replacement semantics and the PATCH caveat. No filler; every clause carries a constraint the agent needs.
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 nested, four-parameter mutation with no output schema, the description covers the critical gotcha (full replacement, required fields, id exclusion) and the schema covers the rest. Minor gap: no mention of return value or error behavior, but no output schema exists to defer to.
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, but the description adds real meaning — it clarifies that condition_id identifies the target group while the group id itself is excluded from the payload, and reiterates the required operator plus at-least-one-clause constraint at the top level.
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?
States a specific verb+resource — replacing a question's condition group — and immediately qualifies it as a FULL replacement rather than a partial update. An agent can distinguish this from forms_conditions_question_set_operator and forms_conditions_question_create without opening a schema.
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?
Gives clear context for selecting this tool: it is used when the entire condition group must be replaced, and it warns that the PATCH verb is misleading. It does not name the sibling alternatives (set_operator, create) or their selecting conditions, so it falls short of explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_question_update_operatorSet Forms question conditions operatorAIdempotent
Set the boolean operator BETWEEN a question's condition groups; returns the envelope.
Group-internal operators are untouched — change those via conditions_question_update.
| Name | Required | Description | Default |
|---|---|---|---|
| operator | Yes | Boolean operator joining the condition groups. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| question_id | Yes | Question id (integer) from questions_list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the write/idempotent/non-destructive profile, and the description adds useful scope detail: only the between-group operator is affected, group-internal operators are untouched, and it returns the envelope. Since there is no output schema, disclosing the return is extra value beyond 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 tightly scoped sentences; the primary action is front-loaded and the disambiguation clause follows immediately with zero 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 3-required-param mutation tool with full schema coverage and annotations carrying the safety profile, the description is nearly complete, supplementing with the scope constraint and return mention. The only minor gap is it doesn't elaborate on error/auth conditions.
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 operator param already documents it as the boolean operator joining condition groups. The description restates this without adding format, enum, or default details 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?
States a specific verb and resource: setting the boolean operator between a question's condition groups. It explicitly contrasts with ``conditions_question_update`` for group-internal operators, so an agent can distinguish this scope from the sibling without opening either schema.
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?
Draws a clear boundary: this tool changes the operator BETWEEN condition groups, and names ``conditions_question_update`` as the alternative for within-group operators. The when-not plus named alternative is strong, though broader usage context is not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_submit_createCreate Forms submit-button show conditionB
Add a condition group gating the form's submit button; returns it with its id.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The new group: operator + at least one clause. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-idempotent write (readOnlyHint=false, idempotentHint=false) that is non-destructive. The description adds one useful behavioral fact beyond them — that the created group is returned with its id, which matters since there is no output schema — but says nothing about permissions or limits.
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 covering action, target, scope, and return value with zero 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 rich nested schema and the annotations carry most of the burden, and the return-value note compensates for the absent output schema. However, for a write tool creating a gating group, the description omits prerequisites and how this interacts with the existing submit-condition (update/set_operator siblings).
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 nested body/clause structure is fully documented in the schema, so the baseline of 3 applies. The description contributes no additional meaning about body, operator, or clause fields.
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?
States a specific verb (Add), resource (condition group), and scope (gating the form's submit button), plus the return value. This clearly separates it from the question/page/hook condition families via the 'submit button' scope, though it does not name sibling tools 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?
No guidance on when to use this versus forms_conditions_submit_update or the sibling condition families, and no stated prerequisites (e.g. the form must exist, ordering constraints). Usage must be inferred from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_submit_deleteDelete Forms submit-button show conditionBDestructive
Delete one condition group from the submit button; the other groups stay untouched.
| Name | Required | Description | Default |
|---|---|---|---|
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| condition_id | Yes | Condition group id (integer) from the matching *_list tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds one genuinely useful behavioral fact beyond the annotations: the deletion is scoped and leaves other condition groups intact. It says nothing about reversibility, required permissions, or failure behavior for an invalid condition_id.
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 zero filler; the destructive action and its scope bound are both stated 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?
For a two-parameter destructive delete, the description plus annotations and a fully documented schema cover what an agent needs to invoke it correctly. Minor gaps remain around failure modes and whether the group's operator/child conditions are also removed.
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 both survey_id and condition_id documented inline including where to source them (surveys_list, the matching *_list tool). The description adds no parameter detail, so the 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?
States a specific verb ('Delete') and resource ('one condition group from the submit button'), and the scope note ('the other groups stay untouched') makes it clear this targets the submit-button condition set rather than the question/page/hook condition sets. It does not explicitly name those sibling tools, so it stops short of 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?
There is no guidance on when to use this versus forms_conditions_submit_update, forms_conditions_submit_set_operator, or the analogous question/page/hook delete tools, and no prerequisites or exclusions are given. Usage is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_submit_getGet Forms submit-button show conditionARead-onlyIdempotent
One condition group of the submit button by id — its operator and clauses.
| Name | Required | Description | Default |
|---|---|---|---|
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| condition_id | Yes | Condition group id (integer) from the matching *_list tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds that the returned group exposes its 'operator and clauses', which is modest but useful context given there is no output schema. It does not mention auth requirements or error 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?
A single sentence, front-loaded with the resource and its id-scoping, with no filler. Every 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?
For a simple two-parameter read tool whose annotations cover safety and whose schema fully documents inputs, the description is nearly sufficient, and it partially compensates for the absent output schema by naming the returned fields. A brief note on what a 'clause' contains would make it 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% — both survey_id (24-char hex, from surveys_list) and condition_id (integer, from the matching *_list tool) are fully documented in the schema. The description adds no parameter detail beyond what the schema provides, 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?
States a specific verb (get) and resource (one condition group of the submit button, by id), and the 'submit button' qualifier distinguishes it from the question/page/hook condition getters. It does not name the sibling list tool it complements, but the 'one ... by id' framing implies the distinction.
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 only implied by 'by id' — the agent infers it needs a known condition_id, and the schema confirms the id comes from a *_list tool. There is no explicit when-to-use statement, no exclusion, and no named alternative (e.g. forms_conditions_submit_list) for enumerating conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_submit_listList Forms submit-button show conditionsBRead-onlyIdempotent
The submit button's show conditions: the {operator, items} envelope of groups.
These hang directly on the survey (GET /surveys/{id}/conditions).
| Name | Required | Description | Default |
|---|---|---|---|
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description usefully adds the return shape (a {operator, items} envelope of groups) and that these conditions attach to the survey rather than a question/page, but says nothing about ordering, pagination, or what happens when no conditions exist. With annotations carrying the behavioral burden, this is adequate 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?
Two short sentences with no padding, and the resource identity is front-loaded in the first sentence. The backtick-heavy, fragment-style phrasing ('the ``{operator, items}`` envelope of groups') is slightly awkward but does not waste space.
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 list tool whose annotations cover safety and whose single parameter is fully documented, the description is close to sufficient, and it helpfully sketches the response envelope given there is no output schema. It still leaves gaps: no explanation of what a 'show condition' does or whether the list can be empty/paginated.
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?
There is a single parameter and schema description coverage is 100%, with the schema itself explaining the 24-char hex form id and its source (surveys_list). The description adds nothing about survey_id, which is the expected baseline when the schema fully documents the parameter.
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 names a specific resource (the submit button's show conditions) and even gives the REST endpoint (GET /surveys/{id}/conditions), so an agent can tell it retrieves rather than mutates conditions. It implicitly distinguishes itself from question/page/hook condition lists by tying the conditions to the survey itself, though it never names those siblings explicitly.
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 only implied: the phrase 'the submit button's show conditions' narrows the scope versus forms_conditions_question_list or forms_conditions_page_list, and 'hang directly on the survey' hints at the grouping model. There is no explicit when-to-use statement or pointer to the get/create/update/set_operator siblings for this condition type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_submit_updateModify Forms submit-button show conditionAIdempotent
Replace a submit-button condition group — a FULL replacement, not a partial update.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | FULL replacement (PATCH validates the complete group). | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| condition_id | Yes | Condition group id (integer) from the matching *_list tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is partly covered. The description adds genuinely useful context beyond that: this is a complete replacement that overwrites the existing condition group rather than merging, which is important for an agent to know before calling. It does not mention auth requirements, side effects on the form, or return shape.
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 zero waste; the critical constraint (full replacement) is placed immediately and highlighted. Nothing could be removed without losing meaning.
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 3-parameter mutation with annotations present, no output schema, and fully documented nested parameters, the description covers the highest-value gap: that the operation replaces the entire group. Minor omissions remain (prerequisites, effect on the group's operator), but an agent has enough to call 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%, so the schema already documents survey_id, condition_id, and the nested body (operator, items, clause fields) in detail. The description adds no further parameter meaning, so the 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?
States a specific verb and resource ("Replace a submit-button condition group"), so an agent immediately knows the operation and target. The full-replacement semantics implicitly distinguish it from set_operator-style siblings, but no sibling is named explicitly, so it falls just short of 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 "FULL replacement, not a partial update" clause implies when this is the right choice versus an operator-only edit, but there are no explicit when-to-use/when-not statements, prerequisites (e.g., form must be unpublished), or named alternatives among the forms_conditions_submit_* siblings. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_conditions_submit_update_operatorSet Forms submit-button conditions operatorAIdempotent
Set the boolean operator BETWEEN the submit button's condition groups.
| Name | Required | Description | Default |
|---|---|---|---|
| operator | Yes | Boolean operator joining the condition groups. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare that this is a non-read-only, idempotent, non-destructive mutation (readOnlyHint=false, idempotentHint=true, destructiveHint=false). The description adds the scope ('between the submit button's condition groups') but discloses no further behavioral traits such as permission requirements or side effects beyond what the annotations provide.
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 wasted words. The key action and scope are immediately clear.
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 two-parameter, no-output setter with full schema coverage and annotations covering safety, the description is nearly sufficient. The main omission is explicit usage guidance relative to siblings, but the core action and scope are present.
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 are already documented in the schema. The description mentions the operator implicitly but adds no syntax, format, or additional meaning beyond the schema's own 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 states a specific verb ('Set') and a precise resource ('boolean operator BETWEEN the submit button's condition groups'). It distinguishes this tool from sibling operator updaters for question, page, and hook conditions, as well as from the general submit-condition update tool.
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 no guidance on when to use this tool versus alternatives such as forms_conditions_submit_update or the other *_update_operator siblings. Usage is only implied by the narrow action and name, with no explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_files_deleteDelete Forms fileADestructive
Delete a stored form-filling file, identified by its path and/or url.
At least one of path / url must identify the file. The API answers 200 OK with
no useful body, so the returned record confirms the accepted action.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | File download URL. | |
| path | No | File download path (from the upload response). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral detail beyond the annotations: the API returns 200 OK with no useful body, and the returned record merely confirms the accepted action, which helps an agent understand the response shape despite the lack of an 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 three tight sentences with the purpose front-loaded, followed by the identifier constraint and the return-behavior note. Every sentence adds distinct information with no wasted 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?
For a simple two-parameter delete tool with full schema coverage, rich annotations, and no output schema, the description covers the key gaps: the required identifier combination and the uninformative success response. It does not mention permissions or whether deletion is recoverable, but the destructiveHint annotation already signals permanence, so the description is largely 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 baseline is 3. The description adds a critical constraint not expressed in the schema: at least one of path or url must identify the file, even though both parameters are optional in the schema. This extra semantic rule meaningfully improves correct invocation.
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 ('Delete') and resource ('a stored form-filling file'), making the tool's purpose immediately clear. It does not explicitly distinguish this from the sibling forms_files_verify tool or mention when deletion is preferred over verification, so it stops short of full 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 implies usage through the delete action and provides the precondition that at least one of path/url must identify the file. It does not state when to use this tool versus alternatives such as forms_files_verify, nor does it offer exclusions or context about when deletion is inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_files_verifyVerify Forms filesARead-onlyIdempotent
Check the upload/scan status and download access of already-uploaded form-filling files.
A read done via POST — nothing is mutated. Each returned item's check_status is one of
check, ready, infected, error, deleted. Uploading and downloading the
files themselves are binary payloads — CLI/SDK-only.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | File references to check — each a ``{path, url}`` from an upload. | |
| survey_id | Yes | Form id (24-char hex) the files belong to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld, but the description adds real context beyond them: the operation is a read performed via POST (nothing mutated), and it enumerates the possible check_status values (check, ready, infected, error, deleted). With no output schema, that status enumeration is the only disclosure of return semantics.
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?
Three short, front-loaded sentences: purpose first, then the POST-read clarification, then the payload limitation. No filler and nothing buried.
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 two-parameter verification tool with no output schema, the description supplies the missing return-value semantics via the status enum and sets expectations about what the tool cannot do. An agent has everything needed 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%, so the schema already documents survey_id and the path/url file references. The description adds no syntax or format guidance beyond what the schema states, so the 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?
States a precise verb (verify/check) and resource (already-uploaded form-filling files) with the specific aspects checked: upload/scan status and download access. Clearly separable from sibling forms_files_delete, which removes rather than inspects the same files.
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?
Scopes usage to already-uploaded files and warns that uploading/downloading the payloads themselves are CLI/SDK-only, which steers the agent away from trying to do those via this tool. It does not explicitly name alternatives or state when to prefer this over, say, forms_filling_get.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_filling_getGet Forms fillable formARead-onlyIdempotent
The form's fill-time settings — the pages/questions to fill, submit conditions, and values.
Use this to discover a form's fillable structure: pages[].items[] are the questions (each a
polymorphic question schema) and their id values are the slug keys a response is posted
under. Complements surveys_get (admin settings) and questions_list (authoring view).
Post a response with filling_submit.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Personal-link fill key, when the form uses one. | |
| survey_id | Yes | Form id, its slug, or an id+verification-key combination. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds real behavioral context beyond that: the fill-time nature of the data, that pages[].items[] are polymorphic question schemas, and that item ids are the slug keys a response is posted under. No auth or rate-limit notes, but the disclosure is richer than the annotations alone.
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?
Front-loads what the tool returns, then the usage directive, then sibling routing — a sensible order with no filler. Slightly dense with backticked field paths, but every sentence carries 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?
There is no output schema, so the description compensates by describing the return structure (pages[].items[], id-as-slug-key) that an agent needs to consume the result, plus the downstream call to filling_submit. Nothing essential is missing for a read-only getter.
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% for the two parameters (survey_id, key), so the schema already documents them fully. The description adds no param-specific guidance (e.g. how key interacts with personal-link forms), so the 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?
States a specific verb and resource ('The form's fill-time settings') and immediately scopes it to pages/questions, submit conditions, and values. It explicitly distinguishes itself from surveys_get (admin settings) and questions_list (authoring view), so an agent can tell them apart without opening schemas.
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?
Gives an explicit use directive ('Use this to discover a form's fillable structure'), names the two sibling alternatives with the aspect each covers, and routes the follow-up action to filling_submit. When-to-use and the correct alternative are both stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_filling_submitSubmit Forms responseA
Submit a response to a published form: a REAL answer is saved unless validate_only.
body maps each question slug (discover them via filling_get) to its answer — a
scalar, a string list, a {begin, end} date range, or matrix {row, column} items.
Returns the success-page payload (answer_id confirms the save).
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Personal-link fill key, when the form uses one. | |
| body | Yes | Answer map keyed by question slug (see ``filling_get`` for the slugs). | |
| survey_id | Yes | Form id or slug of a published form. | |
| validate_only | No | Validate only — saves nothing and fires no integrations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=false and destructiveHint=false already declared, the description still adds meaningful behavior: it clarifies that a real answer is persisted by default, that validate_only suppresses the save, and that the success-page payload carries answer_id as confirmation of the write. Auth requirements and integration side effects are not expanded beyond the schema's note.
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?
Three compact sentences, front-loaded with the write semantics before the body format detail. The double-backtick markup is slightly noisy but does not obscure meaning; no sentence is wasted.
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 mutation with no output schema, the description covers the essential gaps: what is persisted, the dry-run switch, the answer-value grammar, and the confirmation field returned. The optional key/personal-link parameter is left entirely to the schema, a minor omission.
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 would be 3, but the description goes beyond the schema by enumerating the accepted answer value shapes (scalar, string list, {begin, end} date range, matrix {row, column} items) for a body that the schema types only as a free-form object. It also ties slug discovery to filling_get.
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?
Specific verb+resource: 'Submit a response to a published form', with the scope qualifier 'published' distinguishing it from the form-authoring siblings (forms_surveys_*, forms_questions_*). An agent can tell it apart from forms_filling_get/forms_filling_suggest and the forms_answers_* read/delete tools without opening any schema.
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?
Clearly states the mode-selection rule ('a REAL answer is saved unless validate_only') and names the prerequisite sibling for discovering slugs ('discover them via filling_get'). It does not explicitly enumerate when to prefer this over the answers-management siblings, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_filling_suggestGet Forms fill suggestionsARead-onlyIdempotent
Autocomplete prompts for a suggest-type question while filling a form.
Pass the question slug (from filling_get) plus the search text; each returned
item's id/text is a candidate value for the answer.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Search text typed so far. | |
| question | No | Question slug to suggest for. | |
| parent_id | No | Parent object id scoping a Master/Detail lookup. | |
| survey_id | Yes | Form id or slug. | |
| suggest_id | No | Comma-separated suggestion-object ids to resolve (the API's ``id``). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds genuine value beyond that: the return items' id/text are candidate values, which is important since no output schema exists. It omits pagination/rate-limit details, keeping it out of 5 territory.
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 tight sentences, front-loaded with the core purpose followed by the concrete usage instruction. Every clause carries information; no 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?
With 5 parameters and no output schema, the description compensates by explaining both the input source (slug via filling_get) and the shape of returned candidates. Annotations cover the read-only/idempotent profile. Minor gaps remain around edge cases (e.g. null text or suggest_id resolution), but it is largely complete for 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 coverage is 100%, so baseline is 3, but the description adds cross-parameter meaning: the 'question' slug originates from filling_get, and 'text' is the incremental search input driving the autocomplete. This ties the parameters to their source and purpose beyond the schema's terse field 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?
States a specific action and resource: 'Autocomplete prompts for a suggest-type question while filling a form.' It precisely scopes the tool to suggest-type questions and describes what is returned (candidate answer values). It does not explicitly contrast against the closest siblings (forms_filling_get / forms_filling_submit), though the 'while filling a form' framing implies its place in the workflow.
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?
It gives clear context — used while filling a form, only for suggest-type questions — and tells the agent where to obtain the required slug ('from filling_get'). It stops short of explicit when-not-to-use or naming an alternative tool, so it earns 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_history_listList Forms change logARead-onlyIdempotent
The changes made to a form — who changed which part, when — across pages.
Capped at the configured item cap unless limit is given.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Most events to return (omitted: the configured cap). | |
| ordering | No | desc (newest first, the API default) or asc. | |
| survey_id | Yes | Form id (24-char hex). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), so the bar is lower, and the description adds genuinely useful behavior: results are capped at the configured item cap unless limit is supplied, and results span pages. It still says nothing about the shape of returned events or ordering behavior beyond what the schema states.
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 tight sentences: the first defines the payload, the second states the cap/limit rule. No filler, and the identifying content is 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?
For a read-only list with no output schema, the description conveys what each event contains and that pagination/capping applies, which is close to sufficient. It stops short of describing the response envelope or the default ordering, but those are minor given the full 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 limit, ordering, and survey_id are all documented in the schema itself. The description only reinforces the limit/cap interaction and adds no new semantics for ordering or the required form id; 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 identifies the resource precisely — the change log of a form — and enumerates what each entry carries (who, which part, when). That is enough to separate it from sibling list tools like forms_answers_list or forms_questions_list, though it never explicitly names an alternative or states the verb 'list'.
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?
There is no when-to-use or when-not-to-use guidance and no mention of alternatives such as forms_surveys_get or tracker_changelog_list. The intended use (auditing changes to a form) must be inferred entirely from the noun phrase.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_hooks_createCreate Forms integration groupA
Create an empty integration group on a form; returns it with its integer id.
Add integrations with subscriptions_create and conditions with
conditions_hook_create.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Group name and active flag (both optional). | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true, idempotentHint=false). Beyond that, the description adds meaningful context: the group is created empty (so the agent knows nothing runs yet) and the response returns an integer id needed for chaining. It does not mention required auth scopes or rate limits.
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 short sentences, front-loaded with the primary action and effect, then the follow-up tools. Every clause 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?
With no output schema, the description usefully discloses that the created group is returned with its integer id, and it explains the follow-up workflow via subscriptions_create / conditions_hook_create. Minor gaps remain (permissions required, behavior if a group already exists on the form), but nothing essential for correct invocation is 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?
Schema description coverage is 100% and both parameters (survey_id, body.name/body.active) are documented inline, so the schema carries the semantics. The description adds only the implicit 'form' mapping for survey_id and the returned id; 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?
States a specific verb (Create) plus a precise resource (an empty integration group on a form) and even names the sibling tools used to fill it (subscriptions_create, conditions_hook_create). An agent can distinguish it from forms_hooks_get/update/delete and the subscriptions/conditions tools without opening any schema.
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 second sentence gives clear workflow context: this tool only creates the empty container, and integrations/conditions are attached via the named sibling tools. It never states when NOT to use it (e.g., if the group already exists, or reusing an existing group), so it falls short of explicit alternatives/exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_hooks_deleteDelete Forms integration groupADestructive
Delete an integration group together with its integrations and conditions.
| Name | Required | Description | Default |
|---|---|---|---|
| hook_id | Yes | Integration group id (integer) from hooks_list. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true. The description adds valuable behavioral context by specifying that the integration group's integrations and conditions are deleted along with it, going beyond what the annotations convey.
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 wasted words. It efficiently communicates the core action and its cascading effect.
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 two-parameter destructive tool with rich annotations and no output schema, the description is nearly complete: it explains what is deleted and that related integrations and conditions go with it. It could still state irreversibility more explicitly, but the annotations largely cover 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?
Schema description coverage is 100%, and both parameters (hook_id and survey_id) are fully documented in the schema with their expected formats and sources. The description adds no additional parameter meaning, 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 states a specific verb ('Delete') and resource ('integration group'), and it distinguishes itself from sibling tools like forms_hooks_update, forms_hooks_get, and forms_conditions_hook_delete by clarifying that the deletion cascades to integrations and conditions.
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 no explicit guidance on when to use this tool versus alternatives such as disabling or updating the integration group, nor does it state prerequisites or warn about irreversibility. It only implies usage through the verb 'Delete'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_hooks_getGet Forms integration groupARead-onlyIdempotent
One integration group by id, with its conditions and integrations.
| Name | Required | Description | Default |
|---|---|---|---|
| hook_id | Yes | Integration group id (integer) from hooks_list. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds useful return-content context by stating the group includes its conditions and integrations, but it omits auth requirements, pagination, and richer result-shape 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?
A single front-loaded sentence with no wasted words. The core scope ('one integration group by id') comes first, followed immediately by the returned sub-resources.
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-by-id tool with 100% schema parameter coverage and rich safety annotations, this is nearly complete; it even mentions the returned conditions and integrations in the absence of an output schema. Only minor details like error behavior or exact return shape are left implicit.
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 survey_id and hook_id documented and their sources (hooks_list, surveys_list) identified in the schema. The description adds no parameter meaning beyond what the schema already provides, so the 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?
States a specific verb and resource: retrieves one integration group by id, and notes the payload includes its conditions and integrations. The 'by id' scope distinguishes it from forms_hooks_list, but it does not explicitly name or differentiate itself from the sibling list/get 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?
Implies usage by requiring an id from hooks_list, so an agent understands it is the single-item fetch counterpart to the list tool. It gives no explicit when-to-use guidance, no prerequisites, and no mention of alternatives such as forms_hooks_list or the hook conditions endpoints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_hooks_listList Forms integration groupsARead-onlyIdempotent
A form's integration groups, each with its conditions and integrations.
An integration group (hook) runs its active integrations on every new answer that matches
its conditions; conditions_hook_* edit the conditions, subscriptions_* the
integrations.
| Name | Required | Description | Default |
|---|---|---|---|
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds meaningful domain semantics about how a hook behaves (runs active integrations on every matching new answer), but discloses nothing about the read operation itself such as pagination or ordering.
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 tight sentences that front-load what is returned and then explain the concept and related tool families. No filler, though the second sentence is more glossary than instruction.
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 list tool with one fully documented parameter, no output schema, and annotations covering safety, the description supplies enough conceptual framing to call it. Only the list-vs-get distinction is left implicit.
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 single survey_id parameter already documents its 24-char hex format and source (``surveys_list``). The description adds no parameter meaning, so the baseline of 3 applies with the schema doing the work.
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 defines what a hook/integration group is and that the tool returns them with their conditions and integrations, so the agent can tell it lists the integration-group resource. It does not explicitly contrast this with forms_hooks_get, so sibling differentiation is only partial.
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: the tool surfaces a form's integration groups, and the closing sentence routes editing of conditions to ``conditions_hook_*`` and of integrations to ``subscriptions_*``. There is no explicit when-to-use-this-vs-forms_hooks_get statement or prerequisite note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_hooks_updateModify Forms integration groupAIdempotent
Rename an integration group or switch it on or off; only the fields set change.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Fields to change; unset ones stay. | |
| hook_id | Yes | Integration group id (integer) from hooks_list. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, non-destructive and open-world behavior, lowering the bar. The description adds genuinely useful PATCH context — unset fields are left unchanged — which is not derivable from the hint flags alone.
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?
One tight sentence that front-loads the operations and ends with the key behavioral constraint. Nothing wasted.
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 3 fully documented parameters, a rich nested body schema, and annotations covering the safety profile, no output schema is needed. The description is sufficient for an agent to invoke this mutation 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%, including names for survey_id, hook_id and body fields, so the schema carries the semantics; baseline is 3. The description's 'only the fields set change' adds a small amount of meaning but largely restates the body schema's own 'Fields to change; unset ones stay.'
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?
States specific verbs (rename, switch on/off) and the resource (integration group), so the agent knows it is the mutation counterpart to forms_hooks_create/delete/get. It does not explicitly name those siblings, but the operation is 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?
Usage is implied by the patch semantics ("only the fields set change"), which tells the agent this is a partial update rather than a full replace. However, it never states when to prefer this over forms_hooks_create/delete or any prerequisite (e.g., hook_id must come from hooks_list).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_images_cloneClone a Forms imageA
Copy an existing image into a form; returns the new image with its integer id.
Reference the returned id from a question's, option's or form style's image.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The image to copy and the clone's name. | |
| survey_id | Yes | Form id (24-char hex). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the safety profile is covered. The description adds the useful fact that the operation yields a new object with its own id (i.e., it is a creating clone, not an in-place edit), but it does not warn that repeated calls accumulate duplicate images, nor does it state auth requirements — a notable gap for a non-idempotent write.
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, zero padding, and the primary action is front-loaded ahead of the secondary return-value usage note. Every 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?
There is no output schema, and the description compensates by explaining the return value (new image plus integer id) and how to consume it. For a two-parameter nested-body tool this is nearly complete; it lacks only mention of error/auth behavior.
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% (including the important 'name is ignored by the API' note), so the schema carries the parameter burden. The description adds nothing about survey_id, id, or links beyond what the schema already documents; 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 names a specific verb+resource+target: 'Copy an existing image into a form', and adds the return contract ('returns the new image with its integer id'). No sibling tool is a plausible substitute, so no differentiation is required, yet an agent can tell exactly what this does.
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?
It gives clear context for use: the returned id is meant to be referenced from a question's, option's, or form style's image, which tells the agent why and where to call it. It stops short of any explicit 'do not use this when...' exclusion, so it falls below the 5 tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_keysets_createCreate Forms key setA
Create a batch of single-use personal-link keys on a form; returns the created Keyset.
The API rejects a body without is_enabled, so set it explicitly alongside name and
total. Download the generated keys via the forms keysets download CLI command
(binary payload — not exposed over MCP).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Key set settings; the API requires ``is_enabled`` on create. | |
| survey_id | Yes | Form id (24-char hex) to add the key set to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the mutation profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the description doesn't need to restate safety. It does add valuable context beyond the annotations: the required is_enabled field that the API enforces and the fact that generated keys cannot be retrieved over MCP (CLI-only, binary payload).
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?
Three short sentences with no filler; the purpose and return value come first, followed by the hard requirement and the follow-up retrieval path. 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?
With no output schema, the description correctly notes it returns a Keyset, and it flags the important limitation that the generated keys are not retrievable via MCP. Complete enough to call correctly, though it never mentions pagination or mutations-vs-idempotency considerations for retries.
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, but the description adds real meaning: it warns that is_enabled must be set explicitly even though the schema shows it defaulting to null, and ties it to name/total in the body. That maps directly to parameters the agent could otherwise get wrong.
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?
States a specific verb ('Create'), resource ('batch of single-use personal-link keys on a form'), and return value ('returns the created Keyset'). An agent can distinguish it from forms_keysets_list/get/update/delete purely from the description.
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?
Gives a hard prerequisite ('the API rejects a body without is_enabled') and routes the agent elsewhere for the output ('download the generated keys via the forms keysets download CLI command'), which is genuinely actionable. It does not, however, contrast this tool against sibling operations like forms_keysets_update, so it stops short of explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_keysets_deleteDelete Forms key setADestructive
Delete a key set — its unused keys (personal fill links) stop working.
The API answers 200 OK with no body, so a typed acknowledgement is returned.
| Name | Required | Description | Default |
|---|---|---|---|
| keyset_id | Yes | Key set id (integer) to delete. | |
| survey_id | Yes | Form id (24-char hex) the key set belongs to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds real value beyond that: it discloses the partial effect (unused keys stop working) and the return behavior (200 OK with no body, typed acknowledgement returned), which is not visible anywhere else.
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 tight sentences with zero padding, front-loading the destructive effect before the return-value note.
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 output schema, the description usefully explains the empty-body response, and annotations carry the destructiveness. It stops short of stating permission requirements or failure modes, but for a two-parameter delete it is largely 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?
Both parameters are fully documented in the schema (100% coverage), and the description adds no syntax, format, or constraint details beyond it. Baseline 3 applies when the schema does all the work.
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?
Specific verb+resource (delete a key set) and it clarifies what a key set is by naming its effect on personal fill links. It sits unambiguously in the forms_keysets_* CRUD family, though it does not explicitly name a sibling to distinguish itself from.
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 when-to-use framing, no alternatives, and no prerequisites such as required permissions or whether the key set must be unpublished first. The agent must infer that this is for removing a key set that is no longer needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_keysets_getGet Forms key setARead-onlyIdempotent
One key set's settings and usage (total keys, used count, is_enabled).
Look up keyset_id via keysets_list. To download the actual keys use the
forms keysets download CLI command (binary payload — not exposed over MCP).
| Name | Required | Description | Default |
|---|---|---|---|
| keyset_id | Yes | Key set id (integer) from ``keysets_list``. | |
| survey_id | Yes | Form id (24-char hex) the key set belongs to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description adds real value beyond that: the shape of the response (total/used/is_enabled) and the scope limit that key material is deliberately unavailable over MCP.
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 tight sentences, front-loaded with what is returned, then the id-lookup path, then the scope exclusion. No 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?
With no output schema, the description carries the return-value burden and does so by naming the key fields. Combined with the annotation-covered safety profile and the CLI scope note, an agent has everything needed to call 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 coverage is 100% and both parameters are self-documented, so the baseline is 3. The description only echoes the keyset_id source (keysets_list) already stated in the schema and says nothing about survey_id.
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?
States a specific verb and resource ('One key set's settings and usage') and enumerates the returned fields (total, used, is_enabled). It is clearly distinguishable from keysets_list, which it names as the id-lookup sibling.
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?
Gives a concrete prerequisite ('Look up keyset_id via keysets_list') and an explicit when-not boundary: downloading actual keys is a CLI operation not exposed over MCP. It stops short of framing the full use case vs keysets_list, but the routing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_keysets_listList Forms key setsARead-onlyIdempotent
Every personal-link key set on a form, as a flat array.
A key set is a batch of single-use keys that become personal form-filling links; each item's
integer id is what you pass to keysets_get. Use surveys_list to find the
survey_id first. Downloading the actual keys is a binary payload — CLI/SDK-only.
| Name | Required | Description | Default |
|---|---|---|---|
| survey_id | Yes | Form id (24-char hex), e.g. 6818ceffe010db4f59d11329. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), so the bar is lower, yet the description still adds real behavior: the result is a flat array, each item's id is an integer suitable for keysets_get, and the raw key download is unavailable via MCP. It stops short of disclosing pagination or auth requirements for a read-only list, which keeps it off a 5.
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?
Three short sentences, front-loaded with the core statement of what is returned, then the definition, then the routing and the CLI/SDK caveat. No filler and no repetition of the title or schema.
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 output schema, the description usefully characterizes the return shape (flat array, integer id) and the prerequisite lookup path, and annotations carry the safety profile. It is close to complete for a one-parameter list tool; only pagination/result-size behavior is unaddressed.
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 schema already documents survey_id as a 24-char hex form id with an example, so the structured field carries the semantics. The description's only parameter-relevant contribution is routing the agent to surveys_list to obtain that id, which is usage guidance rather than added meaning. 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?
States a specific verb and resource ('Every personal-link key set on a form, as a flat array') and goes further by defining what a key set actually is — a batch of single-use keys that become personal form-filling links. It also distinguishes itself from keysets_get by naming what to pass to that sibling, so an agent can tell the two apart without opening a schema.
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?
Gives an explicit prerequisite ('Use surveys_list to find the survey_id first') and an explicit exclusion ('Downloading the actual keys is a binary payload — CLI/SDK-only'), telling the agent both what to do before calling and what this tool will not give them. This is when-to-use and when-not-to-use guidance, not inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_keysets_updateModify Forms key setAIdempotent
Replace a key set's settings; returns the updated Keyset.
Despite the PATCH verb, the API validates the body as a full record: name, total
and is_enabled must all be set or the request is rejected with 400. total can
only grow: a number smaller than the set has now is refused.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Full key set record — name, total and is_enabled are all required. | |
| keyset_id | Yes | Key set id (integer) from ``keysets_list``. | |
| survey_id | Yes | Form id (24-char hex) the key set belongs to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnly=false, destructive=false, idempotent=true) by disclosing a non-obvious API quirk: PATCH semantics but full-record validation, a 400 rejection when any field is missing, and the monotonic 'total can only grow' constraint. This is exactly the kind of behavioral context that prevents failed calls.
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?
Front-loads the core action and return value, then two tight sentences on the validation contract. No filler; every sentence carries a distinct constraint the agent cannot infer elsewhere.
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 mutation tool with no output schema (but a stated return) and annotations already covering the safety profile, the description supplies the missing validation and monotonicity constraints. An agent has everything needed to call 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 coverage is 100% and the nested body already documents each field and the all-required rule, so baseline is 3. The description adds genuine meaning beyond the schema by explaining that all three fields must be set together and that total is monotonic and falsy on shrink.
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?
States a specific verb (Replace) and resource (key set's settings) and notes the return value. It is clearly distinguishable from forms_keysets_create/delete/get by the verb, though it never names a sibling explicitly to route between them.
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 tells the agent how the call behaves (full-record body required) but offers no explicit when-to-use vs alternatives guidance or prerequisites such as permission requirements. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_me_getGet current Forms userARead-onlyIdempotent
The authenticated Yandex Forms user (a safe auth probe).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the additive detail that this doubles as an auth probe (no side effects, useful to validate a session), but says nothing about what identity fields are returned or any auth failure 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?
A single short sentence with the resource and the probe hint front-loaded and zero filler. It reads as a label fragment rather than a crafted sentence, but nothing needs trimming.
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 no-argument identity read with full annotation coverage and no output schema, the description is essentially sufficient. It could be marginally stronger by noting the returns are the current user's identity fields, but no critical information is 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?
Zero parameters, so per the rubric the baseline is 4. There is nothing for the description to disambiguate and it makes no misleading parameter claims.
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 identifies a specific resource — the authenticated Yandex Forms user — and the title supplies the verb ('Get'), so an agent can tell it apart from survey/question/answer siblings. It never states the verb in the description body itself, leaving it as a noun fragment rather than a full verb+resource statement.
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?
Calling it 'a safe auth probe' implies a usage scenario (verifying credentials/permissions before other Forms calls), which is genuinely helpful. However, no explicit when-to-use/when-not criteria or alternatives are named, and it doesn't distinguish itself from the analogous wiki_me_get or tracker_me_get beyond the product prefix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_notifications_cancelCancel a Forms integration runA
Stop an integration run that has not finished.
A run that is already canceled or finished answers result.status skip.
| Name | Required | Description | Default |
|---|---|---|---|
| notification_id | Yes | Notification id (integer) from notifications_list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, openWorldHint=true, destructiveHint=false), so the bar is lower. The description adds real value by disclosing that an already-canceled or finished run returns result.status 'skip' rather than erroring, and with no output schema this is the only source for that return signal.
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 short sentences with zero waste; the primary action is front-loaded and the no-op behavior is stated compactly. Nothing redundant.
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 single-parameter mutation with full annotation coverage and no output schema, the definition covers the action and the notable return edge case. It could still point at forms_notifications_restart for recovery, but that is a minor omission.
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 single parameter is already documented as an integer id sourced from notifications_list. The description adds no additional meaning about the parameter, so the baseline 3 for fully-covered schemas 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?
States a specific verb ('Stop') and resource ('integration run'), and qualifies the state ('that has not finished'), which clearly maps to a cancellation operation. It does not name the close siblings (forms_notifications_restart, forms_notifications_status_get), so an agent must infer differentiation, keeping it short of 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 'not finished' qualifier implies the right context (in-progress run), and the second sentence explains what happens when the precondition fails. However, there is no explicit when-not guidance or reference to the alternative (restart) for a run the agent may actually want to resume.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_notifications_errors_listList a Forms survey's failed integration runsARead-onlyIdempotent
Ids of a form's failed integration runs that are still shown.
Read each with notifications_get.
| Name | Required | Description | Default |
|---|---|---|---|
| survey_id | Yes | Form id (24-char hex). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds two useful facts beyond that: the return is only ids (not full objects) and the entries are 'still shown', implying an unresolved subset. It stops short of explaining what 'still shown' means, whether results are paginated, or what happens when there are none.
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 short sentences with zero filler; the returned-content constraint is front-loaded and the follow-up action is second. Nothing could be cut without losing 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 single-parameter read-only list with no output schema, the description covers what is returned (ids) and how to expand them (notifications_get), which is the key information an agent needs. Minor gaps remain around pagination and empty-result behavior, but annotations carry the safety 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?
Schema description coverage is 100% and there is only one parameter (survey_id, documented as a 24-char hex form id), so the schema fully carries parameter meaning. The description adds nothing about the parameter, which is the correct baseline when the schema does the work.
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 names the specific resource and a meaningful subset: the ids of a form's failed integration runs 'that are still shown'. That distinguishes it from the broad forms_notifications_list sibling, though it never names that sibling explicitly, so the differentiation is inferential rather than stated.
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?
It gives an explicit next-step route ('Read each with notifications_get'), which is genuinely useful workflow guidance. However, it never says when to choose this tool over forms_notifications_list or forms_notifications_status_get, so tool selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_notifications_getGet a Forms integration runCRead-onlyIdempotent
One integration run with what the integration was given, answered and failed with.
| Name | Required | Description | Default |
|---|---|---|---|
| notification_id | Yes | Notification id (integer) from notifications_list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description contributes the one thing the annotations cannot: the shape of the payload (input, answers, failures). It says nothing about error behavior or what happens for a missing notification id.
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?
It is a single short, front-loaded sentence, which is appropriate for a one-parameter getter. The phrasing 'what the integration was given, answered and failed with' is grammatically awkward and ends on a dangling preposition, mildly reducing clarity.
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 output schema, the description does carry some return-value burden and partially discharges it by naming the three payload facets. It remains incomplete on the status/error distinction against sibling tools and on failure modes for an invalid notification id.
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 single parameter already documents itself as a notification id sourced from notifications_list. The description adds no format, range, or lookup semantics beyond that, 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 conveys that this returns a single integration run's payload — what the integration received, answered and failed with — which is more than the title alone. However, it never states the retrieval key (notification id) and uses 'integration run' terminology that does not match the tool name or the notification_id parameter, so the agent cannot easily place it against forms_notifications_status_get or forms_notifications_errors_list.
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?
There is no when-to-use guidance at all. With siblings forms_notifications_list, forms_notifications_status_get and forms_notifications_errors_list in the same namespace, the agent gets no help deciding between fetching a single run, its status, or its errors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_notifications_listList Forms integration runsARead-onlyIdempotent
Runs of a form's integrations (one per answer and integration), across pages.
Give survey_id: without it the API answers 404 Not Found, and the other filters only
narrow that form's runs. Capped at the configured item cap unless limit is given. Read
one run's context, response and error with notifications_get.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Most runs to return (omitted: the configured cap). | |
| status | No | Only runs in these states. | |
| hook_id | No | Only this integration group. | |
| visible | No | True: only shown runs; false: only hidden ones. | |
| ordering | No | asc (oldest first, the API default) or desc. | |
| answer_id | No | Only runs for this answer. | |
| survey_id | No | The form whose runs to list (24-char hex); without it, 404. | |
| created_since | No | ISO-8601: queued at or after. | |
| created_until | No | ISO-8601: queued at or before. | |
| finished_since | No | ISO-8601: ended at or after. | |
| finished_until | No | ISO-8601: ended at or before. | |
| subscription_id | No | Only this integration. | |
| integration_type | No | Only runs of this integration type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so safety is covered. The description adds real behavioral context beyond them: pagination ('across pages') and the default cap behavior ('Capped at the configured item cap unless limit is given'), which an agent needs to reason about result size and 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?
Two tight sentences with zero filler, and the critical survey_id requirement is front-loaded. The opening is a noun phrase rather than a complete sentence, a minor stylistic wart, but it does not cost the reader much.
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 13-parameter list tool with no output schema, the description supplies the two things the agent most needs to call it correctly (the mandatory survey_id and the cap/paging behavior), and the annotations cover the safety profile. Remaining gaps are minor.
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 13 parameters, including the 404 consequence of omitting survey_id and the cap semantics of limit. The description largely restates this; it adds little parameter meaning not already present in the structured fields, so the 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 opening sentence states the resource (runs of a form's integrations) and gives the useful granularity detail 'one per answer and integration,' which helps an agent distinguish this from sibling list tools like forms_notifications_errors_list. It lacks an explicit verb, relying on the title to supply 'List,' but the scope is 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?
It gives a hard usage requirement ('Give survey_id: without it the API answers 404') and routes the agent to the alternative for single-item detail via 'Read one run's context, response and error with notifications_get.' It does not position itself against other related siblings (errors list, cancel, restart), so it stops short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_notifications_restartRestart a Forms integration runA
Run the integration again for that answer.
A result.status of operation means it runs in the background: poll
result.operation_id with operations_get.
| Name | Required | Description | Default |
|---|---|---|---|
| notification_id | Yes | Notification id (integer) from notifications_list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only state the safety profile (not read-only, not idempotent, not destructive, open-world). The description goes beyond them by disclosing the two-mode execution contract: a result.status of 'operation' means background execution, and the caller must poll result.operation_id via operations_get. That is genuine behavioral value 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?
Two tight sentences with the action stated first and the async follow-up second; nothing is padded. Minor deduction for the unexplained referent 'that answer', which could confuse an agent lacking conversation context.
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 output schema, the description usefully documents the return contract (result.status, result.operation_id) and the polling follow-up, which is exactly what an agent needs here. It omits what the re-run actually does externally and any failure behavior, but it is largely complete for a one-parameter 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 single parameter is already documented as a notification id sourced from notifications_list. The description only hints that the notification maps to 'that answer', adding marginal meaning. Baseline 3 is appropriate when the schema does the work.
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 gives a specific action ('run the integration again') on a clear resource (the integration tied to a notification/answer), and the title reinforces it as 'Restart a Forms integration run'. The deictic phrase 'that answer' assumes prior context, but the intent is still decipherable from the name plus text.
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?
It explains the async return behavior but gives no guidance on when to restart versus related siblings like forms_notifications_cancel or forms_notifications_status_get, nor any prerequisite or error condition. Usage is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_notifications_status_getGet a Forms integration run stateBRead-onlyIdempotent
The state of one integration run: pending, success, error or canceled.
| Name | Required | Description | Default |
|---|---|---|---|
| notification_id | Yes | Notification id (integer) from notifications_list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so safety is covered. The description usefully adds the return-value domain (pending/success/error/canceled), but says nothing about auth requirements, failure modes, or how the state evolves.
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?
One short sentence with the resource stated up front and the state enum trailing. It is a fragment rather than a full sentence, but 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 no-output-schema getter, enumerating the possible states is genuinely helpful and largely covers the return contract. Missing usage routing against the sibling notification tools and any note on how a run reaches a terminal state leaves it only 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% and the single parameter is fully documented in the schema, including where the id comes from (notifications_list). The description adds nothing about the 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?
States a specific resource and scope ('the state of one integration run') and enumerates the four possible values, so an agent can tell it apart from forms_notifications_list or forms_notifications_cancel. It stops short of explicitly distinguishing it from the nearby forms_notifications_get sibling.
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 statement of when to use this versus forms_notifications_get, forms_notifications_list, or forms_notifications_restart/cancel. Usage is only implied by the tool name and the mention of a single run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_operations_getGet Forms operationARead-onlyIdempotent
The status of a long-running Forms operation — poll this to watch an async export finish.
Returns {id, status, message} where status is one of ok (finished, result
ready), fail, wait (still running) or not_running. Take the operation_id
from the id an async trigger returned (e.g. the answers_export tool or
ycli forms answers export … --no-wait); re-call until status is ok or fail.
| Name | Required | Description | Default |
|---|---|---|---|
| operation_id | Yes | Operation id returned by an async trigger (e.g. an answers export). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld), but the description adds real behavioral detail: the exact return shape {id, status, message} and the four terminal/transient status values. The only gap is polling cadence/rate-limit guidance, which an agent would still have to guess.
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?
Three tight sentences: purpose first, return contract second, input provenance and loop condition third. No filler, and the most decision-relevant fact (this is a polling tool) is 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?
With no output schema, the description correctly compensates by enumerating the return fields and status values, and it supplies the input's origin. Nothing needed to invoke or interpret the call is missing, aside from optional polling-interval advice.
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 parameter description already states it is an operation id. The prose goes further by explaining provenance ('from the id an async trigger returned') and giving concrete sources, which adds meaning 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?
States a specific verb+resource (get the status of a long-running Forms operation) and immediately frames the use case (poll an async export). An agent can distinguish it from write-side siblings like forms_answers_export without opening either schema.
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?
Explicitly says when to use it ('poll this to watch an async export finish'), names the alternative that produces the input (answers_export / 'ycli forms answers export --no-wait'), and states the stopping condition ('re-call until status is ok or fail').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_questions_createCreate Forms questionA
Append a question to a form; returns the created Question (note its id).
body is one of the 12 typed question schemas discriminated by type (string,
enum, matrix, …). The new question lands at the end of the form — reposition it
afterwards with questions_move.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed question body; the ``type`` tag selects the question schema. | |
| survey_id | Yes | Form id (hex ObjectId) to add the question to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare this is a non-readonly, non-idempotent, open-world write but give no detail. The description adds the crucial fact that the new question always lands at the end, and that the response is the created Question with its id. It does not state auth requirements or failure modes, but the placement behavior is a genuinely non-obvious trait.
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 short paragraphs, front-loaded with the core action and return value, then the body typing and the placement caveat. No filler, though the parenthetical '(note its id)' is slightly terse.
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 2-param write tool with a rich discriminated schema and no output schema, the description covers action, input typing, return value, and the non-obvious append-last behavior with the right follow-up tool. Auth and error handling are the only 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 description coverage is 100%, so the schema fully documents survey_id and the discriminated body. The description adds framing ('one of 12 typed question schemas discriminated by type') but no syntax the schema lacks. 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?
States a specific verb and resource (append a question to a form) and distinguishes itself from siblings by naming questions_move as the repositioning tool. An agent can tell it apart from forms_questions_update and forms_questions_move without opening any schema.
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?
Clearly implies when to use: when you want to add a question, and explicitly names the follow-up (reposition with questions_move). It does not name update vs create alternatives, but the create-vs-reposition routing is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_questions_deleteDelete Forms questionADestructive
Delete a question from a form; one that a display condition refers to is refused.
Delete the condition first (conditions_question_delete).
The API answers 204 No Content; the returned record confirms the accepted action.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Ignored by the API: a question that a display condition refers to is refused all the same. | |
| survey_id | Yes | Form id (hex ObjectId) the question belongs to. | |
| question_id | Yes | Question id (integer) to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, yet the description adds meaningful behavior: conditioned questions are refused regardless of the force flag, and the prerequisite ordering. The closing claim that 'the returned record confirms the accepted action' sits awkwardly next to 'the API answers 204 No Content', which is mildly confusing rather than contradictory with 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?
Three short sentences, front-loaded with the core action and the refusal rule, with no filler. The final sentence about the response is the least informative part and slightly muddles the message.
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 annotations carrying the safety profile and no output schema to explain, the description covers the key failure mode and the required ordering well. It omits any mention of permission requirements for a destructive operation, and its response-code sentence is internally inconsistent.
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 schema already documents survey_id, question_id and that force is ignored by the API. The description adds no parameter syntax or format detail beyond the schema, 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?
States a specific verb and resource ('Delete a question from a form') and adds the scope-defining constraint that conditioned questions are refused, which no sibling delete tool shares. An agent can identify exactly what this does without opening the schema.
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?
It gives explicit when-not guidance (refused if a display condition references the question) and routes to the prerequisite tool by name. The named target is the condition-delete prerequisite rather than a same-goal alternative, and the referenced name (``conditions_question_delete``) doesn't exactly match the sibling ``forms_conditions_question_delete``, but the routing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_questions_getGet Forms questionARead-onlyIdempotent
One question's settings by id — label, slug, type and common presentation flags.
Where questions_list returns every question grouped into pages, this fetches a single
question keyed by question_id (take it from an item's id in questions_list).
Type-specific detail (validators, options, conditions) comes in the fields of its type.
| Name | Required | Description | Default |
|---|---|---|---|
| survey_id | Yes | Form id (hex ObjectId) the question belongs to. | |
| with_slugs | No | Refer to other questions by slug instead of id. | |
| question_id | Yes | Question id (integer) to fetch. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so safety is covered. The description adds useful behavioral context about the return shape ('label, slug, type and common presentation flags') and notes that type-specific detail lives in type fields. It does not mention how with_slugs changes output rendering, but overall it extends beyond 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?
Three sentences, front-loaded with what is returned and immediately followed by the list-vs-single contrast. Every sentence contributes: return content, usage contrast, and type-specific detail note. No 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?
With no output schema, the description compensates by naming the returned fields and clarifying that type-specific detail comes from the question type. Combined with rich annotations and a fully described input schema, an agent has everything needed to call this get tool 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 parameters are already documented. The description adds meaning by explaining that question_id should be taken from an item's 'id' in questions_list, linking the parameter to its source. It does not add anything for with_slugs, so it falls short of fully enriching all 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 specifies a clear verb (fetches) and resource (a single question), and explicitly names the list sibling it is not: 'Where questions_list returns every question grouped into pages, this fetches a single question.' An agent can distinguish it from forms_questions_list without opening any schema.
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?
It states the exact condition for using this tool: fetching one question keyed by question_id, and provides the source for that id ('take it from an item's id in questions_list'). It also contrasts directly with the list alternative, leaving no ambiguity about when to choose which.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_questions_listList Forms questionsBRead-onlyIdempotent
A form's questions, grouped into pages (the {pages} envelope).
| Name | Required | Description | Default |
|---|---|---|---|
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description does add genuinely new context by disclosing the return shape (questions grouped into pages, wrapped in a {pages} envelope), which matters since no output schema exists, but it says nothing about pagination limits, ordering, or empty forms.
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 fragment that delivers the key structural fact with zero waste. It is appropriately sized, though slightly terse for a description carrying some of the behavioral burden.
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 read tool with rich annotations, this is close to adequate, and the {pages} envelope hint partially compensates for the missing output schema. However, it omits sibling routing and any pagination or ordering behavior, leaving gaps an agent would want filled.
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 single survey_id parameter is fully documented in the schema (24-char hex, sourced from surveys_list). The description adds nothing about the parameter, so the 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 states the resource (a form's questions) and the organizing structure (grouped into pages), so an agent knows this is the read/list variant rather than the singular forms_questions_get or the mutating forms_questions_create. It is clear but never explicitly names the sibling it contrasts with, keeping it short of 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?
There is no when-to-use guidance and no mention of alternatives such as forms_questions_get for a single question. The agent must infer the read-only list role from the name and annotations alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_questions_moveMove Forms questionA
Reposition a question on the form (target page + position); returns the moved question's id.
body.position needs a page target to take effect — the underlying API silently ignores
a bare position (200, nothing moves) — so QuestionMove raises a validation error if
position is set with no page / page_id / question / create_page target;
pass one explicitly (e.g. page=1). Display-condition consistency is validated
server-side — moving a question above one its conditions depend on is rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Target placement: page / page_id / create_page and position. | |
| survey_id | Yes | Form id (hex ObjectId) the question belongs to. | |
| question_id | Yes | Question id (integer) to reposition. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring the non-readonly, non-idempotent, non-destructive, open-world profile, the description still adds non-obvious behavior: the underlying API silently returns 200 while ignoring a bare position, and display-condition consistency is enforced server-side so a move above a depended-on question is rejected. Silent-failure and rejection semantics are exactly the kind of context annotations cannot carry.
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?
Purpose and return value are front-loaded in one sentence, followed by a dense but high-value caveat block. The backtick-heavy formatting and em-dash parentheticals add some visual noise, but every sentence carries real 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 mutation tool with a nested body, full schema coverage, and annotations covering the safety profile, the description supplies the critical traps (bare position silently ignored, condition-dependency rejection) and the return value. Auth/permission requirements are the only notable omission, which annotations partially cover.
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 body.page schema field already states that a target is required when position is set because the API ignores a bare position. The description largely restates this coupling rather than adding new syntax or format detail, so the 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 states a specific verb and resource ('Reposition a question on the form'), scopes it to target page + position, and discloses the return value (the moved question's id). It does not explicitly name or contrast with siblings such as forms_questions_update, leaving the move-vs-edit distinction to inference, so it falls short of the top band.
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 verb 'reposition' but the description never states when to reach for this tool versus forms_questions_update or forms_questions_create. It does supply actionable in-call guidance (pass a page target explicitly, e.g. page=1) and notes server-side validation, which raises it above a bare 2.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_questions_updateModify Forms questionAIdempotent
Replace a question's settings (same typed body as create); returns the updated Question.
The body's type must match the existing question's type; look it up with
questions_get first.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed question body; ``type`` must match the existing question. | |
| survey_id | Yes | Form id (hex ObjectId) the question belongs to. | |
| question_id | Yes | Question id (integer) to modify. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true, so safety is covered. The description adds the key behavioral fact that this is a full replace rather than a patch, and states the return value (the updated ``Question``). Permission requirements and the fate of omitted fields remain unstated.
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, zero waste, with the replace-vs-create distinction and the type-matching constraint 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?
For a 3-parameter mutation tool with no output schema, the description supplies the critical replace semantics, the discriminator precondition, and the return shape. Enough to call it correctly, though it omits what happens to fields not supplied in the replacement body.
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 body's own description already says "``type`` must match the existing question," so the description largely restates schema content. The only added value is the procedural hint to fetch the current type via ``questions_get``.
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?
States a specific verb and resource ("Replace a question's settings") and explicitly contrasts with the create path ("same typed body as create"), so an agent can distinguish it from forms_questions_create without opening a schema.
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?
Gives a concrete precondition ("The body's ``type`` must match the existing question's type") and names the sibling to call first (``questions_get``), which is genuine when-to-use guidance. It stops short of stating when NOT to use this tool (e.g., partial/field-level edits).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_subscriptions_createCreate Forms integrationA
Add an integration to a hook; it runs on every new answer while active is true.
Create it with active: false to configure it without sending anything yet. Returns the
integration with its integer id.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The integration; ``type`` selects its schema. Its schema is not listed here: read `Subscription` with schema_get(service="forms", name="Subscription"), then the definitions it refers to. | |
| hook_id | Yes | Integration group id (integer) from hooks_list. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=false, destructive=false and openWorld=true, so the safety profile is covered. The description adds real value beyond them by disclosing execution behavior ('runs on every new answer while active is true') and the deferred-activation path. It does not state auth or permission requirements.
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?
Three compact sentences front-load the purpose, then the configuration tip, then the return value. Nothing is redundant, though the trailing return-value sentence adds only modest value given a create tool typically echoes the entity.
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 mutation tool with no output schema, the description covers the side effect, the activation caveat, and the returned id, while the schema documents survey_id and hook_id and routes body to schema_get. Most of what an agent needs is present; only permissions/auth expectations are absent.
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, but the description goes further by explaining the effect of 'active' (whether the integration fires on new answers) and that the call returns an integer 'id'. The nested body's shape is explicitly deferred to schema_get, which is a sensible pointer.
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 and resource ('Add an integration to a hook') and ties it to execution semantics, so an agent knows this creates a subscription rather than reading or deleting one. It does not explicitly name the neighboring update/delete/list siblings, so it is clear but lacks 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?
It gives useful mode guidance ('Create it with active: false to configure it without sending anything yet'), which is genuinely actionable context. However it never addresses when to choose this tool over forms_subscriptions_update, delete, or list, leaving alternative routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_subscriptions_deleteDelete Forms integrationADestructive
Delete one integration from a hook; the hook's other integrations stay.
| Name | Required | Description | Default |
|---|---|---|---|
| hook_id | Yes | Integration group id (integer) from hooks_list. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| subscription_id | Yes | Integration id (integer) from subscriptions_list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is carried by structured data. The description adds the useful scope fact that sibling integrations on the hook survive, but says nothing about irreversibility, side effects on collected answers, or auth requirements.
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 zero filler; the destructive scope (one integration) comes first and the non-destructive consequence second.
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 3-param, fully documented delete with annotations covering safety and no output schema, the description covers the essential question (what exactly gets removed). It stops short of noting permanence or recovery options, which would be the only remaining 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?
Schema description coverage is 100% — all three params (survey_id, hook_id, subscription_id) are documented with provenance (hooks_list, subscriptions_list, surveys_list). The description adds no format or constraint detail beyond that, so the 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?
States a specific verb (Delete) and a precisely scoped resource (one integration/subscription on a hook), and the clause 'the hook's other integrations stay' distinguishes it from the sibling forms_hooks_delete, which removes the whole hook. An agent can tell the blast radius apart without opening either schema.
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 only implied: the scoping clause signals this is the targeted-removal tool rather than hook deletion, but there is no explicit when-to-use/when-not statement, no mention of prerequisites (e.g. needing the subscription id from forms_subscriptions_list), and no named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_subscriptions_getGet Forms integrationBRead-onlyIdempotent
One integration of a hook by id, with its type-specific settings.
| Name | Required | Description | Default |
|---|---|---|---|
| hook_id | Yes | Integration group id (integer) from hooks_list. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| subscription_id | Yes | Integration id (integer) from subscriptions_list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds one genuinely useful behavioral note - the response carries 'type-specific settings' - hinting that the return shape varies by subscription type, but says nothing further about errors, missing ids, or response structure.
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 short clause with zero filler and the key qualifier ('one', 'by id') front-loaded. It reads as a fragment rather than a sentence, but nothing wasted.
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 output schema, the description is the only place return-shape information could live; 'type-specific settings' gestures at variability but does not explain it. For a simple three-id lookup whose annotations and schema are complete, this is minimally 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%, and the schema already documents all three params including their source list tools, so the baseline is 3. The description adds no additional meaning beyond what the schema 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 names the resource ('one integration of a hook') and scopes it as a single-item lookup by id, which an agent can distinguish from the list/update/delete siblings. The verb is only implied by the tool name rather than stated, and the term 'integration' differs from the name's 'subscriptions', so it is clear but not fully crisp.
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?
There is no statement of when to use this tool versus the alternatives (forms_subscriptions_list to enumerate ids, forms_hooks_get, forms_subscriptions_update). The agent must infer the use case purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_subscriptions_listList Forms integrationsARead-onlyIdempotent
Every integration of an integration group (hook), each tagged by type.
Types: email, tracker, tracker_comment, wiki, jsonrpc, http, function. hooks_list
returns the same integrations nested in each hook.
| Name | Required | Description | Default |
|---|---|---|---|
| hook_id | Yes | Integration group id (integer) from hooks_list. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the enumeration of integration types (email, tracker, wiki, jsonrpc, http, function), which is real context about the returned data, but it says nothing about pagination, ordering, or auth requirements.
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 short sentences, front-loaded with what is returned and followed by the sibling cross-reference. The opening sentence is a fragment, but nothing is wasted.
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 two-parameter list tool this is nearly sufficient: it identifies the resource, the item shape (type tags), the type vocabulary, and the sibling alternative. With no output schema, it could say more about item fields beyond type, but the essential calling information is present.
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 hook_id ('Integration group id from hooks_list') and survey_id ('Form id from surveys_list') are already documented. The description only corroborates that 'hook' means integration group, adding no syntax or constraint 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 defines the resource precisely (every integration belonging to an integration group/hook) and names the sibling relation to hooks_list. The verb 'list' is only implied by the enumeration phrasing, but an agent can still tell it apart from forms_hooks_list and forms_subscriptions_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?
It notes that hooks_list returns the same integrations nested inside each hook, which implies the alternative exists, but it never states when to call this tool instead. No prerequisites, exclusions, or explicit selection criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_subscriptions_updateModify Forms integrationBIdempotent
Change an integration: only the fields set in body change.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Fields to change; ``type`` must match the integration's type. Its schema is not listed here: read `Subscription` with schema_get(service="forms", name="Subscription"), then the definitions it refers to. | |
| hook_id | Yes | Integration group id (integer) from hooks_list. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. | |
| subscription_id | Yes | Integration id (integer) from subscriptions_list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false and readOnlyHint=false, so the safety profile is covered. The description does add one genuinely useful trait beyond annotations — that unspecified fields are left untouched (partial semantics) — but says nothing about permissions, side effects on the integration, or what an invalid body type does.
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 a colon introducing the one behavioral caveat; no filler. It is efficient, though the extreme brevity leaves room for a clause about required permissions or return behavior.
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 nested-body mutation with no output schema, the description leans entirely on the schema's decode instructions and the annotations' safety hints. It is minimal but not misleading; a brief note on prerequisites or the effect of changing integration type would close the 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?
Schema description coverage is 100% and the schema itself is unusually helpful, explaining that ``body``'s schema must be fetched via schema_get and where each id comes from. The description adds nothing beyond that, so the 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?
States a specific verb and resource ('Change an integration') and adds that only fields set in ``body`` change, which signals PATCH-style partial update rather than a full replace. It stays consistent with the domain vocabulary used in the schema ('Integration id/group id'), though it never names the sibling operations (create/delete/list/get) to sharpen the boundary.
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?
There is no explicit when-to-use guidance, no mention of prerequisites such as needing existing hook_id/subscription_id, and no routing to alternatives like forms_subscriptions_create or forms_subscriptions_delete. Usage is only inferable from the tool name and required parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_surveys_createCreate Forms surveyA
Create a new form from the given settings; returns the created Survey (note its id).
Only the fields you set are sent. Follow up with questions_create to add questions and
surveys_publish to make the form fillable.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for creating a form (``POST /surveys``). Every setting the API publishes is a field. The CLI has an option for the common ones; the rest are set with its common ``-F key=value`` and ``--body-file``. Unset (``None``) fields are dropped before the request is sent. ``language``, ``is_published`` and ``is_public`` are accepted and ignored by the API (checked live on 2026-10-04): they stay for callers that send them, and setting one logs a warning. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, idempotent=false, and openWorld=true, so the safety profile is covered structurally. The description adds genuinely new behavior: partial-send semantics ("only the fields you set are sent") and the fact that the created Survey object with its id is returned. No auth or permission requirements are stated, keeping it out of 5.
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 and one parenthetical, front-loaded with the core action and return value, with no redundant restatement of the name or annotations.
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 one-param, deeply nested create tool with no output schema, the description covers what is returned (the Survey and its id) and the partial-send behavior. The workflow handoff to questions_create and surveys_publish makes it usable end-to-end, though it does not warn about the ignored fields (language, is_published, is_public) documented in the schema.
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 single nested body param is exhaustively documented, so the baseline is 3. The description's "only the fields you set are sent" reinforces the partial-send behavior but adds no field-level syntax or defaults beyond 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?
States a specific verb and resource ("Create a new form") and immediately distinguishes itself from the sibling tool that would otherwise be confused for creation work by routing to questions_create and surveys_publish. An agent can identify the tool's role without opening the schema.
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?
Explicitly names the two follow-up tools and the condition that selects them (add questions, make fillable), which gives clear workflow context. It does not state when NOT to use this tool (e.g. clone vs create), so it stops short of full when/when-not/alternatives coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_surveys_deleteDelete Forms surveyADestructive
Delete a form permanently — IRREVERSIBLE: its questions and collected answers are lost.
The API answers 204 No Content; the returned record confirms the accepted action.
| Name | Required | Description | Default |
|---|---|---|---|
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds real value: it specifies exactly what is destroyed (questions and collected answers), that it is irreversible, and the API's 204 No Content response. The closing phrase 'the returned record confirms the accepted action' is slightly muddled against the stated 204 response, keeping this short of a 5.
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, front-loaded with the destructive warning so the risk is visible immediately. The second sentence is compact but its 'returned record' phrasing is somewhat confusing next to the 204 No Content claim, costing a point.
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 one-parameter destructive tool with rich annotations and no output schema, the description covers the essential risk and response behavior. The only minor gap is the ambiguous response sentence, which could mislead about what is actually returned.
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 single survey_id parameter (24-char hex, sourced from surveys_list) is already fully documented in the schema. The description adds no additional meaning about the parameter, which is the correct baseline-3 outcome when the schema does the work.
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 (delete) and resource (a form/survey) and clarifies the scope as permanent removal of the survey along with its questions and answers. This clearly distinguishes it from siblings like forms_surveys_update, forms_surveys_unpublish, and forms_questions_delete.
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 word 'permanently' and 'IRREVERSIBLE' implies this is the hard-delete option, and the schema points to surveys_list for obtaining the id, giving implicit guidance. However, no explicit alternatives (e.g., unpublish) or when-not-to-use conditions are stated, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_surveys_getGet Forms surveyCRead-onlyIdempotent
One form's settings by id.
| Name | Required | Description | Default |
|---|---|---|---|
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered without the description. The description itself adds no behavioral context beyond "by id" – nothing about what the settings object contains, permission requirements, or failure modes.
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?
It is short and front-loaded with the resource, but it is a sentence fragment rather than a complete, self-contained statement, and its brevity comes at the cost of specification rather than from efficiency.
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 one-parameter read-only getter with no output schema, the description is minimally viable – "settings" hints at what comes back. However, with no output schema present, it could reasonably say more about the returned settings payload to be 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%: the schema documents survey_id as a 24-char hex form id sourced from surveys_list. The description's "by id" merely restates that, so the baseline 3 applies with no added meaning.
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 fragment "One form's settings by id" conveys the verb (retrieve) and resource (a single form's settings) plus the lookup key, so the purpose is inferable. But it never distinguishes itself from siblings such as forms_surveys_list (retrieve many) or forms_surveys_update (modify settings), leaving the agent to guess which one to pick.
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?
There is no when-to-use guidance, no prerequisite, and no mention of an alternative tool. The agent must infer from the name alone that this is the single-record read counterpart to forms_surveys_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_surveys_listList Forms surveysARead-onlyIdempotent
Every form (survey) the caller can see, auto-paginated over the API's offset pages.
Capped at the configured item cap unless limit is given. Each item's id is the
form id you pass to surveys_get / questions_list / answers_list.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Keep the forms whose name matches. | |
| group | No | Keep the forms of this group. | |
| limit | No | Max forms to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| orderby | No | Sort, a comma list such as ``name,-modified,-count``. | |
| show_all | No | For an administrator, every form of the organization. | |
| favourite | No | Only favourites (true) or only the others (false). | |
| ownership | No | ``mine`` (created by the caller) or ``shared`` (open to them). | |
| published | No | Only published (true) or only unpublished (false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds real behavior beyond that: automatic pagination across the API's offset pages, and an implicit item cap that only 'limit' overrides. It stops short of describing result fields or rate limits, but the added context is substantive.
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?
Three short sentences, front-loaded with the purpose and scope, followed by the pagination/cap constraint and the id linkage. Nothing is padded and each sentence carries operational 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?
No output schema exists, so the description must carry return-value context; it does disclose pagination and that each item carries an 'id' usable downstream. It omits what other fields an item contains, which is the only notable gap for a read-only list tool with fully documented filters.
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 eight filters (name, group, orderby, show_all, favourite, ownership, published, limit) are already documented in the schema. The description only restates the limit/cap relationship, which the schema's own 'limit' description already explains, so it adds no new parameter meaning.
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?
States a specific verb ('List') and resource ('every form (survey)') plus the access scope ('the caller can see'), and it positions itself as the entry point whose item ids feed surveys_get / questions_list / answers_list. An agent can tell this apart from the get/list siblings without opening any schema.
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?
Gives clear usage context: call this to enumerate forms and obtain the form ids needed downstream by surveys_get / questions_list / answers_list. It does not state when-not to use it or name an alternative list tool, but for a list endpoint tied to a known family the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_surveys_publishPublish Forms surveyA
Publish a form so respondents can fill it; fails if the form is blocked or at its cap.
The API answers a bare 200 OK; the returned record confirms the accepted action.
Reverse with surveys_unpublish.
| Name | Required | Description | Default |
|---|---|---|---|
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as a non-read-only, non-idempotent, open-world mutation, but the description adds genuinely useful behavior the annotations cannot convey: the two failure conditions (blocked, at cap) and the API's unusual bare 200 OK response semantics. It does not explain the error shape or whether re-publishing is harmful.
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?
Three short sentences, each earning its place: the action, the failure modes, the response semantics, and the reversal. The core purpose is 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?
With no output schema, the description usefully compensates by describing the response ('bare 200 OK; the returned record confirms the accepted action') and the failure cases. It is close to complete, though it omits permission requirements and what an agent should do when the call fails.
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 sole parameter (survey_id, 24-char hex, sourced from surveys_list) is fully documented in the schema. The description adds nothing beyond that, 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?
States a specific verb (publish) on a specific resource (a form/survey) and its user-visible effect ('so respondents can fill it'). It also explicitly names the inverse sibling tool (surveys_unpublish), so an agent can place it precisely among the forms_surveys_* family.
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?
Gives clear context: use it to make a form fillable, and it fails if the form is blocked or at its cap. It names the reverse operation for the opposite intent. It stops short of stating prerequisites (e.g. permissions, whether the form must be complete) or what to do on failure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_surveys_unpublishUnpublish Forms surveyA
Take a published form offline (respondents can no longer fill it); reversible via publish.
The API answers a bare 200 OK; the returned record confirms the accepted action.
| Name | Required | Description | Default |
|---|---|---|---|
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (not read-only, not destructive, not idempotent), and the description adds value beyond them by disclosing reversibility and the shape of the API response ('bare 200 OK'). It does not address what happens on a repeat call, which matters given idempotentHint=false, but the added context is genuinely useful.
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 tight sentences with the core action front-loaded, and no filler. The trailing sentence about the 200 OK response is somewhat awkward in phrasing but contributes transparency rather than padding.
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 one-parameter mutation tool with annotations and no output schema, the description covers the action, its effect, reversibility, and the response behavior, which is nearly everything an agent needs. A note on repeat-invocation behavior would close the remaining 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?
Schema description coverage is 100% and the single survey_id parameter is fully documented in the schema (including its 24-char hex format and provenance from surveys_list). The description adds nothing about the parameter, so the baseline 3 applies when structured fields carry the load.
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?
States a specific verb ('take offline') and resource (a published form), plus the concrete effect on respondents. It also explicitly positions itself against the sibling forms_surveys_publish by naming the inverse operation, so an agent can distinguish the two without opening either schema.
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 use (form is currently published, you want respondents to stop filling it) and names the alternative route back ('reversible via publish'). It stops short of stating when-not to use it or any preconditions such as the form needing to be published first, so it is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_surveys_updateModify Forms surveyAIdempotent
Patch a form's settings — only the fields set in body change; returns the Survey.
Untouched settings keep their current values, so a partial patch is safe to repeat.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for modifying a form (``PATCH /surveys/{survey_id}``). Same optional fields as :class:`SurveyCreate`; only the fields you set are sent, so a partial patch never disturbs untouched settings. | |
| survey_id | Yes | Form id (24-char hex), from ``surveys_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false, so safety is covered. The description usefully elaborates the PATCH gesture — only set fields change, untouched settings persist, and repetition is safe — adding context beyond the annotations, though it does not mention auth requirements or error 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?
Two tight sentences, the mutation semantics front-loaded ('only the fields set in body change') followed by the safety consequence. Nothing is wasted.
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 output schema, the description earns credit for noting that it returns the Survey. For a nested-object PATCH tool with full schema coverage and safety annotations, this is nearly complete, though it omits permission/auth prerequisites.
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 nested body schema already documents that only set fields are sent. The description reinforces this but adds no new syntax, format, or enumeration guidance for survey_id or the body fields, so the 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?
States a specific verb and resource ('Patch a form's settings') and clarifies the partial-update semantics, which distinguishes it from siblings like forms_surveys_create or forms_surveys_get. It never names a sibling explicitly, so sibling differentiation is inferred rather than stated.
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 it (when you want to change some, not all, settings) via the partial-patch framing, but there is no explicit when-to-use, when-not, or pointer to alternatives such as forms_surveys_publish for publication state. Usage context is implied only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forms_variables_listList Forms integration variablesARead-onlyIdempotent
The variable types a form's integrations can reference in their texts.
Each item names a type (e.g. form.answer_url, form.question_answer), the
arguments it takes and the renderers it supports; put one into a subscription's
variables to use it.
| Name | Required | Description | Default |
|---|---|---|---|
| survey_id | Yes | Form id (24-char hex). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds that each item carries a type, its arguments, and supported renderers — useful return-shape context — but says nothing about auth needs, scoping, or pagination. 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 tight sentences with no filler; the resource description is front-loaded and the practical usage note follows. The first sentence is a noun fragment, but it is efficient 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?
There is no output schema, so the description carries the burden of describing returns — and it does, naming the item fields (type, arguments, renderers) and an example type. For a single-parameter read-only list tool this is nearly complete; only pagination/scoping behavior is unaddressed.
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 a single required survey_id already documented as a 24-char hex form id. The description adds no parameter-level meaning beyond what the schema provides, 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 states the resource clearly — the variable types a form's integrations can reference — and gives concrete examples (form.answer_url, form.question_answer). Combined with the title it is unambiguous, though it reads as describing returned content rather than naming the list action, and it does not explicitly distinguish itself from other forms_* siblings.
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?
It hints at downstream usage ('put one into a subscription's variables to use it'), which implies you call this to discover variables before creating/configuring a subscription. However there is no explicit when-to-use, no when-not, and no named alternative among the many forms_subscriptions_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schema_getRead the schema of a tool's bodyARead-onlyIdempotent
Read one definition of a body that its tool lists as a free-form object.
Such a parameter says in its description which definition to start from. The answer
refers to others as #/$defs/<name>: read those with this tool too, only the ones the
task needs.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The definition to read, as the tool's parameter names it. | |
| service | Yes | The service of the tool, e.g. `forms`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so the safety profile is covered. The description goes further by disclosing the shape of the response (nested references appear as ``#/$defs/<name>``), which is genuine behavioral context the annotations cannot express, especially with no output schema available.
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?
Three short sentences, front-loaded with the verb and followed by the recursion and stopping rules. No filler, though the nested-clause phrasing of the first sentence costs it a little readability.
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 output schema, the description carries the return-shape burden and does describe the reference format for follow-up reads. Combined with the annotations, an agent has what it needs; only the exact meaning of the `service` scoping is left to the schema.
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 `name` and `service` are already documented in the schema; baseline is 3. The description adds only the provenance of `name` (it comes from another tool's parameter description), which is minor marginal value over 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 a verb ("Read") and a resource ("one definition of a body that its tool lists as a free-form object"), but the wording is convoluted jargon that forces the agent to decode what a "definition of a body" is. It is specific enough to identify the tool as a schema-referencing meta-reader, but not immediately intelligible.
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?
It states when to invoke: when a parameter's description names a definition to start from, and to recurse through ``#/$defs/<name>`` references. It also gives an explicit bound — "only the ones the task needs" — which functions as a when-not-to-read-everything rule. No alternative-tool routing is needed here since no sibling competes for this function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_getCheck Yandex 360 auth statusARead-onlyIdempotent
Report whose token this is, its organization and which services accept it.
credential says which token is in use (oauth or iam), never its value.
identity is the token's owner (Yandex ID; unknown for an IAM token). organization is
the configured id and, when the token has the directory:read_organization scope
(API 360), its name. services has one probe each, with valid and, on failure,
detail.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover the safety profile (readOnly, idempotent, openWorld), but the description adds real behavioral detail beyond them: the tool actively *probes* each service, that `credential` names the token type and never its value, that `identity` is unknown for IAM tokens, and that `organization` name only appears when the token holds the directory:read_organization scope. It does not mention rate limits or probe failure modes beyond `detail`.
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?
Front-loaded with a single-sentence purpose, then a compact field-by-field breakdown using backticked names. No filler; every clause describes a distinct output field or its conditional behavior.
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 output schema, the description fully carries the burden of explaining return values, and it does so field by field including the conditional `organization` name and the per-service `valid`/`detail` shape. Nothing an agent needs to interpret the result is 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 tool takes zero parameters, so per the baseline the schema carries no semantics to add. The description instead documents the response fields (`credential`, `identity`, `organization`, `services`), which is where the practical meaning lives for this call.
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?
It states a specific verb and resource set: 'Report whose token this is, its organization and which services accept it.' That is concrete and unambiguous. It does not, however, differentiate from the near-identical-looking '*_me_get' siblings (tracker_me_get, wiki_me_get, forms_me_get) that also answer identity questions, so an agent must infer the distinction from name alone.
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 only implied by the tool name and the 'Report...' phrasing — an agent can reasonably infer this is a credential/auth diagnostic. There is no explicit statement of when to call it (e.g. before other 360 calls, after a 401) and no named alternative to use instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_applications_listList Tracker external applicationsARead-onlyIdempotent
External applications that Tracker issues can be linked to via external links.
Use this to discover which application ids/types are available before creating an external link; each application's id and type values are identical.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld), and the description adds that id and type values are identical, which is a useful quirk. However, with no output schema, it does not describe the shape of the returned list, pagination, or ordering, leaving a gap.
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, front-loaded with the resource definition and then the usage directive. Nothing is wasted, though the 'id and type values are identical' clause is slightly cryptic without a return-value example.
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 zero-parameter read tool with no output schema, the description conveys enough to call it correctly and understand the intent. It could be more complete by sketching the returned application fields, but nothing essential is 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 tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies for a no-parameter tool.
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?
States a specific verb (list) and resource (external applications) and explains the resource's role: applications that Tracker issues can be linked to via external links. It is distinguishable from most siblings, though it does not explicitly contrast itself with tracker_linktypes_list or tracker_remotelinks_list.
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?
Explicitly says to use it 'to discover which application ids/types are available before creating an external link', giving a concrete when-to-use scenario. It does not name an alternative tool or state when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_attachments_deleteDelete Tracker issue attachmentADestructive
Permanently delete one attachment from a Tracker issue (irreversible).
Get file_id from attachments_list. Returns an acknowledgement on success.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | Attachment file id, from ``attachments_list``. | |
| issue_key | Yes | Issue key or id, e.g. ``JUNE-2``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so irreversibility is covered structurally; the description reinforces the scope of destruction ('one attachment', 'permanently') and adds the return behavior ('acknowledgement on success'), which is valuable given there is no 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?
Two short sentences with the destructive nature front-loaded and the prerequisite source immediately following. No 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 two-parameter destructive tool with no output schema, the description covers the mutation's permanence, the source of the required id, and the success response, leaving nothing essential for correct invocation unstated.
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 both parameters are documented in the schema itself; the description only restates that file_id comes from attachments_list, adding no format or constraint detail beyond what the schema already provides. 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?
States a specific verb+resource with scope: deleting exactly one attachment from a Tracker issue, and flags the operation as permanent. It does not, however, distinguish itself from the near-identical sibling tracker_entities_attachments_delete.
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?
Gives a concrete prerequisite for invocation — obtain file_id from attachments_list — which tells the agent the correct upstream call. It stops short of naming when *not* to use this tool or which sibling to prefer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_attachments_getGet Tracker attachment metadataARead-onlyIdempotent
One attachment's metadata (name, size, MIME type, uploader, download URL).
Downloading the bytes is CLI/SDK-only: ycli tracker attachments download.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | Attachment file id, from ``attachments_list``. | |
| issue_key | Yes | Issue key or id, e.g. ``JUNE-2``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds one genuine behavioral fact — this endpoint returns metadata only, not bytes — but says nothing about auth requirements, error cases (missing file_id/issue_key), or size/URL expiry 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?
Two short sentences, front-loaded with what is returned and followed by the one scope caveat an agent would otherwise assume wrong. No filler, though the fragment style (no leading verb) is slightly terse.
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 output schema, the description carries the return-value burden and does so by listing the metadata fields. Combined with the CLI-download caveat, an agent has what it needs; only error/permission behavior is absent, which is minor for a read-only metadata call.
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 file_id documented as coming from ``attachments_list`` and issue_key exemplified as ``JUNE-2``. The description adds no parameter detail beyond the schema, so the 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?
States a specific verb (get) and resource (one attachment's metadata) and enumerates the returned fields (name, size, MIME type, uploader, download URL). It implicitly distinguishes itself from tracker_attachments_list by saying "one attachment's," but never names that sibling explicitly.
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?
It usefully rules out a nearby capability (downloading bytes is CLI/SDK-only), which is a partial when-not. However it does not state when to prefer this over tracker_attachments_list or tracker_entities_attachments_get, leaving sibling routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_attachments_importImport Tracker issue attachmentA
Import a file onto an issue with its original author and creation time (admin-only).
The file travels as base64 in the request, so keep it small; for a large file run
ycli tracker attachments import instead. created_at uses
YYYY-MM-DDThh:mm:ss.sss±hhmm. Returns the imported attachment.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | The file's bytes, base64-encoded. | |
| filename | Yes | Name the imported file gets on the issue. | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. | |
| created_at | Yes | Original creation time, ``YYYY-MM-DDThh:mm:ss.sss±hhmm``. | |
| created_by | Yes | Login or id of the user to record as the file's author. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, open-world write. The description adds meaningful context beyond that: it is admin-only, the payload must be kept small because it travels as base64, and it returns the imported attachment. It does not cover conflict behavior, but the additions are substantive.
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 compact and front-loads the core action. The size/CLI caveat, timestamp format, and return note are all relevant, though the timestamp format duplicates the schema and could arguably be trimmed.
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 five-parameter import mutation with full schema coverage and clear annotations, the description supplies the critical missing pieces: admin-only authorization, payload size constraint, and the fact that it returns the imported attachment. No output schema exists, but the return behavior is noted adequately.
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 schema already defines all five parameters in detail. The description restates the base64 nature of data and the created_at format but adds no new semantics or constraints beyond what the schema provides, matching the baseline for full 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?
States a specific verb (Import) and resource (a file/attachment onto an issue) plus the distinguishing behavior of preserving original author and creation time. A capable agent can distinguish it from plain upload tools like tracker_attachments_upload, though no sibling MCP tool is named 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?
Provides some context: admin-only and a size caveat with an alternative CLI path for large files. However, it does not explicitly say when to choose this over sibling MCP tools such as tracker_attachments_upload or tracker_entities_attachments_attach, leaving the comparison implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_attachments_listList Tracker issue attachmentsARead-onlyIdempotent
Files attached to a Tracker issue — name, size, MIME type, uploader, download URLs.
Returns metadata only (an ItemList[Attachment]); use it to discover a file's id and name.
Downloading the file's or thumbnail's raw bytes is CLI/SDK-only — run
ycli tracker attachments download <ISSUE> <FILE_ID> <FILENAME> — because binary blobs
are not an MCP payload.
| Name | Required | Description | Default |
|---|---|---|---|
| issue_key | Yes | Issue key or id, e.g. ``JUNE-2``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds meaningful behavior beyond them: it returns metadata only (ItemList[Attachment]) and cannot deliver binary content, steering the agent away from an impossible download attempt.
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?
Front-loaded with the resource and returned fields, followed by the download limitation. Three tight sentences; the CLI note is slightly verbose but earns its place by preventing a futile download call.
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 output schema, the description compensates by describing the return shape and fields, and it discloses the download limitation. Complete enough for a single-parameter read tool, though it omits pagination behavior.
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 issue_key is documented in the schema (e.g. 'JUNE-2'). The description adds no syntax or format detail 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?
States a specific verb+resource ('Files attached to a Tracker issue') and enumerates the returned fields (name, size, MIME type, uploader, download URLs), so the agent knows exactly what it lists. It does not explicitly distinguish itself from the sibling tracker_attachments_get (single attachment) or tracker_entities_attachments_list, so it falls just short of full 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?
Gives clear usage context ('use it to discover a file's id and name') and an explicit when-not-to: raw byte download is CLI/SDK-only, not an MCP payload, with the exact CLI command. It stops short of naming MCP alternatives for fetching a single attachment's metadata.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_attachments_uploadAttach file to Tracker issueA
Attach a small file to a Tracker issue; returns the created attachment.
The file travels as base64 in the request, so keep it small; for a large file run
ycli tracker attachments upload instead.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | The file's bytes, base64-encoded. | |
| filename | Yes | Name of the file being uploaded. | |
| issue_key | Yes | Issue key or id, e.g. ``JUNE-2``. | |
| rename_to | No | Store the file under this name instead of ``filename``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation/safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=true). The description adds useful context beyond that: the payload travels base64 and must be small, and the call returns the created attachment. It omits permissions/rate-limit details but the annotation bar is already met.
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 tight sentences: purpose front-loaded, then the size constraint and fallback. Every sentence 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?
For a 4-param mutation tool with no output schema, the description covers the essential constraint (base64/small payload) and even states the return value. Auth/permission expectations are not covered, but it's complete enough to call 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 schema already documents data, filename, issue_key, and rename_to. The description's mention of base64 adds nothing beyond the data param's format=base64 in the schema. Baseline 3 is appropriate when the schema carries 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?
States a specific verb and resource ('Attach a small file to a Tracker issue') and even notes the return ('returns the created attachment'). It does not explicitly differentiate from close siblings like tracker_attachments_upload_temp or tracker_attachments_import, though the 'small file' framing hints at the distinction.
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?
Gives a concrete usage condition ('keep it small') and names an alternative path ('for a large file run ycli tracker attachments upload'). It stops short of routing the agent among the MCP siblings (upload_temp, import), so it's clear context rather than full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_attachments_upload_tempUpload temporary Tracker fileA
Upload a small temporary file to attach when creating an issue or a comment.
The returned id goes into attachmentIds of the issue or comment body, and works
once. The file travels as base64 in the request, so keep it small.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | The file's bytes, base64-encoded. | |
| filename | Yes | Name of the file being uploaded. | |
| rename_to | No | Store the file under this name instead of ``filename``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give generic hints (readOnlyHint=false, openWorldHint=true, idempotentHint=false). The description adds non-obvious behavior: the returned id 'works once' (single-use token) and the payload travels as base64 so it must stay small. These are exactly the traits an agent needs and cannot infer from annotations or 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?
Three short sentences, front-loaded with the action and purpose, then the critical return-value usage and the size constraint. No filler; 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?
With no output schema, the description compensates by explaining the returned id and its single-use nature, plus the base64 size constraint. For a 3-parameter upload tool, nothing an agent needs to call it correctly appears to be 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?
Schema description coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it explains where the returned id is consumed (attachmentIds of the issue/comment body) and the practical size constraint on the base64 data parameter.
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?
States a specific verb and resource (upload a temporary file) with the scope that distinguishes it from siblings: it is 'temporary', small, and intended for issue/comment attachment. An agent can separate it from tracker_attachments_upload and tracker_attachments_import based on the description alone.
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 frames the when: 'attach when creating an issue or a comment', and the returned id feeds 'attachmentIds' of that body. It does not explicitly contrast with tracker_attachments_upload or import, so it stops short of naming alternatives, but the intended workflow is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_autoactions_createCreate Tracker queue autoactionA
Create an autoaction on a queue — actions applied on a schedule to matching issues.
Required: name and actions (e.g. [{"type": "Update", …}]); scope the issues
with filter or query and set the cadence via intervalMillis / calendar.
CAUTION: autoactions have no delete endpoint — the action persists until its queue is
deleted (it can be disabled in the UI).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``autoactions.create`` (``POST /queues/{id}/autoactions``). Supply at least one of ``filter`` or ``query`` to select the issues to act on. | |
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the bar is lower, and the description adds genuinely new context: the CAUTION that autoactions have no delete endpoint and persist until the queue is deleted. It still omits auth/permission requirements and whether the response returns the created object, keeping it below 5.
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?
Front-loaded with the purpose, then a compact Required/scope/cadence sentence and a bolded CAUTION. Every sentence earns its place; the slight overlap with the schema's required-fields prose is the only minor 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?
For a mutation tool with no output schema and a deeply nested body, the description covers required fields, scoping, cadence, and the critical non-deletable lifecycle caveat. Missing pieces are return-value behavior and permission needs, but the core call-correctly information is present.
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, but the description adds value by naming the required fields (name, actions), giving a concrete action example ([{"type": "Update", …}]), and pairing the scoping (filter/query) and cadence (intervalMillis/calendar) parameters conceptually. This is more than the schema's per-field prose.
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?
States a specific verb and resource ('Create an autoaction on a queue') and adds a functional gloss ('actions applied on a schedule to matching issues') that clarifies the concept. It does not name the nearest sibling (tracker_triggers_create) to distinguish the two, so it falls short of the 5 tier.
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 conveys implied usage (scheduled issue actions scoped by filter/query) and the required fields, but offers no explicit when-to-use vs when-not or comparison against trigger/other automation tools. Guidance is present but left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_autoactions_getGet Tracker queue autoactionARead-onlyIdempotent
One queue autoaction by id — its filter/query, actions, schedule and run stats.
An autoaction periodically applies its actions to every issue matching its filter/query.
For run history use autoactions_logs_list (summaries) then autoactions_logs_get
(per-issue outcomes of one run).
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | Queue key (case-sensitive, e.g. DESIGN) or numeric queue id. | |
| action_id | Yes | Numeric identifier of the autoaction. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description adds meaningful domain context: an autoaction 'periodically applies its actions to every issue matching its filter/query', explaining the resource's behavior and why the schedule/filter fields matter. Pagination and auth behavior remain unstated.
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?
Three tight sentences, front-loaded with the identity of the resource. The middle sentence is explanatory rather than filler, though it could be trimmed for a get-tool whose output already implies the periodic behavior.
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 output schema, the description compensates by naming the returned fields (filter/query, actions, schedule, run stats) and by pointing to the logs tools for history. Nothing critical to a correct invocation is missing, though error/permission behavior is not mentioned.
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 both parameters are documented there (queue key or numeric id; numeric action id), so the schema does the heavy lifting. The description only says 'by id' without clarifying the queue_id/action_id pairing or the case-sensitive queue-key format, adding no meaning 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?
States a specific verb and resource ('One queue autoaction by id') and enumerates what it returns (filter/query, actions, schedule, run stats), which cleanly separates it from the autoactions_logs_* siblings. An agent can identify this as the config-fetch tool without opening the schema.
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?
Explicitly routes the run-history need to autoactions_logs_list (summaries) and autoactions_logs_get (per-issue outcomes), which is concrete alternative guidance. It stops short of stating when this tool itself should or should not be used versus e.g. tracker_triggers_get, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_autoactions_logs_getGet Tracker autoaction runARead-onlyIdempotent
The per-issue outcomes of one autoaction run — each issue touched and its result status.
Get the run_id from autoactions_logs_list. Only autoactions that auto-update issues
produce these detail logs.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | Identifier of the autoaction run (from logs_list). | |
| queue_id | Yes | Queue key (case-sensitive, e.g. DESIGN) or numeric queue id. | |
| action_id | Yes | Numeric identifier of the autoaction. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so safety is covered. The description adds genuinely useful behavior the annotations cannot express: these logs exist only for autoactions that auto-update issues, implying the result can legitimately be empty for other autoactions.
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 with zero filler. The output content is front-loaded, and the operational prerequisites (run_id source, which autoactions qualify) follow 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?
No output schema exists, and the description compensates by stating what is returned (per-issue results and status). With 3/3 required params documented in the schema, the definition is nearly self-sufficient; only result volume/pagination behavior is unaddressed.
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 queue_id, action_id and run_id are already documented. The description only adds a provenance pointer for run_id ('from autoactions_logs_list'), which is helpful but marginal beyond the schema. 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?
Names a specific resource (per-issue outcomes of one autoaction run) and a specific verb (get), and clarifies the granularity ('each issue touched and its result status'). It is clearly distinguishable from its closest sibling, tracker_autoactions_logs_list, which is the enumeration endpoint.
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?
Gives concrete routing guidance: obtain run_id from autoactions_logs_list, and states a real precondition — only auto-update autoactions produce these detail logs. It stops short of explicitly stating when not to use it (e.g. for run-level summaries), but the context is clear enough to select correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_autoactions_logs_listList Tracker autoaction runsARead-onlyIdempotent
Run summaries for an autoaction — one record per launch with hit/success/failure counts.
Each record's id is the run id you pass to autoactions_logs_get for that run's
per-issue outcomes.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | Queue key (case-sensitive, e.g. DESIGN) or numeric queue id. | |
| action_id | Yes | Numeric identifier of the autoaction. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld, so safety is covered. The description adds genuine value beyond that by describing the shape of a record (one per launch, with hit/success/failure counts), which helps the agent interpret results; it does not mention pagination or volume limits.
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 tight sentences with zero filler. The core purpose is front-loaded, and the second sentence only adds the id hand-off relationship, which 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?
With no output schema, the description carries the burden of explaining returns, and it does so at the record level (run per launch with hit/success/failure counts). It omits pagination/ordering behavior and how queue_id and action_id scope the listing, leaving a small 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?
Schema description coverage is 100% (queue_id documents case-sensitive key vs numeric id; action_id documents numeric identifier), so both parameters are already fully explained. The description adds no additional parameter meaning, making the baseline 3 correct.
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?
States a specific verb and resource (run summaries for an autoaction, one record per launch) and disambiguates from the closely-named sibling tracker_autoactions_logs_get by naming it explicitly. An agent can tell what it returns without opening the schema.
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 establishes the drill-down workflow: use this to list runs, then pass a record's id to autoactions_logs_get for per-issue outcomes. That is clear context for choosing between the two log tools, though it stops short of explicit when-not/exclusion language.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_boards_createCreate Tracker boardB
Create an agile board; returns the new board with its id.
name is required; optional fields include owner, the private/public
permissions template, the backlog_available/sprints_available flags and status-backed
columns.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``boards.create`` (``POST /liveBoards/``). ``name`` is the only required field; every other field is omitted from the JSON body when left as ``None`` (see ``model_dump(exclude_none=True)``). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the mutation profile is covered structurally. The description adds one genuinely useful behavioral fact not in the schema — that the created board is returned with its id — but says nothing about permission requirements, side effects, or that duplicate names are permitted (non-idempotent).
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 tight sentences with the core action front-loaded before the field inventory. The optional-field list is partly redundant with the 100%-covered schema, but it is short and does not bloat the description.
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 non-idempotent create tool with no output schema, the description supplies the essential return contract and field summary, and annotations cover the safety profile. Gaps remain around permissions/access requirements and error behavior, but the definition is sufficient to invoke the tool 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%, including nested column objects, so the schema already carries parameter meaning and a baseline of 3 applies. The description adds only a prose summary of the same optional fields ('owner', permissions template, backlog/sprints flags, columns) without new syntax or format 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?
States a specific verb and resource ('Create an agile board') and adds the return contract ('returns the new board with its id'), which lets an agent distinguish it from tracker_boards_get/list/update. It stops short of explicitly naming those siblings, but the create semantics are 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 when-to-use guidance, no prerequisites, and no mention of alternatives (e.g. tracker_boards_update for modifying an existing board). The only 'guidance' is a restatement of which fields are required vs optional, which is parameter data rather than usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_boards_deleteDelete Tracker boardADestructive
Permanently delete an agile board (irreversible; its issues are not affected).
Returns an acknowledgement on success.
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Numeric identifier of the agile board. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds value beyond them: it explicitly states the operation is irreversible and clarifies the non-obvious side effect that the board's issues are NOT deleted. It also notes an acknowledgement response, which the annotations do not cover.
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 short sentences, front-loaded with the core action and the critical irreversibility warning before the secondary side-effect note. Nothing here is 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 one-parameter destructive tool whose safety profile is already carried by annotations, the description covers the important residuals: permanence, the effect on issues, and the success response. Auth/permission requirements are the only notable omission.
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?
Single parameter with 100% schema description coverage, so the schema already documents board_id fully. The description adds no additional meaning (e.g., format, source of the ID), 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?
States a specific verb and resource ("delete an agile board") and immediately distinguishes its scope from siblings like tracker_boards_get/update/create. The parenthetical adds meaningful scope (permanent, issues unaffected) that an agent can act on without opening the schema.
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 action is unambiguous, so usage is strongly implied, but the description never states when to delete versus when to deactivate/archive, nor any prerequisite (permissions, empty board, etc.). There is no explicit routing to an alternative, leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_boards_getGet Tracker boardARead-onlyIdempotent
Look up a single agile board by its numeric id.
The board includes its columns, estimation field and burndown calendar. Use this when you
already know the board id; use boards_list to browse every board, and sprints_list to
enumerate the sprints defined on this board.
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Numeric identifier of the agile board. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds useful behavioral content by disclosing what the returned board object contains (columns, estimation field, burndown calendar). It does not mention permissions or error behavior for unknown ids, so it stops short of a 5.
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?
Three short sentences, front-loaded with the core action, then the returned contents, then routing to alternatives. Every sentence carries information an agent needs and there is no 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?
There is no output schema, so the description correctly compensates by naming the payload's main parts, and the single required parameter is unambiguous. It is complete for a simple read, though it omits behavior on an invalid or missing id.
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 single parameter is fully documented as an integer identifier in the schema. The description's 'numeric id' and 'already know the board id' merely reinforce what the schema already states, 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 states a specific verb and resource ('look up a single agile board by its numeric id') and immediately scopes it with what the board contains (columns, estimation field, burndown calendar). It also names the sibling tools it is not, so an agent can distinguish it from list-style tools without opening another schema.
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?
It gives an explicit selection condition ('use this when you already know the board id') and routes the agent to concrete alternatives for browsing boards and enumerating sprints. Nothing about when to pick this tool over siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_boards_listList Tracker boardsARead-onlyIdempotent
All agile boards in the organisation, sorted by ascending board id.
Auto-paginated via the relative id-cursor. Capped at the configured item cap unless limit
is given. Use boards_get when you know one board id, and sprints_list to list a
board's sprints.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max boards to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description adds genuinely new behavior: auto-pagination via the relative id-cursor, ascending-id sort order, and the default item cap that applies when limit is omitted. It does not describe the returned board shape, but that is a minor omission for a read-only list.
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?
Four short sentences, each carrying distinct load: scope+ordering, pagination, cap semantics, and sibling routing. The scoping fact is front-loaded and nothing is padded.
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 one-parameter, no-output-schema list tool, the description covers scope, ordering, pagination and cap behavior, which is enough to invoke it correctly. It could note the identity/permission scope of 'the organisation' but nothing essential is 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?
Schema description coverage is 100% and the single limit parameter is fully documented in the schema, including the YCLI__HTTP__MAX_ITEMS cap. The description restates the cap-override behavior without adding format or syntax detail beyond the schema, so the 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?
States a specific verb (list) and resource (all agile boards in the organisation) plus a concrete ordering guarantee (ascending board id). It also explicitly distinguishes itself from boards_get and sprints_list, so an agent can route without opening either schema.
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?
Names two alternatives with the exact condition that selects each: use boards_get when a single board id is known, and sprints_list to list a board's sprints. This is the enumerate-everything case, and the alternatives are spelled out rather than left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_boards_updateEdit Tracker boardAIdempotent
Edit an agile board; only the fields set in body are changed.
Supports renaming, toggling backlog_available/sprints_available and replacing the
columns layout. Returns the updated board.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``boards.edit`` (``PATCH /boards/{board_id}``). Every field is optional; only the fields you set are sent, so an omitted field is left unchanged on the board. | |
| board_id | Yes | Numeric identifier of the agile board. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description still adds real value beyond that: omitted fields are left unchanged (PATCH semantics) and ``columns`` is a wholesale replacement rather than a merge, plus it states the return 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?
Two tight sentences, front-loaded with the mutation semantics before the field enumeration. No filler, no restatement of the title, and the return-value note is a single clause.
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 two-parameter partial-update tool with a fully documented nested schema, the description covers mutation semantics, editable surface, and the return value even though no output schema exists. It is complete enough to call correctly; only the relationship to sibling board/column tools is unaddressed.
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%, including the nested body and column item fields, so the schema already carries the parameter documentation. The description only summarizes the same field groups at a higher level, adding the useful nuance that ``columns`` replaces the layout, but nothing about formats or constraints.
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 and resource ("Edit an agile board") and enumerates the editable surface (name, backlog_available/sprints_available, columns layout). It is clear on its own, but it never names a sibling, and the columns-replacement capability overlaps confusingly with tracker_columns_update in the sibling list.
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 only implied: an agent can infer this is the tool for modifying an existing board's name/backlog/sprint/column settings, and the partial-update semantics are stated. There is no explicit when-to-use versus tracker_boards_create, tracker_columns_update, or tracker_boards_delete, and no prerequisites or permission guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_bulk_getGet Tracker bulk-change statusARead-onlyIdempotent
Current status of an async bulk-change operation (issues_update_bulk and its kin).
status runs CREATED → COMPLETE / FAILED; totalIssues /
totalCompletedIssues show progress. Poll this after a bulk trigger returns an id;
once it reports FAILED, call bulk_issues_list for the per-issue errors.
| Name | Required | Description | Default |
|---|---|---|---|
| bulk_id | Yes | Bulk-change operation id, e.g. ``1ab23cd4e5678901``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint, yet the description still adds the status state machine (CREATED → COMPLETE/FAILED) and the progress fields returned, which is meaningful given there is no output schema. It stops short of polling cadence or any terminal-state caveats beyond FAILED.
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, front-loaded with the purpose, then the operational rule; every clause carries information and nothing is repeated from the schema or title.
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 single-parameter status-poll tool with no output schema, the description supplies the state transitions, the progress fields, and the error-recovery path, covering what an agent needs to call and act on 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 coverage is 100% and bulk_id is fully documented in the schema with an example, so the baseline is 3. The description only implies the id's origin ('after a bulk trigger returns an id') without adding format or validation 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?
States a specific verb+resource ('Current status of an async bulk-change operation') and names the triggering tools ('issues_update_bulk and its kin'), which separates it from siblings like tracker_bulk_issues_list and tracker_entities_bulk_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?
Explicit when-to-use ('Poll this after a bulk trigger returns an id') and a clear follow-up routing rule ('once it reports FAILED, call bulk_issues_list for the per-issue errors'), naming the alternative tool for the error path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_bulk_issues_listList Tracker bulk-change failed issuesARead-onlyIdempotent
The issues a bulk-change operation could NOT change, each with its per-field error.
Use after bulk_get reports a non-zero failure count to see why specific issues were
rejected (e.g. an invalid resolution for the target queue/type). Successful issues are not
listed here.
| Name | Required | Description | Default |
|---|---|---|---|
| bulk_id | Yes | Bulk-change operation id to inspect. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, so the safety profile is covered. The description adds real value beyond that by disclosing the return content (per-field error per failed issue) and the exclusion of successful issues. It does not cover pagination or auth, keeping it short of a 5.
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 tight sentences, front-loaded with the core definition, then the usage trigger and exclusion. Every 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?
With no output schema, the description usefully explains what the returned records contain (per-field errors). Combined with annotations covering safety, an agent has enough to call it correctly; only pagination/ordering behavior is unspecified.
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 bulk_id parameter, so the schema already documents it. The description reinforces that the id refers to a bulk-change operation but adds no syntax or format detail beyond the schema. 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?
States a specific verb and resource ('issues a bulk-change operation could NOT change'), and adds the distinguishing scope detail that successful issues are excluded. This clearly separates it from tracker_bulk_get and other list siblings.
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?
Explicitly names the trigger condition ('after bulk_get reports a non-zero failure count') and the alternative tool, plus the intended purpose (see why specific issues were rejected). An agent needs no inference to know when to call this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_changelog_listList Tracker issue changelogARead-onlyIdempotent
Full changelog (edit history) for a Tracker issue.
Auto-paginated via the relative id-cursor. Capped at the configured item cap unless limit
is given.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Order of the changes. | |
| field | No | Keep the changes of this field, e.g. ``status``. | |
| limit | No | Max changes to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. | |
| change_type | No | Keep the changes of this type, e.g. ``IssueWorkflow``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: it is auto-paginated via a relative id-cursor and is capped at the configured item cap unless limit is passed.
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 tightly written sentences, front-loaded with the core purpose and immediately followed by the pagination/cap behavior. No filler or restatement of the tool name.
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 filtered list tool with full schema coverage and a clear annotation safety profile, the description covers purpose and pagination behavior well. With no output schema, it could say a bit more about the shape of returned change entries, but this is a minor 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?
Schema description coverage is 100%, so the schema already documents all five parameters including sort, field, change_type and limit. The description's only parameter-relevant statement (the cap vs. limit interaction) largely restates what the limit schema description already says, so it adds little beyond 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 states a specific verb and resource: returning the "Full changelog (edit history) for a Tracker issue." It is unambiguous, though it does not explicitly distinguish this from related history/event siblings such as tracker_entities_events_list.
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 the issue-key requirement, but there is no explicit when-to-use guidance and no mention of alternatives (e.g. tracker_entities_events_list) or exclusions. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_checklists_clearClear Tracker issue checklistADestructive
Permanently delete the ENTIRE checklist of a Tracker issue (all items, irreversible).
Returns the issue without its checklist.
| Name | Required | Description | Default |
|---|---|---|---|
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description reinforces this with 'Permanently delete' and 'irreversible', and adds the return behavior ('Returns the issue without its checklist'), but offers no info on permissions, auth scopes, or side effects beyond the obvious.
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 short sentences with zero filler; the destructive, whole-checklist scope is front-loaded and the return behavior is a compact second sentence.
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 single-parameter destructive mutation with no output schema, the description covers what is destroyed (the entire checklist, irreversibly) and what is returned (the issue without its checklist). The remaining gap is that it never disambiguates against the sibling item-delete tools.
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?
Only one parameter (issue_key) and schema description coverage is 100%, with an example format already supplied in the schema. The description adds nothing about the parameter, so the baseline of 3 applies per the high-coverage rule.
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?
States a specific verb and resource ('delete the ENTIRE checklist of a Tracker issue') and emphasizes scope ('all items'), which implicitly separates it from item-level siblings like tracker_checklists_delete or tracker_entities_checklists_items_delete. It stops short of naming those alternatives explicitly, so an agent must infer the boundary from the word 'ENTIRE'.
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 rather than stated: the 'ENTIRE checklist (all items)' framing signals this is the bulk-clear path rather than per-item removal. There is no explicit when-to-use, when-not-to-use, or named alternative among the many sibling checklist tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_checklists_createAdd Tracker checklist itemA
Add an item to a Tracker issue's checklist (creates the checklist if absent).
Returns the issue with its full checklist.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /issues/{key}/checklistItems`` (add an item). | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), so the bar is lower. The description still adds value: it discloses the checklist-creation side effect and states that the return payload is the issue with its full checklist, which the annotations do not convey.
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, with the primary action front-loaded and the side effect/return noted second. Every 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?
For a 2-parameter nested-body write tool with no output schema, the description covers the mutation's side effect and the return shape. It leaves minor gaps (permission requirements, whether repeat calls append duplicate items given idempotentHint=false), but nothing essential for correct invocation is 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?
Schema description coverage is 100%, with body.text, checked, assignee, and the nested deadline block all documented inline, so the baseline of 3 applies. The description adds no additional meaning about issue_key format or body semantics beyond 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?
Specific verb (add) plus resource (checklist item on a Tracker issue) and it names the side effect of creating the checklist when absent. It does not, however, distinguish itself from the near-identically named sibling tracker_entities_checklists_create, which is a real ambiguity for an agent scanning this list.
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?
There is no statement of when to use this tool versus alternatives (tracker_checklists_update, tracker_checklists_clear, tracker_entities_checklists_create). The parenthetical about creating the checklist if absent implies an upsert-style behavior but gives no explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_checklists_deleteDelete Tracker checklist itemADestructive
Permanently remove one item from a Tracker issue's checklist (irreversible).
Get item_id from checklists_list. Returns the issue with its remaining checklist.
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | Checklist item id, from ``checklists_list``. | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety bar is partly covered. The description adds value anyway by stressing permanence/irreversibility and disclosing the return shape ('the issue with its remaining checklist'), which the annotations do not.
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 short sentences, irreversibility and definition front-loaded, sourcing note second, zero filler. Nothing could be cut without losing 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?
With no output schema, the description helpfully states what comes back, and it covers the destructive/irreversible nature. It omits any note about required permissions or what happens when item_id is invalid, so it is slightly short of 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% and both parameters are documented there, including item_id's source (checklists_list). The description restates that sourcing but adds no format, constraint, or edge-case 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?
States a specific verb ('remove'), resource ('one item from a Tracker issue's checklist'), and scope ('one item'), which distinguishes it from the sibling tracker_checklists_clear that wipes the whole checklist. An agent can route correctly without opening the schema.
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?
Provides the prerequisite for the required item_id ('Get item_id from checklists_list'), which is genuine usage guidance. However, it never states when this is preferable to tracker_checklists_clear or the tracker_entities_checklists_items_delete variant, so alternative-selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_checklists_listGet Tracker issue checklistARead-onlyIdempotent
The checklist items on a Tracker issue (text, done flag, assignee, per-item deadline).
Returns a flat array; an issue with no checklist yields an empty list. Item ids from here
feed checklists_update / checklists_delete.
| Name | Required | Description | Default |
|---|---|---|---|
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description earns credit by adding return behavior the annotations cannot: a flat array, and an empty list when the issue has no checklist. It stops short of permissions, pagination or error behavior, so not a 5.
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 compact sentences, zero filler, return shape front-loaded and the id-chaining note kept to a short trailing clause. Nothing could be cut without losing 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 one-parameter read tool with rich annotations and no output schema, the description covers what the agent actually needs: what is returned, the field set, and the empty case. Only secondary details (permissions, error handling) are absent, which is a minor 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?
There is a single parameter (issue_key) with 100% schema description coverage including an example format (QUEUE-123), so the schema carries the burden. The description adds nothing about the parameter, which is fine but leaves this at 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 names a specific resource (checklist items on a Tracker issue) and even enumerates the item fields returned (text, done flag, assignee, per-item deadline). By pointing to checklists_update / checklists_delete as consumers of the returned ids, it also distinguishes itself from the mutating siblings.
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 only implied: the reader infers this is the read step that precedes update/delete, since the description says its item ids feed those tools. There is no explicit when-to-use statement, no exclusion, and no mention of related siblings such as tracker_entities_checklists_* or tracker_checklists_create/clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_checklists_updateEdit Tracker checklist itemAIdempotent
Edit one checklist item on a Tracker issue (text, checked state, assignee, deadline).
Get item_id from checklists_list. Returns the issue with its updated checklist.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``PATCH /issues/{key}/checklistItems/{item_id}`` (edit an item). | |
| item_id | Yes | Checklist item id, from ``checklists_list``. | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the safety bar is lower. The description usefully adds the return behavior ('Returns the issue with its updated checklist'), which matters because no output schema exists, but it does not clarify partial-update semantics (all body fields default to null).
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 short sentences, zero waste, with the action and scope front-loaded and the prerequisite/return details following. Nothing is padded or repeated.
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 3-parameter nested mutation tool with no output schema, the description covers purpose, source of the item id, and the return value, and annotations cover the safety profile. It could go one step further on partial-update behavior and how it differs from the near-duplicate sibling.
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 nested body object documents every field, so the description's high-level field list is largely redundant. The 'item_id from checklists_list' note merely restates the schema description, so the 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?
States a specific verb and resource ('Edit one checklist item on a Tracker issue') and enumerates the editable facets (text, checked state, assignee, deadline). It does not, however, distinguish itself from the very similar sibling tracker_entities_checklists_items_update, so an agent cannot tell the two apart from text alone.
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?
Gives a concrete prerequisite/workflow pointer: 'Get item_id from checklists_list', which is genuine routing guidance to a sibling. It stops short of stating when this tool should be preferred over the overlapping entities-checklists variants, or any permission prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_columns_createCreate Tracker board columnA
Add a column to an agile board; returns the new column.
name and statuses (the issue-status keys whose cards land in the column) are
required; limit optionally caps the number of issues allowed in the column.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``columns.create`` (``POST /boards/{board_id}/columns/``). | |
| board_id | Yes | Numeric identifier of the agile board. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description usefully adds that the tool returns the new column (important because there is no output schema) and mentions an optional limit cap, but it does not discuss permissions, rate limits, or side effects, and the limit parameter is absent from 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 two sentences, front-loads the tool's purpose, and then gives required-field information efficiently. The mention of the non-existent limit parameter is a minor wasted clause but does not make the description bloated.
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 create tool with a nested request body and no output schema, the description provides useful return information and states required fields. However, it references a limit parameter not present in the schema and does not explain the board_id parameter or body structure, leaving some gaps despite annotations covering safety behavior.
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 restates that name and statuses are required and clarifies statuses as issue-status keys whose cards land in the column, but that meaning is already in the schema; it also mentions a limit parameter that does not exist in the schema, adding no valid parameter meaning.
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?
States a specific verb and resource: 'Add a column to an agile board', and adds that it returns the new column. This clearly distinguishes it from sibling column tools like tracker_columns_list, tracker_columns_get, tracker_columns_update, and tracker_columns_delete.
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 this is the creation tool, but gives no explicit when-to-use guidance, no alternatives (e.g., use tracker_columns_update to modify an existing column), and no prerequisites. Required fields are noted, but that is schema-level detail rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_columns_deleteDelete Tracker board columnADestructive
Permanently remove a column from an agile board (irreversible).
Returns an acknowledgement on success.
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Numeric identifier of the agile board. | |
| column_id | Yes | Numeric identifier of the board column. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds the strong 'Permanently ... (irreversible)' warning and notes that an acknowledgement is returned on success. It does not say what happens to issues/workflow steps tied to the removed column, which is the main remaining behavioral gap.
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 short sentences, no filler; the irreversible warning is front-loaded in the first sentence and the return behavior follows. Every 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?
For a two-parameter destructive tool with full schema coverage and annotations covering the safety profile, the description is largely sufficient. The only shortfall is not addressing downstream effects on entities occupying the deleted column.
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 both board_id and column_id documented as numeric identifiers, so the schema carries the parameter semantics. The description adds nothing beyond that, making the baseline 3 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?
States a specific verb (delete/remove) and resource (a column on an agile board) with a scope qualifier ('permanently', 'irreversible'). An agent can immediately distinguish this from tracker_columns_create/update/get/list without opening a schema.
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 on when to delete a column versus alternatives such as tracker_columns_update, nor any prerequisites or warnings about columns still holding issues. The only contextual hint is 'irreversible', which is a property, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_columns_getGet Tracker board columnARead-onlyIdempotent
Look up a single board column by its numeric id.
The column includes the issue statuses grouped into it. Use this when you already know the
board and column ids; use columns_list to enumerate every column on a board.
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Numeric identifier of the board. | |
| column_id | Yes | Numeric identifier of the column. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld, so safety is covered. The description adds return-content context by noting the column includes its grouped issue statuses, which is useful since there is no output schema; it stops short of describing not-found/error behavior or any lookup constraints.
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 tight sentences with zero waste; the primary action is front-loaded and the routing hint follows 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?
For a read-only getter with no output schema, the description supplies the key missing piece: what the returned column contains (grouped issue statuses). It could go slightly further on lookup failure behavior, but nothing critical is absent.
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 both parameters documented as numeric ids, so the schema carries the load. The description's reference to a 'numeric id' and required board/column ids merely echoes that, adding no new syntax or format guidance.
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?
States a specific verb and resource ('look up a single board column by its numeric id') and adds scope detail that the column contains grouped issue statuses. It is clearly distinguishable from siblings like tracker_columns_list and tracker_columns_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?
Explicitly names the precondition ('when you already know the board and column ids') and routes the agent to the correct alternative ('use columns_list to enumerate every column on a board'). No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_columns_listList Tracker board columnsARead-onlyIdempotent
Every column defined on the given agile board.
Each column carries the issue statuses whose cards land in it. Use this to inspect a board's
column layout; use columns_get when you already know a column id, and boards_get for
the board itself.
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Numeric identifier of the board whose columns to list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so safety is covered. The description adds meaningful context beyond them by explaining that each column carries the issue statuses whose cards land in it, i.e. what the returned data means. It does not mention pagination or ordering, but for a board-scoped list this is a minor omission.
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?
Three short sentences, front-loaded with the core action, then the payload semantics, then the sibling routing. 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 output schema, the description appropriately describes what is returned (columns plus the statuses mapped to each). Combined with the annotation safety profile and full schema coverage, nothing needed to invoke it correctly is 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?
Schema description coverage is 100% and the single board_id parameter is fully documented in the schema. The description only echoes 'given agile board' without adding format, constraints, or lookup guidance, 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?
States a specific verb ('list') and resource ('columns defined on the given agile board'), and scopes it to the board. An agent can distinguish it from tracker_columns_get, tracker_columns_create, and tracker_boards_get without opening any schema.
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?
Explicitly names two alternatives with the condition that selects each: use columns_get when a column id is already known, and boards_get for the board itself. This is exactly the when-to-use / when-not guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_columns_updateEdit Tracker board columnAIdempotent
Edit a board column; only the fields set in body are changed.
Get column_id from columns_list. Returns the updated column.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``columns.edit`` (``PATCH /boards/{board_id}/columns/{column_id}``). Every field is optional; only the fields you set are sent. | |
| board_id | Yes | Numeric identifier of the agile board. | |
| column_id | Yes | Numeric identifier of the board column. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so safety is largely covered. The description still adds real behavioral value: partial-update semantics ("only the fields set in `body` are changed") and the return shape ("Returns the updated column"), which the annotations do not convey.
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 short sentences, no waste, and the core semantics (partial edit) are front-loaded ahead of the ID-sourcing hint and the return note.
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 3-required-param mutation with a nested body object and no output schema, the description covers the key points an agent needs: partial update behavior, where the column_id comes from, and what is returned. Missing only finer details such as the effect of replacing `statuses` or permission requirements.
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 nested `body` schema already documents each field and states that every field is optional and only set fields are sent. The description's partial-update sentence restates that schema text rather than adding new meaning, so the 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 names a specific verb and resource ("Edit a board column") and scopes the change to fields supplied in `body`, which separates it from the sibling create/delete/list/get column tools. It stops short of explicitly naming those siblings, but the operation is 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?
"Get `column_id` from `columns_list`" is a concrete workflow hint for obtaining a required identifier, which is more than nothing. However, there is no guidance on when to use this versus `tracker_columns_create`/`tracker_columns_delete`, no prerequisites, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_comments_createAdd Tracker issue commentB
Add a comment to a Tracker issue; returns the created comment.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for adding a comment to an issue or an entity. | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the basics: readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=true. The description adds that it returns the created comment, which is useful for a write operation with no output schema. However, it doesn't disclose side effects like notifications to summoned users, attachment handling, or rate limits, which are relevant for a comment creation tool with rich body parameters. With annotations present, the bar is lower, but more context could be provided.
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, economical sentence that front-loads the action and includes the return value. It's appropriately sized for a simple create tool, with no wasted words. It could be slightly more front-loaded, but it's 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?
The description is minimal but covers the essential purpose and return. However, for a mutation tool with nested object parameters and no output schema, it omits important behavioral context such as permission requirements, side effects (e.g., notifying summoned users), and confirmation details. With annotations covering the safety profile, it's adequate but has clear 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 description coverage is 100%, and every parameter and nested field (body.text, summonees, attachmentIds, maillistSummonees) has a clear description in the schema. The tool description adds no additional parameter semantics beyond what the schema already provides. Baseline 3 is appropriate when schema does the heavy lifting.
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 and resource: 'Add a comment to a Tracker issue'. It clearly conveys the action and target, distinguishing it from read operations like tracker_comments_list or tracker_comments_get. However, it doesn't differentiate against the sibling tracker_entities_comments_create, which likely serves a similar purpose for entities. Still, the core purpose is 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—when you need to add a comment to an issue—but provides no explicit guidance on when to use this tool versus alternatives, such as tracker_entities_comments_create for entity comments or tracker_comments_import for bulk. No conditions or exclusions are given, leaving the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_comments_deleteDelete Tracker issue commentADestructive
Permanently delete one comment from a Tracker issue (irreversible).
Get comment_id from comments_list. Returns an acknowledgement on success.
| Name | Required | Description | Default |
|---|---|---|---|
| issue_key | Yes | Issue key, e.g. QUEUE-123. | |
| comment_id | Yes | Comment id (numeric ``id`` or ``longId``), from ``comments_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false; the description reinforces this with "Permanently ... (irreversible)" and adds the single-item scope plus the return behavior ("Returns an acknowledgement on success"), which matters since no output schema exists. It omits any permission or authorization constraints.
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 short sentences, zero filler, with the destructive/irreversible consequence front-loaded before the id-sourcing hint.
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 two-parameter mutation with full schema coverage and no output schema, the description covers purpose, irreversibility, and return acknowledgement. The remaining gap is any mention of required permissions or what happens on a nonexistent/already-deleted comment.
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 issue_key and comment_id are already documented, including the note that comment_id is numeric id or longId from comments_list. The description's pointer to comments_list merely restates the schema, adding no new semantics, 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?
States a specific verb and resource ("Permanently delete one comment from a Tracker issue") and scopes it to a single comment. It does not, however, distinguish itself from the very similarly named sibling tracker_entities_comments_delete, which likely deletes the same class of object.
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?
It gives one concrete prerequisite for invocation: obtain comment_id from comments_list. It offers no guidance on when deletion is appropriate versus siblings such as tracker_comments_update or tracker_entities_comments_delete, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_comments_getGet Tracker issue commentBRead-onlyIdempotent
One comment of a Tracker issue: text, author, edit history and, on request, attachments.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Extra fields: ``attachments``, ``html`` or ``all`` (comma-separated). | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. | |
| comment_id | Yes | Comment id (numeric ``id`` or ``longId``), from ``comments_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds useful return-content information (text, author, edit history, attachments only 'on request'), which partially compensates for the absent 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?
A single front-loaded sentence with no filler; the resource and its fields come first. Efficient, though the fields list is slightly telegraphic.
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?
Low-complexity read tool with no output schema; the description does describe what is returned, covering the main gap. Only finer return-format details (e.g., edit-history shape) are left unspecified, which is acceptable for such a simple fetch.
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 three parameters (issue_key, comment_id, expand) are documented in the schema itself. The phrase 'on request, attachments' loosely hints at the expand parameter but adds no syntax or format detail beyond it. 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?
States a specific verb (Get) and resource (one comment of a Tracker issue) and enumerates the payload fields (text, author, edit history, attachments). The singular 'one comment' implicitly distinguishes it from tracker_comments_list, though no sibling is named explicitly.
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 when-to-use statement and no alternatives named. The agent can infer it retrieves a single comment by id, but the description offers no routing guidance versus tracker_comments_list or tracker_entities_comments_get.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_comments_importImport Tracker issue commentA
Import a comment onto an issue preserving its original author and timestamp (admin-only).
Returns the imported comment.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed body for ``POST /issues/{key}/comments/_import`` — import one comment with history. | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation/safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the bar is lower. The description adds real value beyond them: the admin-only authorization requirement and the fact that author/timestamp are preserved from the payload rather than set to now. It omits conflict/duplicate behavior, which matters given idempotentHint=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?
Two sentences, zero filler, with the key authorization and preservation behavior front-loaded before the return note.
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?
Covers authorization, import semantics, and the return value despite there being no output schema, and the 100%-documented schema carries parameter detail. Minor gaps remain around duplicate/conflict handling for a non-idempotent write.
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 issue_key and the nested body (text, createdAt, createdBy, optional updatedAt/updatedBy). The description only echoes the authored/timestamped nature of the payload and adds no syntax or format detail. 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?
States a specific verb+resource (import a comment onto an issue) and the discriminating behavior ('preserving its original author and timestamp') separates it from the create sibling. It does not name an alternative explicitly, so it stays just short of 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 '(admin-only)' qualifier gives a clear precondition for use, but there is no guidance on when to prefer this over tracker_comments_create or tracker_issues_import. Usage context is implied by the 'import' semantics rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_comments_listList Tracker issue commentsARead-onlyIdempotent
All comments on a Tracker issue, auto-paginated via the relative id-cursor.
Capped at the configured item cap unless limit is given, so very long threads
are truncated at the cap rather than fetched forever.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max comments to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| expand | No | Extra blocks to include in the reply. | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuinely useful behavior beyond that: auto-pagination via a relative id-cursor and silent truncation at the configured item cap unless limit is passed. That truncation warning is the kind of trait annotations cannot express.
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, zero filler, and the leading clause names the resource before the pagination detail. 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 read-only list tool with full schema coverage and safety annotations, the description supplies the pagination and truncation context an agent needs. The absence of output-schema explanation is fine since no output schema exists and the id-cursor is named.
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 reinforces the limit semantics (cap vs explicit limit) but adds no syntax or format detail for expand or issue_key beyond what the schema already states.
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?
States a specific verb+resource: lists all comments on a Tracker issue. Clear enough to distinguish from write siblings like tracker_comments_create or tracker_comments_update. It does not explicitly differentiate from tracker_comments_get or tracker_entities_comments_list, so it falls short of 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?
No when-to-use guidance and no mention of alternatives. The description never says to use tracker_comments_get when a single comment id is known, nor does it clarify the relationship to tracker_entities_comments_list. Only the pagination/cap behavior is implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_comments_reactions_createReact to Tracker issue commentA
Add an emoji reaction to a comment on a Tracker issue.
name is the reaction name (e.g. like, dislike, fire). Returns the comment
with its updated reactions.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Reaction name, e.g. ``like``, ``dislike`` or ``fire``. | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. | |
| comment_id | Yes | Comment id (numeric ``id`` or ``longId``), from ``comments_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, covering the safety profile. The description adds a concrete fact the annotations do not: it returns the comment with its updated reactions, which is valuable given no output schema. It does not mention auth requirements or what happens on duplicate reactions, so it adds some but not rich behavioral 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?
Two tight sentences, front-loaded with the action and followed by an optional clarification on the name parameter and the return value. Every clause earns its place with zero boilerplate.
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 three-parameter mutation with 100% schema coverage and no output schema, the description covers the essential details and even discloses the return shape. It is complete enough to call correctly, with only minor behavioral gaps such as repeat-reaction handling.
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 three parameters. The description re-lists example reaction names ('like', 'dislike', 'fire') that already appear in the schema, adding no new semantics such as valid-value constraints or the origin of comment_id. 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?
States a specific verb ('Add an emoji reaction') against a precise resource ('a comment on a Tracker issue'), leaving no ambiguity about the operation. No sibling tool performs reactions, so the agent can place it unambiguously among the tracker comments family.
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 usage context is implied by the operation itself, but there are no explicit when/when-not statements or named alternatives. It never distinguishes itself from sibling writes like tracker_comments_update or tracker_comments_delete, though the reaction-specific purpose makes the intent inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_comments_updateEdit Tracker issue commentAIdempotent
Replace the text of an existing comment on a Tracker issue.
Get comment_id from comments_list. Returns the updated comment.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``PATCH /issues/{key}/comments/{id}`` (edit a comment). | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. | |
| comment_id | Yes | Comment id (numeric ``id`` or ``longId``), from ``comments_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so safety is largely covered. The description adds genuine value beyond that: 'Replace the text' signals a full overwrite of the existing body (what gets destroyed) rather than an append, and it discloses the return value. Auth requirements and failure modes are still unstated.
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, front-loaded with the core action, then the parameter hint and return note. Efficient and free of filler; only the comment_id hint is mildly redundant with the schema.
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 3-param mutation with no output schema, the definition covers the action, the parameter source, and the return value, and annotations carry the idempotency/safety profile. Missing only permission/prerequisite context to be fully self-contained.
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 schema description coverage at 100%, the schema already documents issue_key, comment_id and body.text (including YFM markdown). The description only repeats the comment_id provenance already stated in the schema, so it adds no meaning beyond structured data. 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?
States a specific verb ('Replace the text'), the resource ('existing comment on a Tracker issue'), and the mutation mode (full replacement). This clearly separates it from tracker_comments_create/delete. It does not, however, distinguish itself from the near-name sibling tracker_entities_comments_update, which an agent could easily confuse.
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 tells the agent where to obtain comment_id ('from comments_list'), which is real routing guidance, but says nothing about when to prefer this tool over alternatives or what preconditions (e.g. ownership/permissions) apply. Usage is implied by the verb rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_components_createCreate Tracker componentA
Create a component in a queue (a sub-area for classifying its issues).
name and queue (the queue key) are required; optional fields include
description, lead and assignAuto.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /components`` (create a component). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the agent knows this is a non-destructive, non-idempotent write. The description adds little beyond the field list — it doesn't state permission requirements, duplicate-name behavior, or what happens if the queue key is invalid.
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 compact sentences, front-loading what a component is before the required/optional field summary. No filler, though the field enumeration is largely redundant with the schema.
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 create tool with full annotation coverage and no output schema, the description covers purpose and required inputs adequately. It is slightly thin on the failure/permission side, but nothing essential for invoking the tool correctly is 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?
Schema description coverage is 100%, so the schema already documents every field; the description merely restates which are required versus optional, adding no syntax or format detail. Minor concern: it names the optional flag 'assignAuto' while the schema property is 'assign_auto', a small naming mismatch that could confuse an agent mapping values.
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?
States a specific verb and resource ('Create a component in a queue') and even defines what a component is ('a sub-area for classifying its issues'), which helps an agent that has never seen this domain model. It doesn't explicitly distinguish itself from siblings like tracker_components_update/delete, though the create verb does most of that work.
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 the 'in a queue' scoping, but there is no explicit when-to-use guidance, no mention of alternatives such as tracker_fields_create, and no noted prerequisites like permissions or queue existence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_components_deleteDelete Tracker componentBDestructive
Permanently delete a component (irreversible). Returns an acknowledgement.
| Name | Required | Description | Default |
|---|---|---|---|
| component_id | Yes | Numeric id of the component, from ``components_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is largely covered. The description reinforces irreversibility (redundant with destructiveHint) and adds one genuinely new fact — that the call returns an acknowledgement — but omits permission requirements and any side effects on issues referencing the component.
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 short sentences with zero waste, and the destructive nature is front-loaded in the first clause before the return-value note.
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?
Adequate for a one-parameter destructive tool whose annotations carry the safety semantics, but it stops short of telling the agent what is required to call it successfully (authorization) or what happens to dependent data such as issues assigned to the component.
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 single parameter's description already names the source of the id (``components_list``). The tool description adds no syntax, format, or constraint information 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?
States a specific verb and resource ("Permanently delete a component") with a clear scope qualifier ("irreversible"). It does not explicitly distinguish itself from other delete siblings (tracker_components_update, tracker_queues_delete, etc.), but the name-plus-verb pairing leaves little ambiguity.
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?
There is no when-to-use guidance, no alternative named (e.g., components_list for discovering the id first), and no prerequisites such as required permissions. The agent must infer all of this from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_components_getGet Tracker componentBRead-onlyIdempotent
One component with its queue, owner, description and auto-assign flag.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated fields to return, e.g. ``name,description,lead``. | |
| component_id | Yes | Numeric id of the component, from ``components_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish read-only, idempotent, open-world behavior, so the description does not need to restate safety. It adds some useful scope by implying a single-component retrieval and listing returned fields, but it does not disclose auth requirements, error behavior, or whether omitted fields are returned by default.
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 wasted words. It is very terse and reads as a fragment rather than a full instruction, but it is efficiently structured for a simple getter.
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 low-complexity read tool with rich annotations and full schema coverage, the definition is mostly complete. However, there is no output schema, and the description only partially characterizes the return payload and does not clarify the fields parameter's effect on returned data.
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 component_id and fields are already documented in the schema. The description does not add meaning beyond the schema for either parameter, 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 identifies a single component and names some included data (queue, owner, description, auto-assign flag). Together with the title 'Get Tracker component', the purpose is clear, though the description itself lacks an explicit verb and does not directly differentiate itself from siblings like tracker_components_list.
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?
There is no explicit guidance on when to use this tool versus tracker_components_list, tracker_components_list_for_queue, or other component siblings. The schema notes that component_id comes from components_list, but the description provides no such routing or prerequisite information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_components_group_permissions_getGet a group's rights on a Tracker componentBRead-onlyIdempotent
What one group may do on a component (create, read, write, deny).
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | Numeric id of the group. | |
| component_id | Yes | Numeric id of the component. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered structurally. The description adds a useful behavioral detail not in the schema/annotations: the enumeration of permission levels (create, read, write, deny) that can come back. It stops short of saying anything about the response shape.
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 compact sentence, front-loaded on the core meaning. There is no filler, though the extreme brevity borders on under-specification rather than tightness.
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 two-parameter read tool with no output schema and full annotation coverage, this is minimally adequate. The permission-level list hints at the returned values, but there is no guidance on the sibling tool or on the response structure, leaving gaps an agent would have to guess at.
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 group_id and component_id are already documented in the schema. The description's 'one group' / 'a component' merely restates the parameters and adds no format or constraint detail, 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?
States the specific retrievable fact (a group's rights on a component) and enumerates the possible right values. It does not, however, distinguish itself from the sibling tracker_components_user_permissions_get, which retrieves the analogous per-user 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?
No indication of when to call this versus the very close sibling tracker_components_user_permissions_get, nor any prerequisites (e.g. needing read rights on the component). Usage must be inferred from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_components_listList Tracker componentsARead-onlyIdempotent
All components created by the organisation's users.
Each component carries its queue, owner and description. Components are sub-areas used to classify issues within a queue; use this to discover valid component names/ids before filtering or creating issues.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered structurally. The description adds the returned payload shape (queue, owner, description) and the semantic role of components, but says nothing about pagination, result size, or ordering for an open-world listing.
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 tight paragraphs: scope first, then payload and intended use. No filler sentences and nothing that repeats the title verbatim.
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 input parameters and no output schema, the description carries the burden of explaining the return contents, and it does so briefly (queue, owner, description). The only gap is operational detail such as result volume or pagination for an org-wide list.
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 takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless schema applies. The description correctly implies no filtering inputs are accepted.
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 names the specific resource ('All components created by the organisation's users') and the title supplies the verb, so an agent knows this is an org-wide component listing. It does not explicitly contrast itself with the close sibling tracker_components_list_for_queue or tracker_components_get, leaving the scope distinction to be inferred from 'all'.
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?
It gives a concrete when-to-use: 'use this to discover valid component names/ids before filtering or creating issues,' which ties the tool to concrete downstream tasks. It does not state when NOT to use it or name the per-queue alternative, so the routing guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_components_list_for_queueList components of a Tracker queueARead-onlyIdempotent
The components of one queue, so you need not filter components_list by queue.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated extra fields: ``version,description,lead,assignAuto``. | |
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds only the relationship to components_list and says nothing about pagination, return shape, or ordering.
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 zero filler that delivers both the scope and the sibling routing. Nothing could be trimmed without losing 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 read-only list tool whose annotations carry the safety profile and whose schema documents both parameters, the description is nearly sufficient. The only gap is that no output schema exists and the return format is never mentioned.
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 both queue_id and fields fully documented in the schema itself. The description adds no syntax, format, or constraint detail beyond that, 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 states the resource and scope precisely ("The components of one queue") and explicitly distinguishes itself from the sibling tracker_components_list. The verb is only carried by the title, but the resource and the routing to the alternative make 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?
It names the alternative tool and the condition that selects this one: use this so you need not filter components_list by queue. That is clear context for choosing between the two, though it does not spell out a when-not-to-use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_components_updateEdit Tracker componentAIdempotent
Edit a component; only the fields set in body are changed.
Get component_id from components_list. Pass version to guard against concurrent
edits (optimistic locking).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``PATCH /components/{id}?version=`` (edit a component). Only the fields that are set are sent, so omitted fields stay unchanged. | |
| version | No | Current version of the object (optimistic lock), from its get/list tool. | |
| component_id | Yes | Numeric id of the component, from ``components_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false, so the safety profile is already covered. The description adds genuinely useful behavior beyond that: partial-update semantics (only fields set in body change) and the optimistic-locking contract for version. It does not explain failure behavior on a version mismatch, which would complete the picture.
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 short sentences, front-loaded with the core edit semantics before prerequisites. Every clause 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 3-parameter tool with a nested body object and no output schema, the description covers the essentials: partial update behavior, where to get the id, and the locking mechanism. It omits what happens on a stale version or required permissions, which are minor gaps given the rich schema.
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 component_id, version, and every body field. The description largely restates schema facts (partial body updates, component_id source, version as optimistic lock) rather than adding new syntax or format detail, 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 states a specific verb and resource ("Edit a component") that matches the tool name and distinguishes it from create/delete siblings by implying modification of an existing component. It does not explicitly contrast itself with nearby siblings such as tracker_components_create or tracker_entities_update, so it stops short of 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?
It gives clear operational context: obtain component_id from components_list and pass version to guard against concurrent edits. That is real when-to-use guidance, but it offers no exclusions or alternatives (e.g., when to use create vs update, or what to do if version is stale), so it falls short of explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_components_user_permissions_getGet a user's rights on a Tracker componentARead-onlyIdempotent
What one user may do on a component (create, read, write, deny) and who grants it.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Login or numeric uid of the user. | |
| component_id | Yes | Numeric id of the component. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety is covered. The description adds meaningful context beyond annotations by specifying the permission types returned and that the response includes the granting source.
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 wasted words. It immediately states the core purpose and the key return content without padding.
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 operation with complete parameter documentation and annotations covering safety, the description is largely sufficient. It explains the returned rights and grantor, though it could be slightly richer about the response shape since no output schema exists.
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 required parameters (user_id and component_id) are fully documented in the schema. The description adds no parameter-level detail, which is acceptable given the schema already does the heavy lifting.
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 resource and scope: a single user's permissions on a Tracker component, listing the possible rights (create, read, write, deny) and noting it returns who granted them. It implicitly distinguishes itself from the sibling group-permissions tool by specifying 'one user,' though it does not explicitly name alternatives.
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 phrasing 'What one user may do on a component,' which tells the agent this is the single-user permission lookup rather than the group variant. However, it provides no explicit when-to-use guidance, prerequisites, or named alternatives, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_dashboards_createCreate Tracker dashboardA
Create a personal Tracker dashboard; returns it with the id used to add widgets.
NOTE: dashboard deletion is not wrapped by ycli, so the dashboard stays on the account until removed in the UI.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /dashboards/`` (create a dashboard). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), but the description adds genuinely non-derivable lifecycle context: the response carries the id for widget attachment, and the created dashboard cannot be deleted via ycli. That is real behavioral value beyond the annotations, though auth/permission requirements go unstated.
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 tightly written sentences with the core action front-loaded, followed by a clearly demarcated NOTE. Every sentence earns its place and there is no 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 single-parameter create tool with nested body, the description covers the essential return contract (id for widget attachment) and an important lifecycle caveat, despite there being no output schema. It omits permission/auth expectations and what a 'personal' dashboard scope implies, keeping it short of a 5.
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 name, owner and layout are fully documented in the schema itself (including the owner default and layout enum values). The description adds no parameter-level detail beyond that, so the 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?
States a specific verb (Create) and resource (personal Tracker dashboard), plus a distinguishing scope qualifier ('personal') that separates it from the sibling dashboard/widget tools. An agent can identify what this does without opening the schema.
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?
Implies the correct workflow by stating the returned id is 'used to add widgets,' pointing the agent toward tracker_dashboards_add_cycle_time_widget as the next step. The NOTE also gives a clear usage caveat (deletion must happen in the UI). No explicit when-not or named alternative, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_dashboards_widgets_create_cycle_timeAdd Tracker cycle-time widgetA
Add a cycle-time widget to a Tracker dashboard; returns the created widget.
Get dashboard_id from dashboards_create.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /dashboards/{id}/widgets/cycleTime`` (add a cycle-time chart). | |
| dashboard_id | Yes | Id of the dashboard to add the widget to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnly=false, idempotent=false, destructive=false and openWorld=true, so the safety profile is covered. The description adds that a created widget is returned, which is useful given there is no output schema, but says nothing about authorization scope, duplicate behavior, or side effects on the parent dashboard.
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 short sentences, the create action front-loaded and the prerequisite placed second. No filler, no repetition of the title or the schema.
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 2-parameter create tool with annotations and a fully documented nested body, the essentials are present, and the return-value note compensates for the absent output schema. It stops just short of the prerequisite/permission context that a mutation on a shared dashboard might warrant.
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 nested body documents end/start/formula, mode, filter, filterId, from/toStatuses, autoUpdatable and description individually. The description's only parameter-level contribution is where dashboard_id comes from, so the baseline 3 is correct.
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 and resource ('Add a cycle-time widget to a Tracker dashboard') plus the effect on the caller ('returns the created widget'). The widget-creation action is unambiguous and distinct from the sibling tracker_dashboards_create, so an agent can route without opening the schema.
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?
It gives one actionable prerequisite ('Get dashboard_id from dashboards_create'), which is real routing guidance. However, it never says when this tool should be used vs. not used, nor mentions alternatives (e.g. other widget types or tracker_boards_* tools), leaving usage largely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_attachments_attachAttach Tracker entity fileA
Attach a previously uploaded temporary file to a Tracker entity.
Requires a temp_file_id from the Tracker temporary-upload endpoint (not wrapped by
ycli — files are usually seeded via the UI). Returns the entity.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Extra blocks to include in the reply. | |
| fields | No | Comma-separated fields to include in the reply. | |
| notify | No | Notify the users in the fields of the object; omitted, the API notifies. | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. | |
| temp_file_id | Yes | Temporary file id from a prior POST /attachments upload. | |
| notify_author | No | Notify the author of the change; omitted, the API does not. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true. The description adds useful behavioral context: it requires a specific temp file ID from a prior upload, which is not reflected in annotations, and notes that ycli does not wrap the temporary-upload endpoint. This clarifies non-obvious prerequisites.
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, front-loads the core action and prerequisite, and contains no extraneous information. 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?
The description covers the critical prerequisite (temp_file_id source), the return value ('Returns the entity'), and the context that the upload endpoint is not wrapped. With no output schema, it provides enough for an agent to call correctly, though it could note permissions or side effects more explicitly.
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 documented in the schema. The description adds some semantic context about temp_file_id (from temporary-upload endpoint) but does not add meaning beyond the schema for other parameters. Baseline of 3 is appropriate when schema does the heavy lifting.
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 ('attach') and resource ('previously uploaded temporary file to a Tracker entity') and clearly distinguishes itself from siblings by explaining the prerequisite of a temp file ID from the temporary-upload endpoint.
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 usage by stating the requirement of a temp_file_id and that files are usually seeded via the UI. It does not explicitly name alternatives (e.g., tracker_attachments_upload) but the context is sufficient to know when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_attachments_deleteDelete Tracker entity attachmentADestructive
Permanently delete an attachment from a Tracker entity (irreversible).
The API answers with an empty body; returns an acknowledgement on success.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | Attachment file id (from entities_attachments_list). | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true. The description adds useful context beyond that: the deletion is irreversible and the API returns an empty body with an acknowledgement. It does not mention authorization or error behavior, but the core behavioral facts are covered.
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 tightly written sentences. The irreversible warning is front-loaded and the response behavior is a useful second sentence with no 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?
Given full schema coverage and annotations that cover the safety profile, the description is nearly complete: it states irreversibility and return behavior. It could be more complete by clarifying its relationship to tracker_attachments_delete, but an agent has enough to call 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%, so the schema already documents entity_type, entity_id, and file_id. The description adds no additional syntax, format, or source guidance for those parameters; 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?
States a specific verb and resource ('Permanently delete an attachment from a Tracker entity') and names the entity scope. It does not explicitly distinguish itself from the sibling tracker_attachments_delete, so an agent cannot fully rule out overlap without inspecting both.
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 when-to-use guidance or alternative-tool routing is provided. It does not say when to choose this instead of tracker_attachments_delete or the attach/list siblings; only the operation itself is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_attachments_getGet Tracker entity attachmentARead-onlyIdempotent
One attachment's metadata (name, size, MIME type, download URL).
Downloading the raw bytes is CLI/SDK-only (tracker entities attachments download).
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | Attachment file id. | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so the safety profile is covered. The description adds real value beyond them by disclosing the exact metadata fields returned and a hard capability boundary (raw byte download is not available via MCP), which prevents a failed invocation.
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 short sentences, the primary purpose front-loaded, followed by the one important caveat. Every clause earns its place with no 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?
With no output schema, the description carries the burden of describing the return content and does so by listing the metadata fields. It is complete enough to call correctly, though it could note auth/permission requirements for private attachments.
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 entity_type, entity_id, and file_id are already documented in the schema. The description adds no syntax or format detail beyond it, making 3 the correct 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?
States a specific verb and resource ('One attachment's metadata') and enumerates the returned fields (name, size, MIME type, download URL), so the agent knows exactly what this retrieves. It doesn't explicitly name its nearest sibling (tracker_entities_attachments_list or tracker_attachments_get) to disambiguate, so it falls short of 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 note that 'Downloading the raw bytes is CLI/SDK-only' usefully tells the agent what this tool cannot do, but there is no explicit statement of when to prefer this over the list/get variants. Usage is implied (fetch one known attachment id) rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_attachments_listList Tracker entity attachmentsARead-onlyIdempotent
Files attached to an entity — name, size, MIME type, uploader and download URL.
Returns metadata only. Downloading the raw bytes is CLI/SDK-only — run
ycli tracker entities attachments download <FILE_ID> <FILENAME> — because binary blobs
are not an MCP payload.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), so the bar is lower. The description adds genuinely useful context: returns metadata only and that binary downloads are unavailable over MCP due to payload constraints. It does not describe pagination or result limits for large attachment sets.
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, front-loaded with what the tool returns, followed by the key operational constraint. Every clause earns its place; no 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?
Complete enough for a read-only list tool: the schema documents both params, annotations cover safety, and the description covers behavior (metadata-only, MCP limitation) and an alternative route. Missing only pagination/result-size behavior, which is a minor gap given no output schema.
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% (both entity_id and entity_type are documented, including enum-like values for entity_type). The description adds no parameter syntax or format details beyond the schema. Baseline 3 when the schema does the heavy lifting.
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?
States a specific verb (list) and resource (files attached to an entity), and enumerates exactly what metadata is returned (name, size, MIME type, uploader, download URL). This distinguishes it from the sibling tracker_entities_attachments_get (singular) and the tracker_attachments_list variant.
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?
Explicitly states when NOT to use this tool for raw bytes and names the alternative CLI/SDK command. However, it does not clarify when to use this entity-scoped list versus the sibling tracker_attachments_list, which an agent must infer from the naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_bulk_getGet Tracker entity bulk-change statusARead-onlyIdempotent
Current status of an async entity bulk-change operation started by entities_update_bulk.
status runs CREATED → COMPLETE / FAILED; poll until it settles.
| Name | Required | Description | Default |
|---|---|---|---|
| bulk_id | Yes | Operation id returned by entities_update_bulk. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so safety is covered, but the description adds real behavior beyond that: the CREATED → COMPLETE/FAILED lifecycle and the instruction to poll until it settles. It does not cover retention or error detail of a FAILED state.
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 short sentences, front-loaded with the purpose and followed by the state machine; every clause carries information an agent needs for polling.
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 single-parameter status-check tool with no output schema, the definition is nearly complete — purpose, trigger, and terminal states are all present. It could note what the response exposes about a FAILED operation, but nothing critical to correct invocation is 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?
Only one parameter, and schema description coverage is 100% — the schema already explains that bulk_id is the id returned by entities_update_bulk, which the description merely restates. 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?
States a specific verb (get status) and resource (an async entity bulk-change operation), and names the originating tool entities_update_bulk, which lets an agent place it precisely relative to the many tracker_entities_* siblings.
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?
Explicitly says to poll until the operation settles and ties the tool to the operation started by entities_update_bulk, giving a clear usage loop. It stops short of stating when not to call it (e.g., non-bulk updates), so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_checklists_createAdd Tracker entity checklist itemsB
Add checklist item(s) to a Tracker entity; returns the entity with its checklist.
body is a bare array of items, e.g. [{"text": "…"}].
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | A bare array of checklist items. | |
| expand | No | Extra blocks to include in the reply. | |
| fields | No | Comma-separated fields to include in the reply. | |
| notify | No | Notify the users in the fields of the object; omitted, the API notifies. | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. | |
| notify_author | No | Notify the author of the change; omitted, the API does not. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description usefully adds return behavior ("returns the entity with its checklist") but says nothing about permissions, duplicate handling, or side effects such as notifications (which are in the schema, not the description).
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 compact sentences with zero waste. The core action is front-loaded, and the body-format note follows as a secondary clarification.
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 7-parameter mutation tool with no output schema, the description covers the action and the return shape, and annotations cover the safety profile. However, it omits error conditions, permission requirements, and behavior around the notify/notify_author options that materially affect 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%, so the schema already documents all 7 parameters, including the body array and its item shape. The description's `[{"text": "…"}]` example is a mild reinforcement of what the schema already states, meriting the baseline 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?
States a specific verb and resource ("Add checklist item(s) to a Tracker entity") and clarifies the target entity type. It does not explicitly differentiate from siblings like tracker_entities_checklists_update or tracker_entities_checklists_items_update, but the create semantics are 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?
There is no explicit when-to-use or when-not-to-use guidance, and no alternative sibling is named. The only hint is the body example (`[{"text": "…"}]`), which implicitly signals the create case versus edit-all, but that is inference rather than guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_checklists_deleteDelete Tracker entity checklistADestructive
Permanently delete the ENTIRE checklist of a Tracker entity (all items, irreversible).
To remove a single item use entities_checklists_items_delete. Returns the entity.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Extra blocks to include in the reply. | |
| fields | No | Comma-separated fields to include in the reply. | |
| notify | No | Notify the users in the fields of the object; omitted, the API notifies. | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. | |
| notify_author | No | Notify the author of the change; omitted, the API does not. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds genuinely new context: the deletion spans ALL items and is irreversible, and it notes the entity is returned. It stops short of stating permission requirements or whether a confirmation is needed.
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 tight sentences with the destructive scope front-loaded, followed by the routing hint. Every sentence carries information and there is no 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?
With no output schema, the description usefully notes that the entity is returned. Combined with fully documented params and destructive annotations, an agent has what it needs; only permission/confirmation behavior is unstated.
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% (entity_type, entity_id, expand, fields, notify, notify_author are all documented in the schema). The description adds no parameter-level meaning beyond what the schema provides, so the 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?
States a specific verb and resource ('Permanently delete the ENTIRE checklist of a Tracker entity') with scope made explicit via capitalization of ENTIRE. It distinguishes itself from the sibling that deletes a single item, so an agent can tell them apart without opening either schema.
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?
Names the alternative explicitly ('To remove a single item use entities_checklists_items_delete') along with the condition that selects it, which is exactly the discrimination an agent needs for the whole-checklist vs single-item decision. No exclusions are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_checklists_items_deleteDelete Tracker entity checklist itemADestructive
Permanently remove one item from a Tracker entity's checklist (irreversible).
Returns the entity with its remaining checklist.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Extra blocks to include in the reply. | |
| fields | No | Comma-separated fields to include in the reply. | |
| notify | No | Notify the users in the fields of the object; omitted, the API notifies. | |
| item_id | Yes | Checklist item id. | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. | |
| notify_author | No | Notify the author of the change; omitted, the API does not. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered. The description adds value beyond the annotations by calling the operation 'irreversible' and documenting the return ('the entity with its remaining checklist'). It does not address auth requirements or the notify defaults, but it earns credit for the added 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?
Two short sentences with zero waste: the destructive scope is front-loaded and the return behavior follows. 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 destructive mutation with annotations already covering safety and a fully documented schema, the description supplies the irreversibility warning and return shape an agent needs. Nothing critical is missing, though auth/permission prerequisites are not mentioned.
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 all seven parameters including entity_type, entity_id, item_id and the notify/expand ancillary options. The description adds no parameter-level meaning, 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?
States a specific verb and resource ('Permanently remove one item from a Tracker entity's checklist') and the scope ('one item') distinguishes it from sibling tools that delete the whole checklist (tracker_entities_checklists_delete, tracker_checklists_clear). An agent can identify the target operation without opening the schema.
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 use case (removing a single checklist item) but never states when to use it versus alternatives like clearing or deleting the whole checklist. Usage is inferable from the scope wording, but there is no explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_checklists_items_updateEdit Tracker entity checklist itemBIdempotent
Edit one checklist item on a Tracker entity (text, checked state, assignee, deadline).
Returns the entity with its updated checklist.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | A checklist item in a create (``[{text}]``) or edit-all (``[{id, text}]``) body. | |
| expand | No | Extra blocks to include in the reply. | |
| fields | No | Comma-separated fields to include in the reply. | |
| notify | No | Notify the users in the fields of the object; omitted, the API notifies. | |
| item_id | Yes | Checklist item id. | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. | |
| notify_author | No | Notify the author of the change; omitted, the API does not. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly=false, idempotent=true, destructive=false, openWorld=true). The description usefully adds the return shape ('Returns the entity with its updated checklist'), which matters because there is no output schema, but it says nothing about partial-update semantics, notification behavior, or side effects.
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 short sentences, front-loaded with the action and scope, with the return behavior placed second. No filler, though it is terse enough that the parenthetical field list spends words on information already in the schema.
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 an 8-parameter, nested-body mutation with no output schema, the description covers the return value but leaves key operational details unstated: whether omitted/null fields leave values unchanged, and what the notification flags actually do. Adequate minimum, with clear gaps around partial-update behavior.
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 8 parameters including the nested body and deadline object. The description's parenthetical (text, checked state, assignee, deadline) merely restates schema fields and adds no meaning about null defaults, notify/notify_author, or entity_type values.
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?
States a specific verb (Edit) and resource (one checklist item on a Tracker entity) and enumerates the editable fields, which separates it from the sibling that edits the whole checklist (tracker_entities_checklists_update) or deletes an item. It never names those siblings explicitly, so the differentiation is inferable rather than stated.
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 scope wording ('Edit one checklist item') implies when to use it versus the checklist-level update/delete siblings, but there is no explicit when-to-use, when-not-to-use, or prerequisite guidance (e.g., permissions, whether the parent checklist must exist). Usage is implied only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_checklists_moveMove Tracker entity checklist itemB
Reorder a checklist item within a Tracker entity's checklist.
Returns the entity with its reordered checklist.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST …/checklistItems/{id}/_move`` (reorder an item). | |
| expand | No | Extra blocks to include in the reply. | |
| fields | No | Comma-separated fields to include in the reply. | |
| notify | No | Notify the users in the fields of the object; omitted, the API notifies. | |
| item_id | Yes | Checklist item id to move. | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. | |
| notify_author | No | Notify the author of the change; omitted, the API does not. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), so the bar is lower. The description adds that it returns the entity with the reordered checklist, useful because there is no output schema. However, it does not explain what happens when the 'before' target is omitted/null (presumably append to end), which is the key behavioral question for a reorder operation.
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 short sentences with zero waste: the action is front-loaded and the return behavior follows. Nothing is repeated from the title or schema.
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 nested-body mutation tool with 8 parameters and no output schema, the description covers the action and the return shape, while annotations cover safety and the schema covers all inputs. The only real omission is the null/'before' positioning semantics, which is a minor 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?
Schema description coverage is 100% and every parameter (including the nested 'before' field and the notify/notify_author defaults) is documented in the schema itself. The description adds no parameter meaning beyond that, so the 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?
States a specific verb ('Reorder a checklist item') and a precise resource scope ('within a Tracker entity's checklist'), which is enough to separate it from sibling mutation tools like tracker_entities_checklists_update_item or tracker_entities_checklists_update. It stops short of naming those siblings explicitly, so the differentiation is semantic rather than 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?
There is no when-to-use guidance, no conditions that select this tool over the neighboring checklist tools (create/update/update_item/delete_item), and no prerequisites or constraints mentioned. Usage must be inferred entirely from the tool name and the word 'reorder'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_checklists_updateEdit Tracker entity checklistAIdempotent
Replace/update a Tracker entity's checklist items in one call.
body is a bare array of items, each with id/text/checked. To edit a single
item by id use entities_checklists_items_update. Returns the entity with its checklist.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | A bare array of checklist items. | |
| expand | No | Extra blocks to include in the reply. | |
| fields | No | Comma-separated fields to include in the reply. | |
| notify | No | Notify the users in the fields of the object; omitted, the API notifies. | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. | |
| notify_author | No | Notify the author of the change; omitted, the API does not. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so safety is largely covered. The description adds the body shape and the return value ("the entity with its checklist"), which is useful. However, it never resolves whether items omitted from the array are deleted or preserved — the single most important behavioral fact for this call — and the schema's "edit-all body" hint only deepens that ambiguity.
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?
Three short sentences, front-loaded with the action and scope, then the body shape, then the sibling alternative. No filler or repetition of the title.
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?
Return behavior is covered ("Returns the entity with its checklist"), parameters are covered by the schema, and safety by annotations. The gap is the replace-vs-merge semantics of the body array, which the description's own wording leaves unresolved for a mutation tool the agent must 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%, so every parameter (expand/fields/notify/notify_author/entity_id/entity_type/body) is already documented in the schema, giving a baseline of 3. The description restates the body array and its item keys (id/text/checked), which marginally helps but adds no format or semantics 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?
Names a concrete verb and resource: replacing/updating a Tracker entity's checklist items in a single call, and explicitly contrasts with the sibling that edits one item. The only weakness is the hedged verb pair "Replace/update," which leaves the agent unsure whether this is a full replacement or a merge.
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?
Gives an explicit routing rule: to edit a single item by id, use ``entities_checklists_items_update`` instead. That is a real when-to-use-alternative statement. It stops short of covering the other checklist siblings (create/delete/move) or stating prerequisites such as required entity permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_comments_createAdd Tracker entity commentB
Add a comment to a Tracker entity; returns the created comment.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for adding a comment to an issue or an entity. | |
| expand | No | Extra blocks to include in the reply. | |
| notify | No | Notify the users in the fields of the object; omitted, the API notifies. | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. | |
| notify_author | No | Notify the author of the change; omitted, the API does not. | |
| is_add_to_followers | No | Add the comment's author to the followers; omitted, the API adds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-idempotent, non-destructive mutation, so the safety profile is covered. The description adds only that it returns the created comment; it says nothing about notification side effects (which the schema exposes via notify/notify_author) or permission requirements for posting to an entity.
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 wasted words, and the return behavior is stated up front. It is arguably too terse for a 7-parameter nested-body mutation, but it is not padded or redundant.
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?
Annotations cover the safety profile and the schema fully documents inputs, so the essentials are present. The gaps are the lack of sibling differentiation (comments_add) and any behavioral context around notifications/permissions, which the description could have supplied.
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 seven parameters (including the nested body fields) are documented in the schema itself. The description adds no syntax, format, or constraint detail beyond that, 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?
States a specific verb and resource ('Add a comment to a Tracker entity') and names the return value, so the core action is unambiguous. However, it does not differentiate from the sibling tracker_comments_add, which also creates comments, so an agent cannot tell from the description which one applies to entities vs 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?
No when-to-use guidance, no prerequisites, and no mention of the alternatives (tracker_comments_add for issues, tracker_entities_comments_update/delete for existing comments). The agent must infer selection entirely 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.
tracker_entities_comments_deleteDelete Tracker entity commentBDestructive
Permanently delete one comment from a Tracker entity (irreversible).
Returns an acknowledgement on success.
| Name | Required | Description | Default |
|---|---|---|---|
| notify | No | Notify the users in the fields of the object; omitted, the API notifies. | |
| entity_id | Yes | Entity id (or shortId). | |
| comment_id | Yes | Comment id (from entities_comments_list). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. | |
| notify_author | No | Notify the author of the change; omitted, the API does not. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered structurally. The description adds two useful points beyond that: it is irreversible and it returns an acknowledgement on success. It still omits permission requirements and any cascade/thread effects, so it is additive but thin.
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 short sentences, zero padding, with the destructive nature front-loaded ahead of the return-value note. Efficient, though the second sentence is minimal.
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 output schema, the description correctly notes the return value ('an acknowledgement on success'). Params are fully covered by the schema. But for a destructive mutation it says nothing about permissions, threading behavior, or whether related replies are affected, leaving clear 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 description coverage is 100%, so entity_type, entity_id, comment_id, notify and notify_author are all documented in the schema itself. The description adds nothing about parameters; the baseline 3 applies when the schema does the heavy lifting.
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?
States a specific verb+resource: 'Permanently delete one comment from a Tracker entity'. An agent knows exactly what it does. However, it does not differentiate from the many sibling delete tools (notably tracker_comments_delete vs tracker_entities_comments_delete), so it falls short of 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?
There is no when-to-use or when-not-to-use guidance, no prerequisites, and no pointer to alternatives. The irreversibility warning is a behavioral fact, not usage routing, so the agent is left to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_comments_getGet Tracker entity commentCRead-onlyIdempotent
A single comment on an entity by id.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Extra blocks to include in the reply. | |
| entity_id | Yes | Entity id (or shortId). | |
| comment_id | Yes | Comment id (numeric id or longId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so safety and idempotency are covered structurally. The description adds nothing beyond that — no note on what a missing comment returns, what the expand parameter changes, or how permissions affect visibility.
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?
It is a single short fragment with no padding, so there is nothing to trim, but it is under-specified rather than deliberately concise and it never front-loads an action verb. Brevity here reflects missing content more than efficient writing.
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 three-required-parameter read tool with no output schema, the description supplies no context about the response shape, whether expand materially changes it, or how it differs from the list and entity endpoints. The 100%-covered schema and read-only annotations cover the mechanics, but the description itself is essentially inert.
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 all four parameters carry their own descriptions (entity_type values, id/shortId, numeric or longId, expand blocks), so the schema does the work. The description contributes no additional parameter meaning, which matches the baseline 3 for fully documented schemas.
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 fragment "A single comment on an entity by id" identifies the resource (one comment) and the lookup key (id), which implicitly contrasts with the sibling tracker_entities_comments_list. However it is a noun phrase rather than a verb+resource statement, so it never explicitly says it retrieves/returns a comment, and it does not name the list alternative.
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 when-to-use guidance, no prerequisites, and no mention of the obvious alternative tracker_entities_comments_list or of tracker_entities_get. The singular 'a single comment' is the only hint, and the agent must infer the routing decision entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_comments_listList Tracker entity commentsBRead-onlyIdempotent
All comments on an entity — author, text, timestamps and summoned users.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Extra blocks to include in the reply. | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered structurally. The description contributes the payload shape (what fields come back), which is modest added value but says nothing about pagination, ordering, or empty/missing-entity 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?
A single tight sentence that front-loads the scope and then enumerates the return fields, with no filler. The em-dash fragment construction is slightly informal but costs nothing in clarity.
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 listing tool with full schema coverage and no output schema, the description is close to sufficient: it names the entity scope and the payload fields. It stops short of covering ordering, pagination, or how it relates to the sibling relative-list and single-get tools.
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 entity_type, entity_id, and expand are all documented in the schema itself; the description adds no parameter-level detail beyond implicitly scoping to 'an entity'. Baseline 3 applies when the schema does the heavy lifting.
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 pairs a clear verb+resource ('all comments on an entity') with a preview of the returned fields (author, text, timestamps, summoned users), so the agent knows exactly what it retrieves. It does not, however, distinguish itself from close siblings like tracker_entities_comments_get or tracker_entities_comments_list_relative.
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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as the 'relative' list variant or the single-comment getter. The agent must infer the selection criteria from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_comments_list_relativeList Tracker entity comments (relative)ARead-onlyIdempotent
An entity's comments via the cursor-paginated …/comments/_relative endpoint.
Prefer this over entities_comments_list when the comment thread is long — it drains
pages up to limit (the configured item cap by default).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max comments (omitted: the configured cap). | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so safety is covered. The description adds genuine behavioral context beyond that — the tool auto-drains cursor pages up to a cap rather than returning one page — which tells the agent to expect multiple underlying requests and a potentially large result.
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, and the differentiator (prefer this for long threads) is placed immediately after the one-line purpose. Every clause carries 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 read-only list endpoint with full schema coverage and annotations, the description is nearly sufficient; the paging behavior is disclosed. It does not say how results are ordered or whether a cursor is echoed back, which matters for a 'drains pages' tool with no output schema, but that is a minor 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?
Schema description coverage is 100%, with each parameter (limit, entity_id, entity_type) documented inline, including enum-like values for entity_type. The description adds only that an omitted `limit` falls back to 'the configured item cap', which the schema already states; 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 identifies the resource (an entity's comments) and the specific access path (the cursor-paginated `…/comments/_relative` endpoint), which is enough to separate it from siblings. It stops short of an explicit verb+scope statement like 'list all comments for one entity', but the endpoint does convey the operation.
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?
It explicitly names the alternative (`entities_comments_list`) and states the condition that should select this one: long comment threads, because it drains pages up to `limit`. There is no guidance on when NOT to use it (e.g. short threads), but the routing advice is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_comments_updateEdit Tracker entity commentAIdempotent
Edit a comment on a Tracker entity; returns the updated comment.
comment_id addresses the comment (get it from entities_comments_list).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``PATCH …/comments/{comment_id}`` (the id travels in the path). | |
| expand | No | Extra blocks to include in the reply. | |
| notify | No | Notify the users in the fields of the object; omitted, the API notifies. | |
| entity_id | Yes | Entity id (or shortId). | |
| comment_id | Yes | Comment id (from entities_comments_list). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. | |
| notify_author | No | Notify the author of the change; omitted, the API does not. | |
| is_add_to_followers | No | Add the comment's author to the followers; omitted, the API adds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds only 'returns the updated comment,' which is useful since no output schema exists, but says nothing about notification side effects (the schema's notify/notify_author flags) beyond what the schema states.
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 short sentences, zero padding, with the core action front-loaded and the identifier-sourcing hint placed afterward. Every 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?
For a mutation tool with full annotation coverage, 100% schema description coverage, and no output schema, the description covers action, return, and the key identifier precondition. The remaining gaps (notification defaults, permission requirements) are mitigated by annotations and the richly documented schema.
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 is documented in the schema, so the baseline is 3. The description only adds sourcing information for comment_id, which is already stated in the schema's comment_id description ('from entities_comments_list'), so it adds little beyond the structured data.
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?
States a specific verb and resource ('Edit a comment on a Tracker entity') plus the return value, so the agent knows exactly what operation this is. It does not explicitly differentiate itself from the similarly named tracker_comments_update (issue comments) or tracker_entities_comments_create/delete, leaving sibling selection partly to the name alone.
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 one concrete precondition — comment_id must come from ``entities_comments_list`` — which is genuinely actionable. However it offers no explicit guidance on when to prefer this over tracker_comments_update or the other comment tools, and no mention of prerequisites like edit permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_createCreate Tracker entityB
Create a Tracker entity (project, portfolio or goal); returns it with its id.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /entities/{type}`` — a ``{fields: {...}}`` envelope. | |
| fields | No | Comma-separated fields to include in the reply. | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint=false, destructiveHint=false, openWorldHint=true, idempotentHint=false, so the safety profile is declared. The description adds the useful note that the created entity is returned with its id, which is context beyond annotations, but says nothing about auth scope, required fields at runtime, or side effects.
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 tight sentence that front-loads the verb, resource, subtypes, and the return value. No 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 3-parameter mutation with a nested body and no output schema, the description is minimal. Annotations cover the safety profile and the schema is fully documented, but the description could clarify hierarchy (parentEntity vs entity_type), required field behavior, and return shape details. Adequate but with clear 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 description coverage is 100%, including nested field docs and 'summary is required on create', so the schema carries the parameter burden. The description adds no parameter detail beyond 'returns it with its id', making baseline 3 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?
States a specific verb and resource ('Create a Tracker entity') and enumerates the three subtypes (project, portfolio, goal), which matches the entity_type enum-like description in the schema. It does not explicitly differentiate from siblings like tracker_entities_update or tracker_projects_create, but the create semantics are 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 when-to-use guidance, no mention of alternatives such as tracker_projects_create for project-specific creation, and no prerequisites (permissions, parent entity requirements). The agent must infer all routing from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_deleteDelete Tracker entityADestructive
Permanently delete a Tracker entity (project/portfolio/goal) — irreversible.
Pass with_board=true to also delete a project's linked agile board. Returns an
acknowledgement on success.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | Entity id (or shortId). | |
| with_board | No | Also delete the project's linked board. | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds genuine value beyond that: 'Permanently ... irreversible' plus the cascade that with_board=true also destroys the linked agile board, and that it returns an acknowledgement. Permissions requirements are still unstated, keeping it short of a 5.
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 tight sentences, front-loaded with the destructive verb and the irreversibility caveat before the optional cascade behavior. Nothing wasted.
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 3-param destructive mutation with no output schema, the description covers the key facts an agent needs: irreversibility, the entity types, the optional board cascade, and the acknowledgement return. Missing only permission/auth requirements and sibling disambiguation.
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 entity_id and entity_type are already documented; the baseline is 3. The description adds only slight nuance for with_board (project-scoped linked agile board) that the schema roughly already conveys.
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?
Specific verb+resource: 'Permanently delete a Tracker entity' and enumerates the entity types (project/portfolio/goal). However, it does not distinguish itself from sibling deletion tools such as tracker_projects_delete or tracker_boards_delete, which an agent could easily confuse with deleting a project via this generic entity tool.
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 on when to use this generic entity delete versus the more specific sibling deleters, and no prerequisites or permission requirements stated. The only usage-adjacent content is the with_board opt-in, which is a parameter hint rather than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_events_listList Tracker entity historyARead-onlyIdempotent
An entity's event history (created/updated/commented/…), auto-paginated.
Each event carries an author, a timestamp, a display title and the individual field changes.
Capped at the configured item cap unless limit is given.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max events (omitted: the configured cap). | |
| selected | No | Event id to build the list around, instead of from the start. | |
| direction | No | ``forward`` (the default) or ``backward``. | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. | |
| new_events_on_top | No | Newest events first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent and open-world, so the description earns credit for going beyond them: it discloses that results are auto-paginated, that the list is capped at the configured item cap unless `limit` is given, and that each event contains an author, timestamp, display title and individual field changes. This is genuinely useful operational context rather than a restatement of the hints.
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?
Three short sentences, front-loaded with the resource and its auto-pagination nature, followed by return shape and the cap/limit rule. No filler and nothing buried.
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?
There is no output schema, so the description correctly fills that gap by describing what each event carries. Combined with the pagination and cap behavior, an agent has enough to call it correctly; only the routing guidance between this and sibling history/comment tools is 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?
Schema description coverage is 100%, so every parameter is already documented in the schema; baseline is therefore 3. The description reinforces `limit` ('unless ``limit`` is given') but adds no meaning beyond the schema's own note that omitting it uses the configured cap, so there is little extra 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?
States a specific verb and resource: 'An entity's event history (created/updated/commented/…)'. It is clearly distinguishable from write siblings like tracker_entities_update and from the narrower tracker_entities_comments_list, which is called out as one of the event types it subsumes. It stops short of explicitly naming which sibling to prefer when the agent only wants comments.
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 the cap behavior under `limit` but gives no when-to-use guidance or alternatives. It never says when to reach for this history list versus tracker_entities_comments_list, tracker_changelog_list, or tracker_entities_get, leaving the agent to infer from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_getGet Tracker entityARead-onlyIdempotent
A single Tracker entity (project, portfolio or goal) by id, with its fields block.
Pass fields to pull extra parameters into the response — keyResultItems for a goal's
key results, checklistItems for a project/portfolio checklist, metricItems for its
metric widgets, or summary,description,entityStatus for the basics. Use
entities_search to discover ids first.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Extra info, e.g. ``attachments``. | |
| fields | No | Comma-separated extra fields, e.g. ``keyResultItems,checklistItems``. | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuinely useful behavioral context by explaining that the response carries a ``fields`` block and which extra blocks can be pulled in, though it says nothing about auth requirements or rate limits.
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?
Front-loaded with the core purpose, then the fields mechanics, then the discovery hint. The enumeration of field values is slightly long but each entry carries distinct semantic value, so little is wasted.
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 output schema, the description must convey return shape, and it does so by describing the ``fields`` block and the optional expansions. Combined with 100% schema coverage on inputs, an agent has enough to call it correctly; only permissions/error behavior is absent.
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, but the description goes beyond the schema by enumerating the valid ``fields`` values and their meaning (keyResultItems for goals, checklistItems for projects/portfolios, metricItems for widgets). It does not explain the ``expand`` parameter, so it isn't fully compensating.
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?
States a specific verb (get) and resource (a single Tracker entity: project, portfolio or goal) by id, and explicitly names tracker_entities_search as the sibling for id discovery. An agent can distinguish it from the many other tracker_*_get tools without opening the schema.
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?
Explicitly routes the agent to entities_search to discover ids first, which is a clear when-to-use condition. It lacks any when-not guidance (e.g. when a specialized getter like tracker_projects_get or tracker_boards_get is preferable), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_links_createLink Tracker entitiesB
Link a Tracker entity to another entity (e.g. relates, depends on).
Returns an acknowledgement on success.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | A link spec used by create-link and the bulk ``values.links`` array. | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, non-idempotent, open-world mutation, so the safety profile is covered. The description adds one useful behavioral fact (returns an acknowledgement on success), but says nothing about permissions, duplicate links, or error conditions.
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 compact, front-loaded sentences with zero filler; the core action leads and the return behavior is a brief trailing note.
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 mutation tool with full annotation coverage, a complete input schema, and no output schema, this is minimally adequate: it states the action and that an acknowledgement is returned. It is missing guidance on which link tool to choose and how to handle duplicate or invalid link types.
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 entity_type, entity_id, and the nested body. The description only echoes the relationship examples already given in the schema, adding no syntax or format detail beyond it, so the 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?
States a specific verb (Link) and resource (a Tracker entity to another entity), and gives relationship-type examples. It does not differentiate itself from the confusingly similar sibling tracker_links_add, so the agent cannot tell which link tool to pick from the description alone.
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 only what the tool does, with no when-to-use guidance, no prerequisites, and no mention of alternatives such as tracker_links_add or the create-vs-list/delete link siblings. Usage is only weakly implied by the purpose sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_links_deleteDelete Tracker entity linkADestructive
Remove the link between a Tracker entity and another entity (irreversible).
right is the id of the entity on the other end (see entities_links_list). Returns
an acknowledgement on success.
| Name | Required | Description | Default |
|---|---|---|---|
| right | Yes | Id of the linked entity to unlink. | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful context beyond that: it stresses the operation is irreversible (no undo path) and that the response is merely an acknowledgement rather than a payload.
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?
Three short sentences with zero waste: the destructive action and its irreversibility come first, then the one ambiguous parameter, then the return behavior. Nothing is padded or repeated.
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 output schema, the description correctly fills that gap by stating the return is an acknowledgement. All parameters are documented and annotations carry the safety profile, so the definition is essentially complete; only auth/permission expectations are unstated.
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 three parameters are already documented in the schema, and the description's explanation of `right` ('the id of the entity on the other end') largely restates the schema text. The only real addition is the cross-reference to entities_links_list for discovering the id, which is helpful but marginal.
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 names a specific verb and resource: remove the link between a Tracker entity and another entity. It is clear about scope, but it does not explicitly differentiate itself from the similarly named sibling tracker_links_delete (issue links), which an agent could easily confuse it with.
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 only implied: the parenthetical '(see ``entities_links_list``)' tells the agent where to discover a valid `right` id. There is no statement of when this tool is preferred over tracker_links_delete or tracker_entities_links_create, and no preconditions or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_links_listList Tracker entity linksBRead-onlyIdempotent
An entity's links to other entities — the link type and the linked entity's summary + id.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated fields to include in the reply. | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds the return shape (link type + summary/id) but says nothing about pagination, permissions, or volume limits, so it clears the lowered bar without being 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?
A single em-dash sentence with no filler, and the core content is front-loaded. It is perhaps terse to the point of under-specification, but 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 tool whose annotations carry the safety profile, the essentials are present, and the description helpfully compensates for the absence of an output schema by naming the returned fields. It still omits pagination and how the optional 'fields' parameter interacts with the reply, which leaves a gap for a list 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%: entity_id, entity_type (with its allowed values) and the fields comma-separated list are all documented in the schema. The description adds no syntax or format detail beyond that, so the 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 names the resource (an entity's links to other entities) and specifies the payload the tool surfaces (link type plus the linked entity's summary and id), so an agent knows what it gets back. It does not, however, distinguish itself from the sibling link tools (tracker_entities_links_create/delete, tracker_links_list*), leaving that differentiation to the name.
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?
There is no when-to-use statement, no prerequisites, and no mention of alternatives such as tracker_links_list or tracker_links_list_filtered. The agent must infer that this is read-only by the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_permissions_getGet Tracker entity permissionsARead-onlyIdempotent
An entity's access settings — the READ/WRITE/GRANT ACL plus inheritance sources.
acl lists the users, groups and roles granted each level; permissionSources names the
parent entities this one inherits permissions from. Change them with
entities_permissions_update.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered; the description adds real value beyond them by disclosing the response shape (acl by level, permissionSources as inherited parents) and the inheritance semantics. No output schema exists, so this return-shape disclosure is doing necessary work.
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 dense sentences, front-loaded with the resource and its return fields, then the sibling pointer. No filler 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?
With annotations covering the safety profile and the schema fully documented, the only remaining burden is the missing output schema, and the description largely discharges it by naming acl and permissionSources. It stops short of describing inheritance resolution order or empty-result behavior.
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% — entity_id and entity_type are already documented, including the project/portfolio/goal enumeration in text. The description adds nothing about the parameters, so the 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?
Names a specific verb+resource (an entity's access settings — the READ/WRITE/GRANT ACL plus inheritance sources) and even enumerates the two return fields, so the agent knows exactly what comes back. It does not distinguish itself from the sibling tracker_entities_permissions_get_direct, which is the one nearby tool whose difference matters.
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?
Points at the mutating counterpart ('Change them with ``entities_permissions_update``'), which is useful routing, but gives no condition for when to call this versus tracker_entities_permissions_get_direct or the per-queue permissions getters. Usage 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.
tracker_entities_permissions_get_directGet Tracker entity direct permissionsARead-onlyIdempotent
An entity's direct READ / WRITE / GRANT rights — the users, groups and roles holding each.
Unlike entities_permissions_get this leaves out inheritance (permissionSources).
Change the rights with entities_permissions_update_direct.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent and openWorld, so the safety profile is settled. The description adds real context by disclosing the returned shape (READ/WRITE/GRANT rights grouped by users, groups and roles) and the deliberate omission of inheritance, which is beyond what annotations provide.
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 compact sentences, front-loaded with what is returned and immediately followed by the disambiguation and the mutation alternative. Zero 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?
With no output schema, the description carries the return-value burden and does so adequately by naming the right categories and subjects involved. Entity type values live in the schema; the description is complete enough for correct invocation, lacking only explicit return-format detail.
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 entity_id and entity_type fully documented in the schema (including entity type values). The description adds no extra parameter syntax or format detail, so the 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?
States a specific verb+resource: an entity's direct READ/WRITE/GRANT rights and who holds them. It explicitly distinguishes from the sibling tracker_entities_permissions_get by noting it excludes inheritance (permissionSources), so the agent can pick correctly without opening schemas.
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?
Names the contrasting sibling (entities_permissions_get) with the exact behavioral difference (no inheritance) and points to entities_permissions_update_direct for changes. It clearly frames the context, though it doesn't state an explicit when-to-prefer-direct rule beyond the inheritance distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_permissions_updateSet Tracker entity permissionsAIdempotent
Change an entity's access rules; returns the resulting permission set.
The acl object of body accepts only grant / revoke
actions, each mapping an access level (READ/WRITE/GRANT) to users/groups/roles,
e.g. {"acl": {"grant": {"READ": {"users": ["8000000000000002"]}}}}. Read the current
ACL first with entities_permissions_get.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``PATCH …/extendedPermissions``: rights to grant and to revoke. | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotent=true, destructive=false and openWorld=true, so the safety profile is covered. The description adds genuinely non-derivable behavior: the body accepts only grant/revoke actions, and the call returns the resulting permission set. It omits whether unmentioned principals are preserved (merge vs replace) and what authorization is required to change ACLs.
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?
Three short sentences, all load-bearing: mutation + return value first, then the body constraint, then the precondition. The example is compact and illustrative rather than padding, and the key scoping fact is 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?
For a 3-parameter mutation tool with deeply nested objects, no output schema, and annotations covering the safety profile, the description supplies what is missing: the return value, the allowed action set, and the read-before-write workflow. An agent can construct a valid call from description plus schema without further assumptions.
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 goes beyond the schema by supplying a concrete nested example payload ('{"acl": {"grant": {"READ": {"users": [...]}}}}') and by clarifying that only grant/revoke are accepted at the top level of acl, which reduces misuse of the deep structure.
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?
States a specific verb and resource ('Change an entity's access rules') and even names the return value, so an agent knows this mutates ACL state and yields a permission set. It references a complementary sibling (entities_permissions_get) but never distinguishes itself from the near-identical tracker_entities_permissions_update_direct, which is the real selection risk here.
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?
Gives an explicit prerequisite workflow: 'Read the current ACL first with entities_permissions_get,' which is actionable routing guidance rather than vague context. It stops short of stating when-not to use it or how it differs from the *_update_direct variant, so no explicit exclusion is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_permissions_update_directSet Tracker entity direct permissionsAIdempotent
Grant and revoke an entity's direct rights; the rest stay as they are.
grant and revoke each map READ / WRITE / GRANT to users (logins or ids),
groups (ids) and roles (AUTHOR, OWNER, CLIENT, FOLLOWER, MEMBER). Returns the
resulting rights. Read them first with entities_permissions_get_direct.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``PATCH …/permissions`` (grant and revoke direct rights). Each side maps an access level (READ / WRITE / GRANT) to users, groups and roles; the API adds or removes exactly those and keeps the rest. ``permissionSources`` is refused (400). | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false and readOnlyHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: the update is additive/subtractive only for the named principals while everything else is preserved, and the call returns the resulting rights. The 400-on-permissionSources restriction lives only in the schema body description, not the tool description.
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?
Three tight sentences: behavior and partial-update semantics first, the parameter mapping second, the return value and prerequisite last. No filler and nothing important buried at the end.
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 3-parameter mutation with a deep nested body, no output schema and idempotent annotations, the description supplies the missing pieces: partial-update semantics, return value, and the recommended preceding read. The one gap is the permissionSources rejection, which is only discoverable from the nested body schema.
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, but the description adds meaning the schema does not: it enumerates the valid roles (AUTHOR, OWNER, CLIENT, FOLLOWER, MEMBER) and clarifies that users may be given as logins or ids. These are real usability gains on top of structured fields.
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 precise verb pair (grant/revoke) and resource (an entity's direct rights), and the word 'direct' explicitly separates it from the sibling tracker_entities_permissions_update, which handles the non-direct permission model. An agent can route correctly without opening the schema.
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?
It gives a clear read-before-write workflow ('Read them first with entities_permissions_get_direct') and states the partial-update contract ('the rest stay as they are'). It stops short of an explicit when-to-use-this-vs-tracker_entities_permissions_update comparison, so it is strong but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_reports_createCreate Tracker entity reportB
Request a report over Tracker entities (POST /entities/report/).
Returns the report entity.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /entities/report/`` — a ``{fields: {...}}`` envelope. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds the endpoint path and states that it returns the report entity, but omits whether report generation is synchronous or async, permission/auth requirements, and whether repeat calls create duplicate reports. Given the annotation coverage, this is adequate 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?
Two short sentences, front-loaded with the action and endpoint, with no filler. It is efficient, though the second sentence ('Returns the report entity.') is thin and could carry more substance rather than just size.
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 mutation tool with a deeply nested required body and no output schema, the description should clarify the report lifecycle (sync vs async, whether the returned entity must be polled/fetched). Neither the ambiguity around 'create' vs 'request' nor the response handling is addressed, so an agent lacks enough to invoke this confidently.
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 nested field (fields.summary, parameters.type, filter.query, sorts, format) is documented in the schema itself. The description adds no parameter-level 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 names a specific verb+resource: it requests a report over Tracker entities and cites the backing endpoint (POST /entities/report/). An agent can tell it apart from nearby read tools like tracker_entities_search or tracker_entities_events_list, though it doesn't explicitly contrast with them. 'Request a report' vs the tool name's 'create' leaves slight ambiguity about whether it stores or generates.
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?
There is no when-to-use guidance and no named alternative. With siblings such as tracker_entities_search, tracker_entities_events_list, datalens_reports_create and forms_answers_export in the same namespace, the agent gets no signal on when this report tool is the right choice over simply listing/searching entities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_searchSearch Tracker entitiesARead-onlyIdempotent
Entities of a given type that match a name substring and a filter, sorted server-side.
Returns a flat list of entities. body.input matches part of the name, body.filter
is a field → value object (author, status, followers, …), body.orderBy with
body.orderAsc sorts, and body.rootOnly keeps the entities with no parent.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | What to find: name substring, filter, sort order; omit for all. | |
| fields | No | Comma-separated extra fields to include. | |
| entity_type | Yes | Entity type: ``project``, ``portfolio``, ``goal`` or ``report`` (issue reports). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so safety is covered. The description adds return-shape context ('flat list of entities') and that sorting is server-side, which is useful, but it does not cover result limits, pagination, or permission requirements.
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 compact sentences, front-loaded with the core purpose and followed by parameter explanation. Minor inconsistency between 'body.orderBy' in prose and 'order_by' referenced in the schema, but no wasted sentences.
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 search tool with no output schema, the description supplies the essentials an agent needs: what it returns (flat list), what it filters on, and how sorting works. Missing only edge-case behavior (limits, defaults when body is omitted) which the schema partially covers.
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, but the description adds genuine value: concrete filter examples (author, status, followers), the interaction of body.orderBy with body.orderAsc, and the meaning of rootOnly (no parent). It slightly exceeds the schema's own per-field 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 definition states a specific verb (search) and resource (Tracker entities of a given type) and names the matching criteria (name substring + filter) and server-side sorting. It distinguishes itself from tracker_entities_get/create, though it does not explicitly contrast with neighbors like tracker_entities_get or tracker_issues_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?
Usage is implied by the description of matching behavior (substring, filter, rootOnly) and the schema note that body can be omitted for all results. There is no explicit when-to-use guidance or naming of an alternative sibling (e.g., tracker_entities_get for a single entity), so an agent must infer the selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_updateEdit Tracker entityAIdempotent
Edit a Tracker entity; only the fields keys present in body are changed.
Returns the updated entity.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``PATCH /entities/{type}/{id}`` (edit fields, comment, links). | |
| expand | No | Extra blocks to include in the reply. | |
| fields | No | Comma-separated fields to include in the reply. | |
| entity_id | Yes | Entity id (or shortId). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful non-annotation context: this is a PATCH-style partial update where only keys present in body.fields are touched, and it returns the updated entity.
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 terse sentences, front-loaded with the action, then the merge semantics and the return value. No filler, nothing to cut.
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 mutation tool with a deeply nested body schema and no output schema, the description supplies the two things the schema cannot: partial-update semantics and a note that the updated entity is returned. It omits permission/auth requirements, which is the main remaining 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?
Schema description coverage is 100%, so the baseline is 3. The description adds meaning beyond the per-key schema text by making explicit the merge semantics of body.fields — only supplied keys change, everything else is left alone — which is the single most important parameter behavior to understand for an edit call.
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?
States a specific verb and resource ('Edit a Tracker entity'), which is enough to distinguish it from tracker_entities_create/delete and tracker_entities_bulk_update by name. It does not explicitly contrast itself with the sibling tracker_issues_update or bulk_update, so it stops short of 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?
There is no guidance on when to pick this single-entity edit over tracker_entities_bulk_update, or how it relates to tracker_issues_update. The partial-update behavior is stated, but as a mechanic rather than a usage condition, and no prerequisites (required entity_type/entity_id) are framed as such.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_entities_update_bulkBulk-update Tracker entitiesA
Start an async bulk field update over many entities; returns the operation.
Poll the returned operation id with entities_bulk_get.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST …/bulkchange/_update`` (mass-edit entities). | |
| entity_type | Yes | Entity type: ``project``, ``portfolio`` or ``goal``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly=false, destructive=false, idempotent=false), so the bar is lower. The description adds genuine non-annotation behavior: the operation is asynchronous and returns an operation id that must be polled. It stops short of saying the body can also add links and comments (it says only 'field update'), so it is not fully complete.
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 core action is front-loaded and the follow-up polling instruction comes second, in the order the agent needs it.
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 output schema, the description correctly fills the gap by saying it returns an operation and naming the poll tool. Minor gap: it doesn't note that the async operation can fail partially or that links/comments are also modifiable, but an agent has enough to call 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%, so the schema already documents entity_type values and the nested body/values/links/comment fields. The description adds no parameter-level detail beyond what the schema provides, so the 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?
States a specific verb and resource with explicit scope: 'Start an async bulk field update over many entities'. The 'bulk / many entities' framing distinguishes it in scope from the single-entity tracker_entities_update sibling without needing the schema.
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 ('over many entities') and gives the follow-up step (poll with entities_bulk_get), but never states when to prefer this over tracker_entities_update or what prerequisites apply. It is implied guidance rather than explicit when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_fields_categories_createCreate Tracker field categoryA
Create a field category (a grouping bucket for issue fields in the UI).
Required: name (ru/en display names) and order (display weight). CAUTION:
org-global and not deletable via the API.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /fields/categories`` (create a field category). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is partly covered. The description adds genuinely non-derivable behavior: the category is org-global (affects the whole organization, not one queue/project) and cannot be undone via the API, which materially changes how careful an agent should be.
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?
Three tight sentences: purpose first, then required fields, then the caution — appropriately front-loaded with no filler. It could be marginally tighter by folding the required-params sentence into the schema-reliant flow, but nothing is wasted.
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 single-parameter create tool with 100% schema coverage and no output schema, the description supplies purpose, required inputs, and the irreversible org-global consequence. Missing details such as auth/permission requirements or what the call returns are minor given the structured data already present.
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 nested name (en/ru), order, and description fields are already documented in the schema. The description restates name and order requirements but adds no format or semantic detail beyond what the schema says, and it omits the optional description param entirely. 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 gives a specific verb and resource ('Create a field category') and adds a functional gloss ('a grouping bucket for issue fields in the UI') that separates it from generic field tools like tracker_fields_create. It does not explicitly contrast itself with the sibling tracker_fields_categories_update, but the create/update distinction is unambiguous from the name plus 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?
There is no when-to-use guidance, no prerequisites, and no mention of an alternative (e.g. update vs create, or how categories relate to fields). The 'Required: name and order' line is a restatement of the schema, not usage guidance. Only the CAUTION hints that this is an operation to invoke deliberately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_fields_categories_updateEdit Tracker field categoryAIdempotent
Edit a field category; only the fields set in body are changed.
Pass version to guard against concurrent edits (optimistic locking).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``PATCH /fields/categories/{id}?version=`` (edit a category). Only the fields that are set are sent, so omitted fields stay unchanged. | |
| version | No | Current version of the object (optimistic lock), from its get/list tool. | |
| category_id | Yes | Identifier of the field category. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the non-destructive, idempotent, open-world profile, so the bar is lower; the description still adds the meaningful edit-specific behaviors that only set fields are changed and that passing version enables optimistic-lock protection against concurrent edits. It does not, however, describe what happens on a version conflict or the shape of the response.
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 tightly written sentences, front-loading the operation and then the concurrency guard, with no filler. The partial-update clause slightly duplicates the body schema's own note, keeping it just below the top band.
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 narrow partial-update mutation with full annotation coverage and a 100%-documented schema, the description supplies the essentials: what is edited, partial-update semantics, and the version guard. No output schema exists, so nothing about return values is owed; only conflict handling is unaddressed.
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 category_id, body (name/order/description) and version in full detail. The description's remarks about body and version largely restate the schema, so the 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 gives a specific verb+resource ('Edit a field category'), making the operation immediately identifiable against siblings such as tracker_fields_categories_create. It does not, however, name or contrast itself with any sibling (e.g. create/get), so it stops short of the top band.
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 only implied: editing an existing category, with the PATCH-style note that omitted fields are left alone. There is no explicit statement of when to reach for this tool versus tracker_fields_categories_create or tracker_fields_get, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_fields_createCreate Tracker fieldA
Create an org-global custom issue field.
CAUTION: global fields are organisation-wide and NOT deletable — creation leaves permanent
residue; prefer localfields_create for a single queue. Required: id (latin key),
name (ru/en display names), category (a category id) and type (value type).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for creating an issue field, global or local to a queue. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, but they cannot express that the created field is irreversible and cannot be deleted. The description supplies exactly that missing context ('NOT deletable — creation leaves permanent residue'), which is high-value for a create tool. It stops short of stating required permissions or the effect of an id collision, keeping it from a 5.
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 tight paragraphs with the destructive/irreversible caveat front-loaded before the field requirements — good information ordering. Slight waste in re-listing required fields that the schema already marks as required.
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?
No output schema exists, and the description covers the decisive information (global scope, permanence, the local alternative) plus the required body fields. It omits permission requirements and error behaviour on a duplicate id, which are minor gaps for this tool class.
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's restatement of the four required fields is largely redundant with the schema; only 'latin key' for id and 'ru/en display names' for name add marginal meaning beyond the existing field 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?
States a specific verb and resource with scope: 'Create an org-global custom issue field.' The word 'org-global' immediately distinguishes it from the sibling tracker_localfields_create, which the description names explicitly.
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?
Gives explicit when-not guidance ('CAUTION: global fields are organisation-wide and NOT deletable') and names the alternative for the narrower case ('prefer localfields_create for a single queue'). An agent can route between the two tools without opening either schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_fields_getGet Tracker fieldARead-onlyIdempotent
Parameters of a single issue field.
They include its value schema, read-only flag, allowed options and category. Use this when you
already know the field id; use fields_list to enumerate every field in the organisation.
| Name | Required | Description | Default |
|---|---|---|---|
| field_id | Yes | Identifier of the issue field, e.g. summary or a custom-field key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so the safety profile is covered. The description adds value beyond them by disclosing the shape of the response (value schema, read-only flag, allowed options, category), which matters because there is no output schema. It says nothing about auth needs or failure modes, keeping it short of a 5.
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 short sentences, zero waste: the return content is front-loaded and the routing guidance follows immediately. Every 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?
For a one-parameter read tool with full annotation coverage, the definition is nearly complete: it explains what is returned despite the absence of an output schema. The only remaining gap is any note on failure behavior for an unknown field id, which is minor.
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 single field_id parameter is documented with an example ('summary or a custom-field key'). The description reinforces this via 'when you already know the field id' but adds no syntax or format detail beyond the schema, so the 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 states a specific resource and scope ('Parameters of a single issue field') and enumerates what the payload contains, which lets an agent distinguish it from the list sibling. The verb is implicit rather than stated ('Parameters of...' instead of 'Get the parameters of...'), but the intent is 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?
It gives an explicit when-to-use condition ('when you already know the field id') and names the alternative with its own condition ('use fields_list to enumerate every field in the organisation'). The routing decision is fully determined with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_fields_listList Tracker global fieldsARead-onlyIdempotent
All global (organisation-wide) issue fields, both standard and custom.
Each field carries its value schema, category and provider metadata. Use this to discover
which field keys exist before filtering or reading issues; use fields_get when you
already know one field id.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuine value by disclosing what each returned field carries (value schema, category, provider metadata), though it says nothing about result size, pagination, or whether custom fields can be filtered out.
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?
Three short sentences, zero waste, front-loaded with the resource scope followed by the returned content and the alternative-tool routing. Nothing repeats the title or annotations.
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 output schema and no parameters, the description carries the burden of explaining both purpose and return content, and it does so — listing the per-field metadata an agent will receive plus the decision rule for choosing it over fields_get. Nothing needed to call it correctly is 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 tool takes no parameters, so the baseline is 4. There are no parameter semantics to clarify, and the description does not need to compensate for any schema gap.
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?
States a specific verb and resource — listing all global (organisation-wide) issue fields, standard and custom. The parenthetical scope narrows it against the sibling local-fields tool, and it names fields_get as the per-id alternative, so an agent can distinguish it without opening schemas.
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?
Explicit both ways: use this to discover which field keys exist before filtering or reading issues, and use fields_get when you already know one field id. That is a direct when-to-use / when-to-use-something-else routing rule rather than implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_fields_updateEdit Tracker fieldAIdempotent
Edit an org-global issue field; only the fields set in body are changed.
Pass version to guard against concurrent edits (optimistic locking). Returns the
updated field definition.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``PATCH /fields/{id}?version=`` (rename and/or change options). Rename and change-options share one PATCH, so this one body covers both ``name`` and ``optionsProvider``; only the fields that are set are sent. | |
| version | No | Current version of the object (optimistic lock), from its get/list tool. | |
| field_id | Yes | Identifier of the issue field, from ``fields_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a write operation (readOnlyHint=false), non-destructive, idempotent, and open-world. Beyond that, the description adds two useful behavioral details: partial PATCH semantics ('only the fields set in body are changed') and optimistic locking via the version parameter. It does not cover permissions or rate limits, but the annotations lower the disclosure bar.
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?
Three sentences, front-loaded with the core action, then patch semantics, then concurrency guard, then return value. Every sentence earns its place with no 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?
Given 100% schema coverage, safety annotations, and no output schema, the description supplies the key remaining context: it is an org-global field edit (distinguishing it from local fields), it is a partial update, it supports optimistic locking, and it returns the updated definition. It does not mention permission requirements, but nothing critical for correct invocation is 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?
Schema description coverage is 100%, so the schema already fully documents field_id, body, and version (including version's optimistic-lock role and body's localized name/options structure). The description repeats the version locking purpose and body partial-update semantics but adds no syntax or format detail beyond the schema. 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 states a specific verb and resource: 'Edit an org-global issue field.' The qualifier 'org-global' implicitly distinguishes it from the local-field sibling (tracker_localfields_update), and 'only the fields set in body are changed' clarifies the PATCH semantics. It does not name an alternative tool explicitly, but the scope does the differentiating work.
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?
There is no explicit when-to-use vs. when-not-to-use guidance and no named alternative. However, 'org-global issue field' implies this is for existing global fields rather than local fields, and the mention of version for concurrent edits gives implied usage context. This is usage implied by scope, not stated alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_filters_createCreate Tracker filterA
Create a saved issue filter owned by the calling user.
name is required; set query (a TQL string) or filter (a conditions object) for
the stored search. Remove it later with filters_delete.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /filters/`` (create a saved filter). Pass either ``filter`` (a field→condition mapping) or ``query`` (a Tracker query string), not both. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the write/non-destructive profile is covered structurally. The description adds genuine context the annotations lack, namely ownership by the calling user, but says nothing about duplicate creation, permissions required, or error 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?
Three short clauses, front-loaded with the action and scope, then the required field, then the exclusion rule and the cleanup counterpart. No filler; every sentence carries 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?
There is no output schema, so the description could have said what the created filter returns (id, stored query), but it does not. It does cover the required parameter and the mutually exclusive query/filter choice, making it adequate but not complete for a create 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?
Schema description coverage is 100% and the nested body schema already documents name, query (TQL string) and filter (field→condition mapping), including the "either/or, not both" rule. The description restates these accurately but adds no format, syntax or validation detail beyond the schema, 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?
States a specific verb and resource ("Create a saved issue filter") and adds the ownership scope ("owned by the calling user"), which separates it from ad-hoc search tools like tracker_issues_search. It references the sibling filters_delete, but does not explicitly contrast with filters_update or clarify how a saved filter differs from a plain query tool.
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?
Gives implied usage (create a stored filter) and points to filters_delete for later removal, which is a useful lifecycle hint. However, it never states when to use this versus an ad-hoc search (tracker_issues_search) or when not to create a filter, leaving the choice largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_filters_deleteDelete Tracker filterADestructive
Permanently delete a saved issue filter (irreversible).
Returns an acknowledgement on success.
| Name | Required | Description | Default |
|---|---|---|---|
| filter_id | Yes | Numeric identifier of the saved filter, e.g. 12345. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the 'permanently/irreversible' phrasing largely restates structured data. It does add one piece of genuinely new context – 'Returns an acknowledgement on success' – which is useful since there is no output schema, but it omits error behavior for a missing filter and whether deletion cascades.
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 short sentences, front-loaded with the destructive action and scope, with no filler. Every clause carries weight.
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 single-parameter deletion with rich annotations and no output schema, the description covers the essentials and helpfully notes the acknowledgement response. It falls short only on failure modes and permissions, which an agent might need before calling.
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 schema itself gives the filter_id format and an example ('12345'). The description adds nothing about the parameter, so the baseline 3 applies since the schema carries the load.
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?
States a specific verb and resource ('delete a saved issue filter') with clear scope, and the name/description pair cleanly distinguishes it from the sibling tracker_filters_get, tracker_filters_create, and tracker_filters_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?
There is no guidance on when to delete versus other filter operations, no prerequisites (e.g. ownership or admin rights), and no hint about how an agent obtains the filter_id since no tracker_filters_list sibling exists. The agent must infer the workflow entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_filters_getGet Tracker filterARead-onlyIdempotent
Parameters of a single saved issue filter.
They include its stored conditions, query-language string, owner, favourite flag and access
permissions. Use this to inspect a filter a user references by id; the resulting conditions
can then feed an issues_search query.
| Name | Required | Description | Default |
|---|---|---|---|
| filter_id | Yes | Numeric identifier of the saved filter, e.g. 12345. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered. The description adds value by disclosing what the read returns (stored conditions, query-language string, owner, favourite flag, permissions), which matters because there is no 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?
Two tight sentences, front-loaded with what the resource is, followed by the usage hint. No wasted text, though the opening phrase is slightly clipped.
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 single-parameter read tool with no output schema, the description supplies the return-content details an agent needs and points to the downstream consumer. Complete enough to call 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 single filter_id parameter is fully documented with an example in the schema. The description adds no syntax or format detail beyond the schema, so the 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?
States a specific verb and resource ('Parameters of a single saved issue filter') and enumerates what the resource contains (conditions, query-language string, owner, favourite flag, access permissions). This clearly separates it from tracker_filters_create/update/delete siblings.
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?
Explicitly says to use it to inspect a filter referenced by id and notes the downstream path (conditions can feed an issues_search query). It gives clear context but does not state exclusions or name a sibling alternative (there is no list sibling here, so this is minor).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_filters_updateEdit Tracker filterAIdempotent
Edit a saved issue filter; only the fields set in body are changed.
Get filter_id from filters_get / the Tracker UI. Returns the updated filter.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``PATCH /filters/{id}`` (edit a saved filter). Only the fields that are set are sent; note the API replaces ``filter`` wholesale rather than merging it, so pass every condition you want to keep. | |
| filter_id | Yes | Identifier of the saved filter, from ``filters_get``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds real value by stating the PATCH partial-update semantics ('only the fields set in body are changed') and that it returns the updated filter. It omits the notable gotcha that the nested 'filter' object is replaced wholesale, but that detail lives 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 tight sentences; the core action and its partial-update caveat are front-loaded, followed by the id lookup hint. No 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 2-parameter mutation with full schema coverage and a complete annotation set, the description covers action, update semantics, id sourcing, and return behavior. Nothing critical is missing, though it could have surfaced the 'filter is replaced wholesale' warning at the top level.
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 'filter_id' and the nested body fields are already documented, including the wholesale replacement of 'filter'. The description's note about filter_id's origin largely restates the schema, 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?
States a specific verb and resource ('Edit a saved issue filter'), which cleanly separates it from the sibling read/create/delete filter tools. It does not explicitly name those siblings, but the edit semantics are 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?
Gives a concrete prerequisite: obtain 'filter_id' from 'filters_get' or the Tracker UI, which is actionable routing guidance. It lacks any explicit when-not-to-use or alternative-tool guidance, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_gaps_createCreate Tracker employee absencesA
Create up to 100 employee absences; needs Tracker administrator rights.
Each gap needs user, workflow (vacation, paid_day_off, illness, absence, trip,
conference_trip, conference, learning, maternity or duty), from and to (ISO 8601,
from earlier). Returns the absences actually saved.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``gaps.create`` (``POST /gaps``): up to 100 absences. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true). The description adds two things annotations cannot: the admin-rights requirement and the partial-success semantics ('Returns the absences actually saved'), warning that not all submitted entries necessarily persist. Rate limits and failure modes beyond that are not described.
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?
Front-loaded with the action and permission requirement, then the required fields, then the return behavior. The inline enumeration of ten workflow values duplicates the schema enum and lengthens the text, but every sentence still carries 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 single-parameter tool with a deeply nested request body, it covers the batch limit, the required nested fields, and what actually gets persisted. No output schema exists, so the note about which absences are returned usefully substitutes for one; only error/validation behavior is left unaddressed.
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 schema already documents user, workflow (with the same enum), from/to ISO 8601 formats and ordering constraints, id, fullDay and workInAbsence. The description largely restates those fields, adding only the 'up to 100' batch cap, so the 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?
States a specific verb and resource ('Create ... employee absences'), plus the batch ceiling (up to 100) and the permission prerequisite. An agent can distinguish it immediately from tracker_gaps_search and tracker_gaps_delete without opening a schema.
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?
Declares the precondition ('needs Tracker administrator rights'), which is real routing information an agent needs before calling. It does not, however, state when this tool should be preferred over alternatives or when creation should be avoided, so it stops short of a full when/when-not treatment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_gaps_deleteDelete Tracker employee absencesADestructive
Delete employee absences by id (irreversible); ids the API does not know are ignored.
Needs Tracker administrator rights. Returns an acknowledgement.
| Name | Required | Description | Default |
|---|---|---|---|
| gap_ids | Yes | Ids of the absences to delete (up to 100), from a search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes meaningfully beyond the annotations: annotations declare destructive/non-idempotent, but the description adds that the deletion is irreversible, that unknown ids are silently ignored, that admin rights are required, and that it returns an acknowledgement. The 'unknown ids ignored' detail is genuinely useful non-obvious 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?
Two tight sentences with zero waste; the irreversible warning and the id-sourcing hint are front-loaded before the permission requirement. Every sentence carries 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?
With no output schema, the description usefully notes the return is an acknowledgement, and it covers the destructive/irreversible nature and the admin prerequisite. A minor gap is not pointing to tracker_gaps_search for obtaining ids, but the essentials are present.
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 single gap_ids parameter is well documented (up to 100 ids, sourced from a search). The description adds little beyond the schema, so the 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?
States a specific verb (Delete) and resource (employee absences) scoped by id, which clearly separates it from tracker_gaps_search and tracker_gaps_create. Sibling differentiation is implied by the verb rather than stated explicitly, so it falls just short of 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?
Provides a prerequisite (Tracker administrator rights) and the schema hints ids come 'from a search', but the description never explicitly says when to use this vs. alternatives or that ids should be obtained from tracker_gaps_search first. Usage is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_gaps_searchSearch Tracker employee absencesARead-onlyIdempotent
The absences (vacation, illness, trips, duty, …) of the given users that overlap a window.
A read done via POST; needs Tracker administrator rights. Every requested user appears,
with an empty gaps list when they are not absent.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max users to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| users | Yes | Logins or ids of the users to look up (up to 100). | |
| date_to | No | Window end (ISO 8601); must be after ``date_from``. | |
| date_from | No | Window start (ISO 8601); defaults to now. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations (readOnlyHint, idempotentHint, openWorldHint) by disclosing that the read is issued via POST, that Tracker administrator rights are required, and that every requested user is returned with an empty gaps list when not absent. That auth requirement and result-shape guarantee are real added 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?
Two tightly written sentences; the resource definition is front-loaded and the operational caveats (POST read, admin rights, empty-list behavior) follow without padding.
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, non-destructive search with full schema coverage and no output schema, the description supplies the key missing context: permissions, transport quirk, and the guarantee that non-absent users still appear. Only minor details like pagination/cap behavior are left to the schema.
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 users, limit, date_from and date_to are already documented in the schema. The description reinforces the window-overlap semantics and the multi-user batch nature but adds no format or edge-case 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?
States a specific resource (employee absences/gaps) with concrete examples of absence types and a clear scope (given users, overlapping a window). It is distinguishable from sibling write tools like tracker_gaps_create, though it never names an alternative explicitly.
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 purpose: batch-lookup absences for a supplied list of users over a time window. There is no explicit when-to-use/when-not or comparison against siblings such as tracker_users_get or tracker_gaps_create, so guidance stays at the implied level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_issues_countCount Tracker issuesARead-onlyIdempotent
Count of issues matching a query-language string or a filter.
body.query is a TQL string, body.filter a field → value object; an empty body
counts every issue the caller can see. E.g.
{"body": {"filter": {"queue": "QUEUE", "status": "open"}}}.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /issues/_search`` and ``POST /issues/_count``. Give ``query`` (the query language) or ``filter`` (field name → value); a body with neither matches every issue the caller can see. ``extra="allow"`` passes the API's other keys (``keys``, ``queue``, ``order``) through. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety and repeat-safety profile is covered. The description adds one genuinely useful behavioral fact — an empty body counts every issue the caller can see, i.e. results are permission-scoped — but says nothing about the return shape or any limits.
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 tight sentences plus one example, front-loaded with the core purpose and the empty-body edge case. Every clause adds information and nothing is redundant.
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 single-parameter count endpoint with full schema coverage and read-only annotations, the description covers the purpose, both body fields, and the empty-body case. The only minor gap is no explicit mention that the result is a scalar count, though that is largely self-evident from the 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?
Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema by naming the query language (TQL), clarifying that filter is a field → value object, and providing a concrete example body. This makes the single nested body parameter easier to populate correctly.
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 (count) and resource (issues) with the matching scope (query-language string or filter), so the agent immediately knows this returns a number rather than records. It does not explicitly contrast itself with siblings like tracker_issues_list or tracker_issues_search, which is what would push it to 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?
Usage is implied rather than stated: the agent can infer this is the tool to reach for when only a total is needed and that an empty body counts everything visible. There is no explicit when-to-use versus tracker_issues_list/search or any exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_issues_createCreate Tracker issueB
Create a Tracker issue; returns the new issue with its key.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /issues/`` (create an issue). Covers the common fields; ``extra="allow"`` lets any custom (global or queue-local) field pass through unvalidated. ``type``/``priority`` accept either a bare key string or a ``{"key": ...}`` object (both are valid per the Tracker API); the CLI sends the object form. | |
| notify | No | Notify the users in the fields of the object; omitted, the API notifies. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare openWorldHint=true, idempotentHint=false, destructiveHint=false and non-read-only, so the safety profile is covered. The description adds only the return-value fact ('returns the new issue with its key'), which is useful given no output schema, but says nothing about auth/permission requirements or notification side effects.
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 zero filler. It is arguably too terse for a tool with a nested request body, but it wastes no 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 one-line return note partially compensates for the absent output schema, and the schema itself is richly described. However, for a create tool with a nested typed body and a notify flag, the description omits queue/permission expectations and any notion of side effects.
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 nested body fields (queue, summary, tags, type, priority, parent, description) are fully documented in the schema. The description adds no parameter meaning beyond that, which is the expected baseline when the schema does the work.
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?
States a specific verb and resource ('Create a Tracker issue'), so the agent knows exactly what it does. It does not, however, distinguish itself from overlapping siblings such as tracker_entities_create or tracker_issues_import.
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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives (e.g., tracker_entities_create, tracker_issues_import, tracker_issues_update). The agent must infer context entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_issues_getGet Tracker issueCRead-onlyIdempotent
A single Tracker issue by key.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Extra blocks to include in the reply. | |
| fields | No | Comma-separated fields to include in the reply. | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds nothing beyond that, e.g. no note about the meaning of expand/fields expansion or permission requirements for fetching an issue.
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?
Extremely short with zero waste, but it is closer to a label than a sentence and omits detail that would help an agent invoke it correctly.
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 retrieval tool with no output schema and three parameters, the description should at least hint at what is returned and how issue keys are scoped. It leaves everything except the key concept to the schema and annotations.
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 issue_key, expand and fields are each documented in the schema. The description adds no extra 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 fragment names the resource (a single Tracker issue) and the lookup key, distinguishing it loosely from tracker_issues_list. But it has no verb and no explicit differentiation from retrieval siblings like tracker_entities_get, so an agent must infer the operation.
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 when-to-use guidance, no prerequisites, and no mention of alternatives such as tracker_issues_list or tracker_entities_get. The agent is left to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_issues_importImport Tracker issueA
Import an issue preserving its original history (admin-only back-fill).
Returns the imported issue.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed body for ``POST /issues/_import`` — import one issue, preserving its history. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, and destructiveHint=false. The description adds value beyond them by disclosing the admin-only permission requirement and the history-preserving side effect, both of which are meaningful for an import operation. It does not, however, address idempotency or what happens on a duplicate/existing key.
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 short sentences: the first front-loads purpose, scope, and the permission constraint; the second states the return. No filler whatsoever.
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 nested-body import with no output schema, the description covers the essential unknowns: the admin restriction, that history is preserved, and that the imported issue is returned. It leaves minor gaps (duplicate-key behavior, non-idempotency, error modes) that an agent might want before calling.
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% on the single nested body object, and each field (key, queue, summary, createdAt, updatedBy, etc.) is individually documented with constraints and pairing rules. The description adds no parameter-level information, so the 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 gives a specific verb and resource ('Import an issue') plus a differentiating qualifier, 'preserving its original history,' which separates it from the plain tracker_issues_create sibling. It stops short of naming that sibling explicitly, so the distinction is inferable rather than stated.
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?
'admin-only back-fill' clearly describes the scenario in which this tool applies rather than routine issue creation, which is meaningful guidance given the ~200 siblings. It never names an alternative tool or an explicit when-not condition, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_issues_listList Tracker issuesARead-onlyIdempotent
Issues matching the supplied filters (omitted filters dropped), auto-paginated.
Returns at most limit issues; exactly limit back means more may match — narrow the
filters or raise limit.
| Name | Required | Description | Default |
|---|---|---|---|
| epic | No | Epic issue key. | |
| limit | No | Max issues to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| queue | No | Queue key, e.g. QUEUE. | |
| status | No | Status key, e.g. open. | |
| assignee | No | Assignee login or id. | |
| issue_type | No | Issue type key, e.g. bug or task. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld). The description adds genuine behavioral context beyond them: omitted filters are dropped, results are auto-paginated, and a return count exactly equal to limit is a 'more may match' signal. That pagination/truncation semantics is not derivable from the annotations or 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 tight sentences with zero waste; the filter semantics are front-loaded and the pagination caveat follows immediately. Every 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?
No output schema exists, so the description carries the burden of return behavior, and it does explain the truncation/pagination edge case well. It stops short of describing the shape of a returned issue, which is a minor residual 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?
Schema coverage is 100%, so all six parameters are already documented in the schema, which sets the baseline at 3. The description adds only the 'omitted filters dropped' default behavior, which is marginal extra meaning over the schema's null defaults.
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 resource (Tracker issues) and the filtering behavior, making the purpose clear. However, it never distinguishes this tool from close siblings like tracker_issues_search, tracker_issues_count, or tracker_issues_suggest, so an agent has no textual basis for picking this one over those.
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?
There is no explicit guidance on when to use this vs. the sibling search/count/suggest tools. The only usage-flavored content is the within-tool pagination hint (narrow filters or raise limit), which does not help alternative selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_issues_moveMove Tracker issueA
Move a Tracker issue to another queue (it gets a new key there; the old key redirects).
queue is the target queue key. Fields that do not exist in the target queue may be
dropped. Returns the moved issue with its new key.
| Name | Required | Description | Default |
|---|---|---|---|
| queue | Yes | Target queue key, e.g. NEW. | |
| expand | No | Extra blocks to include in the reply. | |
| notify | No | Notify the users in the fields of the object; omitted, the API notifies. | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. | |
| notify_author | No | Notify the author of the change; omitted, the API does not. | |
| initial_status | No | Reset the status to the new queue's initial one. | |
| move_all_fields | No | Keep the versions, components and projects the new queue also has. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations covering read-only/destructive/idempotency flags, the description adds real behavioral context: the key changes, the old key redirects, and fields absent from the target queue may be dropped. It does not mention that notifications may be sent or what permissions are required, which is why it stops short of 5.
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 tight sentences plus a short parameter note, with the most important fact (new key, old key redirects) front-loaded. No filler 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?
Despite no output schema, the description states the return (the moved issue with its new key) and the key-dropping caveat. It omits permission requirements and notification side effects, but for a 2-required-param move tool this is close to 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 every parameter including ''queue'' is already documented in the schema; the description's restatement of ''queue'' adds nothing new. It indirectly hints at the field-dropping behavior tied to move_all_fields, but that is marginal over 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?
It states a specific verb and resource ("Move a Tracker issue to another queue") and immediately distinguishes itself from the bulk sibling by operating on a single issue. The added detail that the issue gets a new key and the old key redirects makes the operation's identity 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?
Usage is implied by the clear action, but there is no explicit when-to-use guidance, no mention of the bulk alternative (tracker_issues_move_bulk), and no prerequisites such as required permissions or queue-access constraints. An agent can infer intent but gets no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_issues_move_bulkBulk-move Tracker issuesA
Start an async bulk move of many Tracker issues to another queue; returns the operation.
Poll with bulk_get.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /bulkchange/_move`` (mass-move issues to another queue). | |
| notify | No | Notify the users in the fields of the object; omitted, the API notifies. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the non-destructive, non-idempotent, open-world profile. The description adds genuinely new behavioral context by disclosing that the call is asynchronous, returns an operation handle, and must be polled via bulk_get — information not present in the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded and load-bearing: the first defines the action and return, the second gives the polling requirement. No 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?
With no output schema, the description correctly compensates by explaining the returned operation and the bulk_get polling path. The nested request body is well covered by the schema; only the when-to-use routing against sibling tools is thin.
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 no enums, so the nested body fields (queue, issues, notify, values, initialStatus, moveAllFields) are already fully documented. The description adds no extra syntax or format meaning, so the 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?
States a specific verb (bulk move), resource (Tracker issues), and destination (another queue), and flags the operation as async. It distinguishes itself from the single-issue tracker_issues_move and from tracker_issues_update_bulk by naming the bulk-move scope, though it does not explicitly name those siblings.
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 only usage guidance is 'Poll with bulk_get', which usefully covers the async follow-up but does not say when to prefer this tool over tracker_issues_move or tracker_issues_transition_bulk. Implied usage rather than explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_issues_scroll_clearClear Tracker search scrollAIdempotent
Release the server resources of a scrolled issue search (harmless housekeeping).
body maps each X-Scroll-Id to its X-Scroll-Token from a scrolled
issues.search response. Returns an acknowledgement on success.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | A bare ``{scrollId: scrollToken}`` mapping — body for ``POST …/scroll/_clear``. Each entry releases the server resources of one scrolled ``issues.search`` response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (destructiveHint=false, idempotentHint=true) and readOnlyHint=false. The description reinforces this by calling it 'harmless housekeeping' and stating it 'Returns an acknowledgement on success,' adding behavioral context beyond the structured fields. It doesn't discuss failure modes (e.g. expired scroll ids), leaving a small gap.
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 tight sentences; the core purpose and the 'harmless housekeeping' qualifier are front-loaded, followed by the parameter mapping and return behavior. No filler, though the docstring markup (``...``) is slightly noisy.
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 single-parameter housekeeping tool with annotations present and no output schema, the description covers purpose, input provenance, and return behavior. It is essentially complete, with only failure/error handling left implicit.
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, but the description adds genuinely useful semantics: the body maps each `X-Scroll-Id` to its `X-Scroll-Token` taken from a scrolled `issues.search` response, explaining where the values originate. This exceeds what the schema text alone conveys.
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 and resource: 'Release the server resources of a scrolled issue search.' It clearly ties the tool to `issues.search` scrolls, distinguishing it from generic search/list siblings. It stops short of naming the specific sibling tool (e.g. tracker_issues_search) it complements, but the resource is 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?
Usage is implied by 'of a scrolled issue search' and the parenthetical '(harmless housekeeping)', which hints this is optional cleanup. However, there is no explicit when-to-use/when-not guidance, no mention of prerequisites (having an active scroll), and no named alternative or condition that selects this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_issues_searchSearch Tracker issuesARead-onlyIdempotent
Issues matching a query-language string or a filter, auto-paginated.
body.query is a TQL string, body.filter a field → value object. Returns at most
limit issues; exactly limit back means more may match — refine the search or raise
limit. E.g. {"body": {"query": "Queue: QUEUE Status: open"}} or
{"body": {"filter": {"queue": "QUEUE", "assignee": "ann"}}}.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /issues/_search`` and ``POST /issues/_count``. Give ``query`` (the query language) or ``filter`` (field name → value); a body with neither matches every issue the caller can see. ``extra="allow"`` passes the API's other keys (``keys``, ``queue``, ``order``) through. | |
| limit | No | Max issues to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| expand | No | Extra blocks to include in the reply. | |
| per_scroll | No | Issues per scroll page (1000 at most). | |
| scroll_type | No | Scroll through the results (no 10 000 cap). | |
| scroll_ttl_millis | No | How long the scroll stays open, in milliseconds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so the safety profile is covered. The description adds genuine behavioral context beyond that: the result set is auto-paginated, and a result count exactly equal to `limit` signals possible truncation requiring refinement or a higher limit. It does not discuss the scroll-related options, but with annotations lowering the bar this is solid added 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?
Two tight paragraphs, front-loaded with the core purpose, then the query/filter distinction, then the pagination caveat, with inline examples. Every sentence carries information; nothing is padding.
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 6-parameter search tool with full schema coverage and no output schema, the description covers the essential decision points (query vs filter, limit truncation behavior). The scroll-related parameters are only documented in the schema, which is acceptable given coverage, but a phrase on when scrolling is warranted would complete the picture.
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, but the description goes beyond the schema by supplying concrete TQL and filter examples ('Queue: QUEUE Status: open', {'queue': 'QUEUE', 'assignee': 'ann'}) that the schema's terse 'A query-language string' does not convey. The scroll/expand parameters are left to the schema alone, keeping it from a 5.
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?
States a specific verb (search) and resource (Tracker issues) and clarifies that matching is driven by either a TQL query string or a field→value filter. An agent understands what the tool does immediately, though it never names how it differs from siblings like tracker_issues_list or tracker_issues_count.
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?
Gives in-tool usage guidance (use query OR filter, and how to react when exactly `limit` results return), but offers no routing guidance versus tracker_issues_list, tracker_issues_count, or tracker_entities_search. Usage is implied rather than framed as a choice among alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_issues_suggestSuggest Tracker issues by titleARead-onlyIdempotent
Typeahead over visible issues — issues whose summary contains text.
A lightweight title match; for full TQL search use issues_search.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | Return each issue in full; needed for ``fields``, ``expand``, ``embed``. | |
| text | Yes | Text fragment to match in issue summaries. | |
| embed | No | Blocks of ``expand`` to return in more detail. | |
| queue | No | Key of the queue to search in. | |
| expand | No | Extra blocks to include in the reply. | |
| fields | No | Comma-separated fields to include in the reply. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety and idempotence are covered. The description adds genuine behavioral context beyond that: results are scoped to *visible* issues (a permission boundary) and matching is substring-on-summary rather than fuzzy or full-text. It omits any mention of result caps or truncation, which keeps it from a 5.
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 short sentences, zero filler, and the core mechanism is front-loaded before the alternative-tool routing. Every 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?
For a simple read-only suggestion tool with no output schema and full schema coverage, the description covers purpose, matching semantics, visibility scope, and the sibling alternative. The only real gap is the shape of the reply (e.g. how many suggestions, whether truncated), which the missing output schema leaves unspecified.
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 six parameters are already documented in the schema, including how ``full``, ``fields``, ``expand``, and ``embed`` interact. The description adds no syntax or format detail beyond what the schema provides, so the 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?
States a specific mechanism (typeahead) over a specific resource (visible issues) with the matching rule spelled out: summaries containing ``text``. It also names the sibling it is not (issues_search), so an agent can distinguish the two without opening either schema.
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?
Explicitly frames this as a lightweight title match and routes full querying to ``issues_search``. The when-to-use (quick autocomplete-style lookup) and the alternative are both stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_issues_transition_bulkBulk-transition Tracker issuesA
Start an async bulk status transition over many Tracker issues; returns the operation.
Poll with bulk_get.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /bulkchange/_transition`` (mass status transition). | |
| notify | No | Notify the users in the fields of the object; omitted, the API notifies. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=false, idempotentHint=false, destructiveHint=false, and openWorldHint=true. The description adds genuinely non-redundant behavior: the operation is asynchronous, returns an operation handle, and must be polled via bulk_get. It stops short of stating failure/partial-application semantics or permission requirements.
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 short sentences with zero waste; the core action and its async nature are front-loaded, and the polling instruction follows 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?
For an async bulk mutation with no output schema, the description covers what it does, that it returns an operation, and how to retrieve the result. It could say more about partial-failure behavior or required permissions, but the essential calling contract is present.
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 itself documents body, transition, issues, values, and notify. The description adds no meaning beyond that for any parameter, so the 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?
States a specific verb+resource+scope: 'Start an async bulk status transition over many Tracker issues.' The word 'status transition' distinguishes it from field-level siblings like tracker_issues_update_bulk and tracker_issues_move_bulk, but no sibling is named explicitly, so the differentiation requires inference.
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?
Provides follow-up guidance ('Poll with bulk_get') which tells the agent this is async. However it gives no explicit when-to-use versus alternatives such as tracker_transitions_execute (single issue) or the other bulk siblings, and no exclusions. Usage is implied by 'over many issues' but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_issues_updateUpdate Tracker issueAIdempotent
Update fields of a Tracker issue; only the keys present in body are changed.
Status is NOT changed here — use transitions_execute. Returns the updated issue.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``PATCH /issues/{key}`` (update an issue; only sent fields change). ``extra="allow"`` lets any custom field pass through unvalidated. Status is NOT changed here — use ``transitions_execute``. | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds real behavioral value beyond that: partial-update semantics (only sent fields change), the status exclusion, and the fact that the updated issue is returned.
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?
Three short sentences, no filler. The core behavior is front-loaded, the routing hint comes second, and the return note closes it out.
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?
Covers what an agent needs for a no-output-schema mutation tool: mutation scope, the sibling to use for status, and the returned value. It could note the custom-field pass-through (extra='allow') that the schema mentions, but nothing essential is 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?
Schema coverage is 100%, so per-field meanings (tags operators, type/priority key objects, YFM markdown description) are all handled by the schema, setting the baseline at 3. The description adds the partial-update contract for the body parameter — only supplied keys mutate — which is a genuine semantic beyond the schema's field list.
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?
States a specific verb (update) and resource (Tracker issue) plus the precise scope: only keys present in body are changed. It explicitly separates itself from transitions_execute for status changes and, in a namespace crowded with update_bulk/move variants, makes clear this is the single-issue field updater.
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?
Gives an explicit when-not: status is not changed here, use transitions_execute. That routes the most likely confusion correctly, but there is no positive guidance on when to prefer this over tracker_issues_update_bulk or tracker_entities_update for the same operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_issues_update_bulkBulk-update Tracker issuesA
Start an async bulk field update over many Tracker issues; returns the operation.
Poll the returned operation id with bulk_get and inspect failures with
bulk_issues_list.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /bulkchange/_update`` (mass-edit issues). | |
| notify | No | Notify the users in the fields of the object; omitted, the API notifies. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=true. The description adds value the annotations cannot: the call is asynchronous, it returns an operation handle rather than a completed result, and success/failure must be checked via two named tools. It does not mention retry behaviour or result limits, but for a mutation tool the async disclosure is the most important new fact.
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, with the core operation and its async nature front-loaded before the follow-up instructions. Every clause carries information the agent needs.
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 output schema, the description correctly explains what comes back (an operation) and how to consume it via bulk_get and bulk_issues_list, which closes the main gap. Remaining omissions are minor: permission prerequisites and any cap on the number of issues per operation are not mentioned.
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 nested request body (issues, values, notify) is already documented in the schema, so the baseline is 3. The description adds nothing about how to shape 'values' or the query-string form of 'issues' beyond what the schema says.
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?
States a precise verb (bulk field update), the resource (Tracker issues), the scope ('many' issues), and the interaction model ('async ... returns the operation'). This clearly separates it from the single-issue tracker_issues_update and from the differently-aimed tracker_issues_move_bulk / tracker_issues_transition_bulk.
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?
Gives the agent a concrete follow-up workflow by naming tracker_bulk_get for polling and tracker_bulk_issues_list for failure inspection, and the 'many issues' phrasing implies the bulk use case. It stops short of an explicit when-not clause (e.g. use tracker_issues_update for a single issue), so it is strong context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_issuetypes_createCreate Tracker issue typeA
Create an org-global issue type (e.g. a new kind of task).
CAUTION: issue types are organisation-wide and have no delete endpoint — creation leaves
permanent residue. key is the latin identifier; name holds the ru/en display names.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /issuetypes/`` (create an issue type). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing that issue types are organisation-wide, that there is no delete endpoint, and that creation leaves permanent residue — critical irreversibility context. This is compatible with destructiveHint=false (nothing existing is destroyed) and materially improves on the structured hints.
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?
Three short, front-loaded segments: purpose, then the caution, then a compact parameter gloss. No filler and the most consequential warning is prominently placed.
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 single-parameter create tool with annotations covering the safety profile and no output schema, the description supplies purpose, irreversibility, and parameter meaning. Nothing an agent needs to call it correctly is 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?
Schema coverage is already 100%, and the description still adds value by explaining that 'key' is the latin identifier and 'name' carries the ru/en display names, clarifying the role of the nested localized object. Baseline 3 is exceeded, though no additional format constraints are given.
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?
States a specific verb+resource ('Create an org-global issue type') and clarifies with an example ('a new kind of task'). The 'org-global' scope and the issue-type framing cleanly separate it from sibling issue-level creators like tracker_issues_create.
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 org-wide scope and permanence caution implicitly tell the agent this is a heavyweight, rarely-invoked operation, but there is no explicit when-to-use guidance or named alternative (e.g. tracker_issuetypes_update for modification). Usage is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_issuetypes_listList Tracker issue typesARead-onlyIdempotent
All available issue types (e.g. task, bug, epic).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds only example values and does not disclose scope or result shape beyond what annotations imply.
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 short sentence that is front-loaded and free of padding. 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 no-param list tool with no output schema and annotations covering the safety profile, this is nearly complete. The only real gap is not stating the scope of 'all' (account-wide vs queue/project-scoped), which an agent might want to know.
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 takes zero parameters, so the baseline is 4. There is nothing for the description to disambiguate, and it correctly implies an unfiltered enumeration.
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?
States a clear verb+resource ('available issue types') and gives concrete examples (task, bug, epic), so the agent knows exactly what comes back. It does not explicitly differentiate from siblings like tracker_issuetypes_create/update, though those are unambiguous counterparts.
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 listing intent is implied by the name and description, but there is no explicit when-to-use guidance, no mention of scope (global vs project/queue), and no routing to alternatives. Adequate for a trivial list tool but leaves usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_issuetypes_updateEdit Tracker issue typeAIdempotent
Edit an org-global issue type; only the fields set in body are changed.
issue_type_id is the numeric id (not the key). Pass version to guard against
concurrent edits (optimistic locking).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``PATCH /issuetypes/{id}?version=`` (edit an issue type). Only the fields that are set are sent, so omitted fields stay unchanged. | |
| version | No | Current version of the object (optimistic lock), from its get/list tool. | |
| issue_type_id | Yes | Issue type id or key, from ``issuetypes_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the partial-update semantics and the purpose of version (guarding against concurrent edits), but the schema's body description already states that omitted fields stay unchanged, and nothing is said about what happens on a version conflict or what permissions the edit requires.
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?
Front-loaded with the action and scope, followed by two short, purposeful notes on id format and version locking. Only the partial-update clause is mildly redundant with the schema's body description.
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 3-parameter mutation tool with a nested body object, no output schema, and full schema coverage, the description covers the essentials: partial-update behavior, the id-vs-key distinction, and the concurrency guard. It could still say more about authorization requirements and conflict behavior, but nothing needed to invoke the tool correctly is 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?
Schema coverage is 100%, so the baseline is 3, but the description genuinely adds meaning: it clarifies that issue_type_id is the numeric id rather than the key and explains why version should be passed. Note the tension with the schema text, which says "Issue type id or key" — the description is stricter, which is useful but inconsistent with the field 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?
States a specific verb and resource ("Edit an org-global issue type") and pins the scope to org-global types, which separates it from the tracker_issuetypes_create/list siblings by verb. It never names a sibling tool or contrasts with the other *_update tools (fields, statuses, resolutions), so it stops short of 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?
Usage is only implied: PATCH-style partial edits and the optimistic-locking note about version give an agent some sense of when this tool fits. There is no explicit when-to-use or when-not-to-use guidance, and no routing against alternatives such as tracker_issuetypes_create or the bulk update tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_links_createLink Tracker issuesB
Link a Tracker issue to another issue; returns the created link.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /issues/{key}/links`` (link to another issue). | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose the write/non-idempotent/non-destructive/open-world profile, and the description adds only that a created link is returned. It does not explain permission requirements, whether linking is reversible, or how duplicate links are handled — modest added value on top of structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the action first and the return value last; zero filler or 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?
There is no output schema, and the description at least notes a link object is returned, and the nested body is fully documented by the schema. It is minimally adequate for a simple create-link operation, but leaves sibling disambiguation and permission preconditions unaddressed.
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%, including the nested body with the relationship field pointing at linktypes_list, so the schema carries the parameter meaning. The description adds nothing about issue_key format or relationship semantics beyond what the schema already provides, matching 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?
States a specific verb and resource ("Link a Tracker issue to another issue") plus the return value, so the action is unambiguous. However, it does not differentiate itself from the near-identical sibling tracker_entities_links_create, nor from tracker_links_list/delete/import, so an agent cannot fully disambiguate on the description alone.
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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. The schema hints that relationship values come from linktypes_list, but the description never tells the agent to resolve a link type first, nor when to prefer this tool over tracker_entities_links_create.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_links_deleteDelete Tracker issue linkADestructive
Remove a link between two Tracker issues (irreversible).
Get link_id from links_list. Returns an acknowledgement on success.
| Name | Required | Description | Default |
|---|---|---|---|
| link_id | Yes | Link id, from ``links_list``. | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the '(irreversible)' note largely restates structured data. The only genuinely new behavioral fact is the return contract ('Returns an acknowledgement on success'), which matters because there is no output schema. No mention of required permissions or side effects on linked issues.
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 short sentences with no filler. The destructive/irreversible nature is front-loaded before the parameter-sourcing and return notes, which is exactly the right ordering for a delete 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 two-parameter delete operation whose safety profile is fully covered by annotations, the description supplies the essentials: what it removes, that it cannot be undone, where the id comes from, and what a successful call returns. Only permission requirements and the existence of a similarly named sibling are unaddressed.
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 both parameters are documented there, including that link_id comes from links_list. The description's 'Get link_id from links_list' therefore duplicates the schema rather than adding syntax, format, or edge-case meaning. 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?
States a specific verb and resource ('Remove a link between two Tracker issues'), which is instantly distinguishable from sibling reads like tracker_links_list or writes like tracker_links_create. It does not, however, distinguish itself from the near-named sibling tracker_entities_links_delete, leaving an agent to guess between two plausible deletion 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 tells the agent where the required link_id comes from ('Get link_id from links_list'), which is a useful routing hint. It offers no when-to-use or when-not guidance relative to alternatives such as tracker_links_list, tracker_links_create, or tracker_entities_links_delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_links_importImport Tracker issue linkA
Import an issue link preserving its original creation metadata (admin-only).
Returns the imported link.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed body for ``POST /issues/{key}/links/_import`` — import one issue link with history. | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (not read-only, not destructive, not idempotent, open world), and the description adds two genuinely behavioral facts beyond them: the operation is admin-only and the return value is the imported link. It would be a 5 with more on what happens on duplicate links or invalid metadata.
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 short sentences, zero filler, with the purpose clause front-loaded and the return behavior stated second. 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 2-parameter import tool with a fully described schema and no output schema, the description covers the admin restriction, the metadata-preservation intent, and the return shape. Only edge-case behavior (duplicates, validation failures) is unstated.
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 nested body object is thoroughly documented (relationship, issue, createdAt, createdBy, updatedAt/By pairing), so the schema carries the load. The description adds no parameter-level detail beyond that, matching 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?
Specific verb (Import) plus resource (issue link) plus a distinguishing purpose clause: preserving original creation metadata. That implicitly separates it from tracker_links_create/tracker_entities_links_create, though no sibling is named so it lands just below 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 parenthetical "(admin-only)" states a precondition, and "preserving its original creation metadata" hints at the migration/backfill use case, but there is no explicit when-to-use guidance and no named alternative such as tracker_links_create for ordinary linking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_links_listList Tracker issue linksBRead-onlyIdempotent
All links on a Tracker issue (linked issues, type, direction).
| Name | Required | Description | Default |
|---|---|---|---|
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds the returned fields (linked issues, type, direction), but omits pagination, result limits, or auth requirements.
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-loaded with the resource. No wasted words, though it is a fragment rather than a full sentence and could include an explicit verb.
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 read tool with annotations covering safety and a fully documented schema, the description gives enough to call it and states return content. It remains incomplete because it does not mention the filtered sibling or pagination behavior.
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 sole parameter issue_key is fully documented in the schema. The description implies the issue key requirement but adds no syntax or format 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?
States a specific resource and scope: it returns links on a Tracker issue, including linked issues, type, and direction. However, it omits an explicit list verb and does not distinguish this tool from siblings such as tracker_links_list_filtered or tracker_entities_links_list.
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 when-to-use guidance and no mention of alternatives. The agent must infer that this is the unfiltered list operation, which is especially risky given the sibling tracker_links_list_filtered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_links_list_filteredSearch Tracker issue linksARead-onlyIdempotent
Links of a Tracker issue filtered by type, paged and capped (a read done via POST).
Prefer this over links_list for issues with many links or when only some link types
or fields matter; it carries each link's author, dates, assignee and status.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max links to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| fields | No | Fields to include in each link; all when omitted. | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. | |
| link_types | No | Keep only links with these relationships, e.g. ``relates`` or ``is subtask for`` (the phrases of ``links_create``, not linktypes ids). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent and open-world behavior, but the description adds genuinely non-obvious context: the operation is a read performed via POST, results are paged and capped by a configured maximum, and each returned link carries author, dates, assignee and status. It does not contradict any 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 tight sentences: scope first, then the sibling-routing rule. No filler, nothing repeated from name or schema.
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 output schema, the description usefully names the per-link data returned, and it explains paging/capping. A nod to default result shape or error conditions would close the remaining gap, but an agent has enough 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%, so every parameter is already documented in the schema (including that link_types uses relationship phrases rather than ids). The description only gestures at type filtering and field selection, adding no material meaning beyond the schema; 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?
States the resource (links of a Tracker issue) and its scope precisely: filtered by link type, paged, and capped, and notes it is a read issued via POST. It explicitly contrasts itself with the sibling tracker_links_list, though the action verb is implied rather than named.
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?
Names the alternative (``links_list``) and the exact conditions that select this tool over it: issues with many links, or when only some link types or fields matter. The inverse condition is left implicit but the routing decision is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_linktypes_listList Tracker link typesARead-onlyIdempotent
All available link types (e.g. relates, depends on, blocks).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds value by enumerating example return values, but says nothing about scoping (global vs per-project), ordering, or pagination for what is an open-world list.
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 filler; the parenthetical examples earn their place by making the return set concrete. Nothing could be removed without losing meaning.
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 and no output schema, the description carries the return-value burden and does so via examples. It stops short of stating whether the list is global or scoped and whether it is paginated, which is the remaining minor gap for an open-world list 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 takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. No parameter information is missing or misleading.
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 names the specific resource (link types) and gives concrete examples (relates, depends on, blocks), so an agent knows exactly what set is returned. It lacks an explicit verb and never distinguishes itself from near-neighbours like tracker_links_list or tracker_entities_links_list, which is the only thing keeping it from 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?
There is no when-to-use guidance, no prerequisites, and no mention of the sibling tools (tracker_links_list, tracker_entities_links_create) that consume these type values. The use case — fetching valid link type values before creating a link — is only inferable from the examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_localfields_createCreate Tracker local fieldA
Create a custom field scoped to one queue (a local field).
Required fields: id (latin key), name (ru/en display names), category (a category
id from fields_list) and type (value type, e.g. ru.yandex.startrek.core.fields. StringFieldType). There is no delete endpoint — the field lives until its queue is deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for creating an issue field, global or local to a queue. | |
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), so the bar is lower. The description still adds genuinely useful non-annotation behavior: there is no delete endpoint and the field persists until its queue is deleted, which is important lifecycle information for a create-only resource.
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 compact sentences: the operation and its scope are front-loaded, followed by required-field details and the lifecycle caveat. Every sentence carries information an agent needs; nothing is padded.
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 create-only tool with no output schema, the description covers scope, required fields, the cross-tool dependency for `category`, and the irreversible lifecycle. It does not mention permission requirements or what the created resource returns, which are the only notable remaining 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 goes beyond the schema by tying `category` to a concrete source ('a category id from fields_list') and clarifying the format expectations for `id` (latin key) and `type` (full field-type identifier), which are cross-tool and format hints the schema does not provide.
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?
States a specific verb and resource ('Create a custom field') and immediately narrows the scope with 'scoped to one queue (a local field)', which separates it from the sibling tracker_fields_create for global fields. An agent can distinguish it from tracker_localfields_get/update/list without opening any schema.
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 'scoped to one queue', which tells the agent this is the queue-local variant, but there is no explicit when-to-use/when-not guidance or a named alternative such as tracker_fields_create. The required-fields list is helpful context but is not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_localfields_getGet Tracker local fieldARead-onlyIdempotent
One local field's full definition (type, options, category) by queue and field key.
Returns the value schema, allowed-values provider and category of the field. Use
localfields_list first to discover the field_key values available in a queue.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | Queue key (case-sensitive, e.g. ORG) or numeric queue id. | |
| field_key | Yes | Local field key, as returned by localfields_list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds useful return-content context (value schema, allowed-values provider, category), which matters because there is no output schema, but it says nothing about permissions, error behavior, or queue-existence requirements.
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 short sentences, front-loaded with the core purpose and followed by the discovery prerequisite. The second sentence partially repeats the first (category appears twice; 'type/options' rephrased as 'value schema/allowed-values provider'), which is mild redundancy rather than waste.
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 two-parameter read tool with 100% schema coverage and full safety annotations, the description covers purpose, the discovery prerequisite, and the shape of the returned definition, compensating for the absent output schema. Edge cases such as nonexistent queues or missing field keys are not addressed, keeping it just short of 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 both parameters are already fully documented in the schema (including the 'key or numeric id' nuance for queue_id). The description only restates 'by queue and field key' and reiterates that field_key comes from localfields_list, adding little beyond 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?
The description gives a specific verb and resource ('One local field's full definition') and enumerates the returned facets (type, options, category), which implicitly sets it apart from localfields_list. It does not, however, distinguish local fields from the global-field sibling tracker_fields_get, so the differentiation is only partial.
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?
It states an explicit prerequisite workflow: call ``localfields_list`` first to discover the ``field_key`` values in a queue. That is concrete when-to-use guidance, though it gives no conditions for when NOT to use this tool versus another lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_localfields_listList Tracker local fieldsARead-onlyIdempotent
Custom fields scoped to one queue (its local fields), as a flat list.
Each item's key is the field key you pass to localfields_get; field_schema
describes the value type. Local fields differ from global fields (fields_list) in that
they exist only inside the given queue. Pass a key from queues_list as queue_id.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | Queue key (case-sensitive, e.g. ORG) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds that the result is a flat list and that each item carries a key and field_schema, which is useful shape context but not a rich behavioral disclosure (no pagination or rate-limit info).
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?
Three short sentences, front-loaded with the scope constraint, and every clause carries information (scope, return shape, sibling contrast, param origin). No 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 single-param read-only list with annotations covering safety, this is nearly complete: it explains what local fields are, how they differ from globals, what the output items contain, and where queue_id comes from. Minor gap is that there is no output schema and the description only lightly describes the returned 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?
Schema description coverage is 100% and the queue_id parameter is fully documented in the schema (queue key or numeric id, case-sensitive). The description reinforces the source of queue_id by naming queues_list, which adds marginal routing 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?
States a specific verb+resource ('local fields' scoped to a queue) and explicitly distinguishes from the global sibling tracker_fields_list. The contrast 'Local fields differ from global fields' makes the distinction unmistakable.
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?
Explains the scope (one queue) and points to localfields_get as the consumer of the returned key, plus names fields_list as the global alternative. No explicit when-not-to-use guidance, but the context is clear enough to select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_localfields_updateEdit Tracker local fieldAIdempotent
Edit a queue-local field; only the fields set in body are changed.
Get field_key from localfields_list. Returns the updated field definition.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``PATCH /queues/{id}/localFields/{key}`` (edit a local field). This endpoint has no ``?version=`` optimistic lock; only the fields that are set are sent. | |
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. | |
| field_key | Yes | Key of the queue-local field, from ``localfields_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), lowering the bar. The description still adds real value by disclosing PATCH semantics ("only the fields set in body are changed") and that it returns the updated field definition, which is not conveyed by annotations alone.
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?
Three short sentences, front-loaded with the mutation and its partial-update semantics, followed by the sourcing hint and return value. No sentence is redundant.
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 3-parameter, deeply nested-body mutation with no output schema, the description covers the key unknowns: partial update behavior, where field_key comes from, and that the updated definition is returned. It could note permission requirements or whether edits are reversible, but it is substantially 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% and the nested body fields (name, order, hidden, visible, category, readonly, description, options_provider) are fully documented in the schema. The description adds only the origin of field_key, which the schema itself already states, 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?
States a specific verb+resource ("Edit a queue-local field") and the scope qualifier "queue-local" implicitly distinguishes it from the global tracker_fields_update sibling. It does not name an alternative tool explicitly, so it falls short of the 5-level sibling differentiation bar.
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?
Provides the practical prerequisite for invocation ("Get field_key from localfields_list") and the partial-update rule for body, which is useful context. However, there are no when-not-this-tool conditions and no named alternative (e.g. localfields_create vs. fields_update) for the agent to weigh.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_macros_createCreate Tracker queue macroB
Create a macro on a queue (a canned comment plus field updates applied on demand).
name is required; optional fields are body (the comment template) and
fieldChanges rows. Returns the new macro.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``macros.create`` (``POST /queues/{id}/macros``). ``issue_update`` here is a field→value *object* (not the list the read side returns), e.g. ``{"tags": {"add": "Новый тег"}, "resolution": None}``. | |
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true, idempotentHint=false), lowering the burden. The description adds the semantics of what is being created and notes it 'Returns the new macro', but discloses no permission requirements, idempotency behavior, or failure modes beyond the annotation hints.
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 short sentences, front-loaded with the core purpose followed by parameter notes and the return statement. No filler; the sizing is appropriate for a two-parameter create 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 nested-body create tool with no output schema, the description covers the essence and notes the return value, and annotations cover the safety profile. However the naming mismatch (``fieldChanges`` vs ``issue_update``) and the unmentioned required ``queue_id`` leave gaps an agent must resolve from the schema.
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 does mention ``name`` as required and characterizes ``body`` as the comment template, but it never mentions the required ``queue_id`` and refers to ``fieldChanges`` rows, a name that does not appear in the schema (which uses ``issue_update``), so it adds limited and slightly inconsistent value over 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?
States a specific verb and resource ('Create a macro on a queue') and even defines what a macro is ('a canned comment plus field updates applied on demand'), which is more than the title alone. It does not explicitly name the sibling operations (tracker_macros_update/delete) to distinguish itself, but the create-vs-read/update/delete distinction is inferable from the name.
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 when-to-use, when-not-to-use, or alternative tool is named. Usage is only implied by the definition of a macro and the fact that this is a create operation among read/update/delete siblings. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_macros_deleteDelete Tracker queue macroADestructive
Permanently delete a macro from a queue (irreversible).
Returns an acknowledgement on success.
| Name | Required | Description | Default |
|---|---|---|---|
| macro_id | Yes | Numeric identifier of the macro, from ``macros_list``. | |
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description nonetheless adds value by reinforcing 'irreversible' and by disclosing the return contract ('acknowledgement on success') in the absence of an 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?
Two short sentences, zero filler, with the irreversibility warning front-loaded before the return-behavior note. Every 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?
For a two-parameter, fully documented delete tool with complete destructive/idempotency annotations, the description supplies everything needed: the action, its irreversibility, and the success signal. Only an explicit alternative-tool pointer is 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?
Schema description coverage is 100%: both macro_id (numeric id sourced from macros_list) and queue_id (case-sensitive key or numeric id) are fully documented in the schema. The description adds no parameter-level detail, so the 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?
States a specific verb and resource ('delete a macro from a queue') with the scope qualifier 'permanently' and 'irreversible'. An agent can distinguish it from tracker_macros_list, tracker_macros_get, tracker_macros_create and tracker_macros_update without opening any schema.
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 only implied by the destructive verb; there is no explicit when-to-use or when-not-to-use statement, nor a pointer to alternatives such as tracker_macros_update when the intent is modification rather than removal. For a delete operation the intent is self-evident, so 3 is the fair midpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_macros_getGet Tracker queue macroARead-onlyIdempotent
One queue macro by id — its comment body and the field updates it applies.
Sibling macros_list enumerates every macro in the queue; pass one of its id values
here.
| Name | Required | Description | Default |
|---|---|---|---|
| macro_id | Yes | Numeric identifier of the macro. | |
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered structurally. The description adds a useful content hint (comment body plus field updates) but says nothing about failure behavior for an unknown macro_id or whether the queue_id is validated — modest added value on top of 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 short sentences, zero filler, with the core purpose front-loaded and the routing guidance placed second where it belongs. Every 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?
With no output schema, the description usefully previews the returned payload (comment body, field updates), and both required parameters are fully covered. It falls short only on error/not-found behavior for an invalid macro_id, which is a minor gap for a simple read.
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 queue_id and macro_id are already documented in the schema, including the case-sensitive queue key format. The description adds only 'by id' and the implicit provenance of the id from macros_list, 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?
States a specific verb+resource+scope ('One queue macro by id') and immediately discloses what the resource contains ('its comment body and the field updates it applies'), which is far beyond a tautology. It also names the sibling it must not be confused with, so the agent can separate it from tracker_macros_list without opening either schema.
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?
Explicitly routes the agent: use macros_list to enumerate, and pass one of its id values here. That is a clear when-to-use plus a named alternative, though it does not spell out when-not to use this tool (e.g., versus macros_update/macros_delete for mutation).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_macros_listList Tracker queue macrosARead-onlyIdempotent
Every macro configured on a queue — each a canned comment plus field updates.
Each item's id is what you pass to macros_get for the full body and issueUpdate
rows.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, covering the safety profile. The description adds genuine context beyond that: it describes what each returned item represents (canned comment plus field updates) and that ids feed tracker_macros_get, which is the only place the return shape is conveyed since no output schema 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 tight sentences with zero waste; the resource is front-loaded and the second sentence carries actionable routing information rather than 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 read tool, the description covers what is listed, what each item contains, and how ids connect to tracker_macros_get. With annotations carrying the safety profile and no output schema, nothing an agent needs to call it correctly is 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?
Schema description coverage is 100% and there is a single parameter (queue_id) fully documented in the schema as a case-sensitive key or numeric id. The description adds nothing about the parameter, so the 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 names the exact resource (every macro configured on a queue) and clarifies what a macro is (a canned comment plus field updates), so an agent understands precisely what is being enumerated. It also distinguishes itself from the sibling tracker_macros_get by explaining the id linkage, making the purpose unambiguous against a large sibling set.
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?
It routes the agent to the correct next step: use this list to obtain ids, then pass an id to tracker_macros_get for the full body and issueUpdate rows. That is a clear alternative-and-condition hint, though it states no explicit when-not-to-use exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_macros_updateEdit Tracker queue macroAIdempotent
Edit a queue macro; only the fields set in body are changed.
Get macro_id from macros_list. Returns the updated macro.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``macros.edit`` (``PATCH /queues/{id}/macros/{macro_id}``). Every field is optional; only the fields you set are sent. | |
| macro_id | Yes | Numeric identifier of the macro, from ``macros_list``. | |
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, and the description adds the key partial-update contract that only fields set in body are changed, so unspecified macro attributes are preserved. It also confirms the return value is the updated macro. It does not mention permission requirements for editing a queue macro.
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?
Three short clauses with zero filler, and the core edit semantics are front-loaded before the id-sourcing hint. Appropriately sized for a simple PATCH 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?
With full schema coverage, no output schema needed, and annotations covering the safety profile, the description supplies what an agent needs to invoke it correctly. The only minor gap is the absence of permission or scope requirements for editing a macro in a given queue.
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%, including the nested body object fields (body, name, issue_update) and the case-sensitive queue_id semantics, so the schema carries the parameter burden. The description's only parameter-related statement duplicates the schema's own PATCH note, adding no syntax or format detail beyond 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?
States a specific verb (Edit) and specific resource (queue macro), which cleanly separates it from the sibling macros_list/get/create/delete tools. It stops short of explicitly naming those siblings as alternatives, but the resource scope is 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 gives one concrete routing hint, telling the agent to obtain macro_id from macros_list, which is genuinely useful prerequisite guidance. It offers no when-not-to-use guidance or distinction from macros_create/delete beyond the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_me_getGet current Tracker userARead-onlyIdempotent
The authenticated Yandex Tracker user (a safe auth probe).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered structurally. The description adds the 'auth probe' framing, which usefully signals this is a cheap credential check with no side effects, but it says nothing about what happens on unauthenticated calls or what the response contains.
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 clause with no padding, and the identifying information comes first. It is terse to the point of being a fragment, but every word carries weight for a zero-argument 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?
With no output schema the description could say what user fields come back, which is the one real gap. For a trivial, parameterless identity call whose annotations carry the safety semantics, the description plus the 'auth probe' note is sufficient for correct 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?
The tool takes zero parameters and the schema is fully closed (additionalProperties: false), so there is nothing for the description to clarify. Baseline 4 for a no-parameter tool.
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 names a specific resource ('the authenticated Yandex Tracker user'), which an agent can distinguish from tracker_users_get (a user by identifier), forms_me_get and wiki_me_get (the same 'me' concept in other products). It is a noun phrase rather than an explicit verb, but the title supplies 'Get' and the resource is 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 parenthetical '(a safe auth probe)' implies a use case — validating credentials — but there is no explicit statement of when to prefer this over tracker_users_get or the other *_me_get siblings, and no when-not guidance. Usage 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.
tracker_priorities_createCreate Tracker priorityA
Create an org-global issue priority.
CAUTION: priorities are organisation-wide and have no delete endpoint — creation leaves
permanent residue. key is the latin identifier; name holds the ru/en display names.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /priorities/`` (create a priority). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false), but adding 'no delete endpoint' and 'creation leaves permanent residue' discloses an irreversibility risk the annotations do not convey — a genuinely valuable addition for a write tool. It also clarifies the key/name split beyond the schema text.
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 short sentences with the caution front-loaded and the parameter gloss following. No filler, and the most decision-relevant fact (permanent, no delete) is placed before the field notes.
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 nested-body create tool with no output schema, the description covers scope, irreversibility, and the required field semantics. It could mention the auth/permission requirement for org-wide settings, but nothing needed to invoke it correctly is 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?
Schema coverage is 100%, so baseline is 3, but the description adds interpretive meaning: 'key is the latin identifier' and 'name holds the ru/en display names', which orients the agent on the required nested body fields. The optional 'order' and 'description' fields are left to 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?
States a specific verb ('Create') and resource ('org-global issue priority'), which cleanly separates it from the sibling read/mutate tools tracker_priorities_list and tracker_priorities_update. The scope qualifier 'org-global' tells the agent this is not scoped to a project or 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 CAUTION block gives clear context for when to hesitate: org-wide scope plus no delete endpoint, so creation is effectively permanent. It stops short of naming an alternative workflow (e.g. prefer update on an existing priority, or check tracker_priorities_list first), so it is strong context rather than explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_priorities_listList Tracker prioritiesBRead-onlyIdempotent
All available issue priorities in the organisation.
| Name | Required | Description | Default |
|---|---|---|---|
| localized | No | ``false`` returns the names in every language. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=true, so the safety profile is covered. The description adds only the organisational scope; it does not describe return format, pagination, or authorization requirements, which limits its added value beyond 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, front-loaded sentence with no wasted words. It is appropriately sized for a simple list 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 low-complexity list tool with rich annotations, complete schema coverage, and no output schema, the description is nearly complete. It states what is returned and the scope, though it could briefly note that the 'localized' parameter controls language behavior in the response.
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 single optional 'localized' parameter is fully documented in the schema. The description adds no parameter meaning beyond what the schema provides, so the 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 names a specific resource (issue priorities) and scope (the organisation), and the title supplies the verb 'List'. It does not explicitly distinguish this read operation from the sibling write operations tracker_priorities_create and tracker_priorities_update, but the resource is clear.
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 no when-to-use guidance, no prerequisites, and no alternatives. It implies that calling it retrieves priorities, but it does not say when an agent should choose it over tracker_priorities_create, tracker_priorities_update, or other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_priorities_updateEdit Tracker priorityAIdempotent
Edit an issue priority; only the fields set in body are changed.
priority_id is the numeric id (not the key). Pass version to guard against
concurrent edits (optimistic locking).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``PATCH /priorities/{id}?version=`` (edit a priority). Only the fields that are set are sent, so omitted fields stay unchanged. | |
| version | No | Current version of the object (optimistic lock), from its get/list tool. | |
| priority_id | Yes | Priority id or key, from ``priorities_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false, openWorldHint=true). The description goes beyond them by disclosing partial-update semantics ("only the fields set in body are changed") and the optimistic-locking contract via version, which is exactly the kind of behavioral context annotations cannot express. It stops short of saying what the response contains or what happens on a version conflict.
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 short sentences, front-loaded with the core action and the partial-update rule, then the two parameter caveats. Nothing is padded and every clause carries 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 3-parameter partial-update tool with full schema coverage and no output schema, the description covers the essentials: what changes, the id requirement, and the concurrency guard. Missing only edge behavior (version-conflict result, whether any fields are immutable), which is minor at 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 100% (every property and the nested body object are documented), so the baseline is 3. The description does add useful meaning for priority_id and version, but its claim that priority_id is "the numeric id (not the key)" directly conflicts with the schema's own text "Priority id or key, from priorities_list", which could cause a caller to reject valid key inputs.
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?
States a specific verb and resource: "Edit an issue priority", and clarifies the scope of the edit (only fields set in body change). It does not name or distinguish itself from the obvious siblings tracker_priorities_create / tracker_priorities_list, so an agent must infer it is the update half of the priority CRUD set. The phrase "issue priority" is also slightly loose for what is really a priority-dictionary entity.
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 when-to-use guidance and no named alternatives. The only routing-adjacent information is implicit (you edit an existing priority rather than creating one). An agent gets no statement of prerequisites, permission requirements, or when to prefer create/list over update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_projects_createCreate Tracker projectB
Create a project (legacy Projects API).
name and queues (a queue key) are required, status is DRAFT, IN_PROGRESS,
LAUNCHED or POSTPONED. Returns the project.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``projects.create`` (``POST /projects``). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds that the call returns the created project and lists the status enum, but says nothing about duplicate-name behavior, required auth scopes, or rate limits — modest added value against annotations that already carry the write semantics.
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?
Front-loaded with the verb and resource, followed by the legacy API caveat and required/optional details in two compact sentences. Efficient, though the status enum restatement is redundant given the schema.
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 create tool with no output schema, it does mention 'Returns the project', which partially covers return behavior, and the nested body is fully documented by the schema. It omits failure modes, permission requirements, and when this legacy endpoint should be chosen, leaving real gaps for an 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%, so every parameter is already documented in the schema, establishing a baseline of 3. The description restates that name and queues are required and clarifies queues is 'a queue key', which is helpful but largely duplicative of 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?
Specific verb+resource ('Create a project') and it adds a useful disambiguator — the legacy Projects API qualifier — distinguishing it from the entity-based creation paths. It does not, however, explicitly distinguish itself from siblings like tracker_projects_update or tracker_entities_create.
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 when-to-use or when-not-to-use guidance. It never says when the legacy Projects API is preferable to tracker_entities_create, nor what prerequisites (queue existence, permissions) must hold before calling. Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_projects_deleteDelete Tracker projectBDestructive
Delete a project (irreversible). Returns an acknowledgement.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Numeric id of the project, from ``projects_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description reinforces this with '(irreversible)' and adds one genuinely new fact — that the call returns an acknowledgement — which matters since there is no output schema. It stops short of explaining side effects on dependent data.
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 short sentences, front-loaded with the destructive action and its irreversibility. No filler, no restatement of the parameter.
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 single-parameter destructive operation with full annotation coverage and no output schema, the description supplies the essentials: what is deleted, that it cannot be undone, and that the response is an acknowledgement. Missing only secondary detail like permission requirements or effects on related issues.
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%: the single parameter project_id is documented as the numeric id sourced from projects_list. The description adds nothing beyond that, so the baseline 3 for full schema coverage 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?
States a specific verb and resource ('Delete a project'), which is unambiguous and matches the tool name. It does not explicitly differentiate itself from other delete siblings (e.g. tracker_boards_delete, tracker_sprints_delete), but the resource noun makes the target clear enough for an agent.
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?
There is no guidance on when to use this tool versus alternatives, no prerequisites (e.g. permissions, ownership), and no warning about cascading effects on child entities. The only usage signal is the parenthetical '(irreversible)', which is a caution, not selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_projects_getGet Tracker projectARead-onlyIdempotent
One project: name, lead, stage, dates and version (needed to edit it).
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Extra blocks to include, e.g. ``queues``. | |
| project_id | Yes | Numeric id of the project, from ``projects_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds one genuinely useful behavioral note – that the returned ``version`` is required to edit the project – but says nothing about error behavior for a missing id or access requirements.
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 zero filler; the key value (the ``version`` field needed for edits) is included rather than padded. It reads as a terse fragment rather than a full sentence, which slightly limits readability.
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 output schema, the description does the work of listing the returned fields, which is appropriate for a simple single-record get. Remaining gaps (error cases, what ``expand`` adds) are minor for a read-only two-parameter 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% (both project_id and expand are documented in the schema), so the baseline is 3. The description adds no syntax or format detail for either parameter and does not mention what ``expand`` (e.g. ``queues``) actually does.
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 specifies the resource (a single project) and enumerates the returned fields (name, lead, stage, dates, version), which implicitly distinguishes it from the sibling tracker_projects_list. It never states the verb 'get' explicitly, but 'One project' makes the singular-retrieval intent clear.
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 only implied: 'One project' signals fetching a single record by id, and the parenthetical '(needed to edit it)' hints at a fetch-before-update workflow. There is no explicit when-to-use, no prerequisite for permissions, and no mention of the tracker_projects_list alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_projects_listList Tracker projectsARead-onlyIdempotent
Every project of the organization (the legacy Projects API).
entities_search is the newer way to find projects and portfolios.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Extra blocks to include, e.g. ``queues``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, open-world), so the bar is lower. The description adds genuinely useful context not in the annotations: that this is the legacy Projects API superseded by entities_search, which affects whether the agent should call it at all. It stops short of describing result volume or pagination behavior for an org-wide listing.
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 short sentences, scope stated first and the routing hint second; nothing is wasted and the key fact (this is the legacy endpoint) is 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?
There is no output schema and the description says nothing about return shape, result volume, or pagination for a listing that spans the entire organization. The legacy/alternative framing is helpful, but an agent still lacks the operational detail needed to call an org-wide list confidently.
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?
Only one optional parameter (`expand`) and schema description coverage is 100%, so the schema already documents it (including the `queues` example). The description adds no parameter-level meaning beyond that, so the 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?
States the resource and its full scope ('Every project of the organization') and explicitly distinguishes itself from the newer sibling `entities_search`. An agent can tell immediately what it returns and how it differs from the alternative project-finding tool.
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?
It names the alternative (`entities_search`) and labels this one as the legacy API, which strongly implies 'prefer entities_search for new work.' However, it never states the condition under which an agent should still choose this tool, leaving that inference to the reader.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_projects_queues_listList queues of a Tracker projectCRead-onlyIdempotent
The queues whose issues belong to a project.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Extra queue blocks, e.g. ``all`` or ``components,versions``. | |
| project_id | Yes | Numeric id of the project, from ``projects_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety is covered. The description adds nothing else: no ordering, no pagination, no note about what queue fields come back or whether expand changes the shape.
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?
Very short and front-loaded, but it is a noun fragment rather than a sentence and carries almost no information, so brevity here reflects under-specification rather than disciplined 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?
For a list tool with no output schema, the description should say at least what a returned queue looks like or how it relates to the global queues list. Reporting a project's queues versus all queues is left ambiguous.
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 both parameters (project_id, expand) are fully described in the schema, so the baseline of 3 applies. The description adds no syntax or format 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 fragment identifies the resource and the scoping relationship (queues whose issues belong to a project), which slightly exceeds the title. But it has no verb and no distinguishing detail against the sibling tracker_queues_list, so an agent cannot tell the two apart from text alone.
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 when-to-use guidance and no mention of the obvious alternative, tracker_queues_list, which appears in the sibling list. The agent gets no cue for selecting this project-scoped variant over the global one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_projects_updateEdit Tracker projectAIdempotent
Edit a project; queues is required on every edit, other fields change when set.
Returns the project with its incremented version.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``projects.edit`` (``PUT /projects/{id}?version=``). ``queues`` is required by the API on every edit; the rest change when set. | |
| expand | No | Extra blocks to include, e.g. ``queues``. | |
| version | Yes | Current version of the project, from ``projects_get``. | |
| project_id | Yes | Numeric id of the project, from ``projects_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true. The description adds useful behavioral context beyond annotations: it specifies that queues is mandatory on every edit, that other fields change only when set (partial update semantics), and that the response includes the project with an incremented version.
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 with zero waste. The key constraint (queues required) is front-loaded before the return value, and every phrase 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 mutation tool with a nested body, three required parameters, and no output schema, the description covers the essential behavior: required queues, partial update semantics, and the incremented version return. It could optionally mention permission requirements or that project_id comes from projects_list, but the schema already handles those details.
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 four parameters and nested body fields in detail. The description reinforces that queues is required and other fields are conditionally applied, but this largely duplicates the schema's body description and adds no new syntax or format details.
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?
States a specific verb ('Edit') and resource ('project'), making the operation clear. However, it does not explicitly differentiate from sibling tools such as tracker_projects_get, tracker_projects_create, or tracker_projects_delete; the distinction relies on the tool name rather than the description text.
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 the tool ('Edit a project') and includes a key constraint ('queues is required on every edit'), but provides no explicit guidance on alternatives or when not to use it. Usage is left to inference from the verb and resource.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_queues_createCreate Tracker queueA
Create a Tracker queue (the container issues live in; its key prefixes issue keys).
Required: key (latin, uppercase), name, lead (login), default_type (issue
type key, e.g. task) and default_priority (priority key, e.g. normal). Returns
the new queue.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``queues.create`` (``POST /queues/``). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds domain context and states that it returns the new queue, but it does not disclose auth needs, side effects, uniqueness constraints, or other behavioral traits beyond 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 front-loaded with the core action and resource definition, then lists required fields and the return value. It is appropriately concise, though the required-field list partially repeats information already present in the schema.
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?
Annotations cover the safety profile and the schema fully documents parameters, but no output schema exists and the description only says 'Returns the new queue' without describing the returned object. It also omits permissions or uniqueness constraints that would help an agent call a create operation 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%, so the baseline is 3. The description restates the required fields and adds minor clarifications such as 'latin, uppercase' for key and examples like 'task' and 'normal', but it does not address the optional issue_types_config parameter.
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 and resource: create a Tracker queue. It also defines what a queue is ('the container issues live in; its key prefixes issue keys'), which clearly distinguishes this tool from sibling queue tools such as list, get, delete, and restore.
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 'Create a Tracker queue,' but the description gives no explicit when-to-use guidance, no prerequisites, and no alternatives or exclusions. It does not say when to prefer create versus update, restore, or other queue-management siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_queues_deleteDelete Tracker queueADestructive
Delete a Tracker queue WITH ALL ITS ISSUES (recoverable via queues_restore).
The queue moves to the recycle bin and can be restored for a limited time. Returns an acknowledgement on success.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds critical detail beyond them: the deletion cascades to all contained issues, the object moves to a recycle bin, restoration is possible only for a limited window, and the call returns an acknowledgement. That is exactly the extra behavioral context an agent needs before a destructive call.
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?
Three short sentences with zero waste. The most important fact (destroys all issues) is front-loaded and capitalized, and the recovery and return-value notes follow in descending priority.
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 one-parameter destructive tool, the description covers cascade scope, reversibility window, recovery tool, and response behavior, while annotations handle the safety flags and no output schema is needed. Nothing an agent requires to call this correctly is 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?
Schema description coverage is 100% and the single queue_id parameter is fully documented in the schema (queue key or numeric id). The description adds no additional format or example detail beyond what the schema already provides, 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?
States a specific verb and resource ('Delete a Tracker queue') and immediately qualifies scope by emphasizing it removes ALL its issues. An agent can distinguish this from sibling operations like tracker_queues_tag_remove or tracker_queues_restore without opening any schema.
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?
Gives clear operating context: the queue goes to the recycle bin and can be restored for a limited time, naming the recovery tool (queues_restore). It does not spell out when deletion is preferable to non-destructive alternatives, but the recovery path and cascade warning give strong selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_queues_fields_listList Tracker queue required fieldsARead-onlyIdempotent
The queue's required/local fields with their schema, options and display order.
Use this to learn which fields an issue in the queue expects (and whether each is required) before creating or updating issues there.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds that each field carries a required flag, its schema and options, which is useful context about the payload, but adds no auth, pagination or scoping caveats beyond that.
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 with no filler, and the content of the response is front-loaded before the usage guidance. Efficient, though the first sentence is a fragment rather than a full clause.
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 list tool with one fully documented parameter and no output schema, the description adequately conveys what is returned and why to call it. No pagination or auth note, but nothing critical is missing for correct 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 a single well-documented queue_id (accepts key or numeric id). The description's 'queue's' phrasing adds nothing 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?
States a specific resource scope — the queue's required/local fields — and enumerates the returned attributes (schema, options, display order). The word 'queue's' implicitly distinguishes it from tracker_fields_list / tracker_localfields_list, which operate on other scopes, though it never names those siblings.
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?
Gives clear usage context: 'Use this to learn which fields an issue in the queue expects ... before creating or updating issues there.' This is a genuine when-to-use directive tied to a downstream action (issue creation/update), though it names no explicit alternative tool or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_queues_getGet Tracker queueARead-onlyIdempotent
One queue's settings and configuration by key or id.
Returns the queue's owner, default type/priority, and — when expand is set — its issue
types, versions, team, workflows and per-type resolution config. Sibling queues_list
enumerates every queue; pass one of its key values here.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Extra blocks to include, e.g. 'all' or a comma list of projects,components,versions,types,team,workflows,fields,issueTypesConfig. | |
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, idempotentHint, openWorldHint), so the description's job is to add context. It does: it lists what the call actually returns (owner, default type/priority) and what expand unlocks, which goes beyond the annotation set. It does not mention auth requirements or error cases, keeping it short of a 5.
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, both front-loaded: identity/selector first, then return-shape detail and sibling routing. No filler or restated title text.
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 output schema, the description carries the burden of describing returns and does so for the base case and the expand case. It stops short of full completeness (no note on missing-queue behavior), but nothing essential to invoking it correctly is absent.
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 further by explaining the semantic effect of the expand flag ('its issue types, versions, team, workflows and per-type resolution config'), giving meaning the schema's comma-list enumeration does not convey.
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?
States a specific verb and resource ('One queue's settings and configuration') and a precise selector ('by key or id'). It explicitly distinguishes itself from the sibling tool that could be confused with it, so an agent can route without opening either schema.
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?
Names the alternative ('Sibling queues_list enumerates every queue') and tells the agent exactly how to obtain the input ('pass one of its key values here'). This is explicit when-to-use and how-to-source-the-argument guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_queues_group_permissions_getGet a group's rights in a Tracker queueBRead-onlyIdempotent
What one group may do in a queue (create, read, write, grant, deny).
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | Numeric id of the group. | |
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds only the permission-set enumeration, which is closer to return content than behavior; it says nothing about auth requirements or what permissions look like when unset.
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?
One tight sentence with no filler, and the scope statement is front-loaded. It is possibly too terse to route the agent, but nothing is wasted.
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 two-parameter read-only get with full schema coverage and no output schema, the description plus annotations supply what the agent needs to call it. The main omission is distinguishing it from the user-permissions sibling.
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%: both queue_id (key or numeric id) and group_id (numeric) are documented in the schema. The description adds no parameter syntax or format detail, so the 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?
States a specific resource and scope: it returns what one group may do in a queue, and enumerates the permission dimensions (create, read, write, grant, deny). The verb is implicit rather than stated ('Get a group's rights'), and the group-vs-user sibling distinction is carried by the name rather than the text.
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 when-to-use guidance and no mention of the obvious alternative tracker_queues_user_permissions_get or tracker_queues_set_permissions. The agent must infer from the name alone that this is for inspecting group-level queue permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_queues_listList Tracker queuesARead-onlyIdempotent
Every queue the caller can see, auto-paginated over the API's page/perPage pages.
Capped at the configured item cap unless limit is given. Each item's key is the
queue key (e.g. TEST) you pass to queues_get and use as an issue prefix (TEST-123). Use
queues_get for a single queue's full configuration (types, workflows, resolutions).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max queues to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| expand | No | Extra blocks to include in the reply. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered. The description adds real behavioral context beyond that: auto-pagination over page/perPage, and the cap on item count unless limit is supplied. It stops short of describing return shape or ordering, but for a read-only list this is solid.
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?
Front-loaded with the scope, then pagination/cap behavior, then the routing hint and key semantics. Every sentence carries information; it is slightly verbose but nothing is wasted.
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 output schema, the description usefully explains the item shape (each item's key, e.g. TEST, usable as an issue prefix). Combined with full parameter coverage and read-only annotations, an agent has enough to call it correctly; only ordering/sorting detail is absent.
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 both parameters are already documented and the baseline of 3 applies. The description's note that results are capped unless limit is given largely restates the schema's own description of limit, and expand is not addressed at all.
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?
States a specific verb (list) and resource (queues) with explicit scope — 'every queue the caller can see' — and distinguishes itself from tracker_queues_get by noting the latter returns a single queue's full configuration. An agent can pick between the two without opening either schema.
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?
Names the alternative sibling explicitly ('Use queues_get for a single queue's full configuration') and gives the selecting condition (single vs all queues). It also tells the agent that the returned key is the value to pass to queues_get and to use as an issue prefix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_queues_permissions_updateSet Tracker queue permissionsAIdempotent
Replace access rules on a Tracker queue (grant/revoke read/write/create/grant rights).
Each right block takes users/groups/roles arrays; omitted blocks stay
unchanged. Returns the resulting permission set. A removal is not always the inverse of an
addition: taking a user out of read took it out of write too (seen once,
2026-10-06), so read the returned set after a removal. Adding a member that is there
already changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``queues.permissions_update`` (``PATCH /queues/{id}/permissions``). Set at least one category. Each names the users/groups/roles the permission applies to. | |
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (idempotentHint=true, destructiveHint=false, readOnlyHint=false), the description discloses non-obvious behavior: the call returns the resulting permission set, adding an already-present member is a no-op, and a removal can cascade (removing from read also removed write). That is real value. The 'seen once 2026-10-06' framing makes the cascade note read as a single anecdotal observation rather than a dependable rule, and 'Replace access rules' is slightly at odds with the partial/incremental semantics described later.
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?
Front-loaded with the core action in the first sentence, followed by body semantics and then caveats. It is tight overall, though the trailing idempotency and one-off cascade remarks are appended rather than integrated, making the ordering slightly less scannable.
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 nested-object mutation tool with no output schema, the description does the important work: it confirms a permission set is returned (so the agent knows to read it back after a removal) and explains block-level merge behavior. It is complete enough to call correctly, missing only explicit direction on reading current state first.
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 nested schema already documents the users/groups/roles arrays, the add/remove form, and overwrite-vs-incremental semantics in detail. The description restates the users/groups/roles shape and adds 'omitted blocks stay unchanged,' which is genuinely beyond the schema, but most parameter meaning is carried by 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 gives a specific verb and resource (set/replace access rules on a Tracker queue) and enumerates the right categories (read/write/create/grant). It is clearly a write-permission tool, distinguishable from the sibling read tools (tracker_queues_group_permissions_get, tracker_queues_user_permissions_get), though it never names an alternative explicitly.
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 only implied: the agent learns that omitted blocks stay unchanged (partial update), but there is no explicit 'use this when / not when' or pointer to the corresponding get tools to read current state. A reader can infer intent but receives no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_queues_restoreRestore Tracker queueA
Restore a previously deleted Tracker queue (and its issues) from the recycle bin.
Returns the restored queue.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, covering the safety profile. The description usefully adds that restore is scoped to the recycle bin and cascades to the queue's issues, but says nothing about failure cases (queue not in recycle bin) or permission requirements for a non-idempotent mutation.
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 short sentences with zero filler; the core action and its scope are front-loaded, and the return-value note is secondary. Every phrase carries 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 one-parameter tool with no output schema, the description covers what is restored (queue plus issues), the source (recycle bin), and the return ('the restored queue'). It stops short of error or permission behavior, but is otherwise sufficient to call the tool 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% – the queue_id parameter is already documented as a case-sensitive queue key or numeric id. The description adds no additional syntax or format detail beyond the schema, so the 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?
States a specific verb (Restore) and resource (Tracker queue), and clarifies scope beyond the name by noting it also restores the queue's issues and draws from the recycle bin. This distinguishes it from tracker_queues_create and tracker_queues_delete without needing the schema.
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 'previously deleted' implies the usage context (only for queues in the recycle bin), but there is no explicit when-to-use guidance or reference to alternatives such as tracker_queues_create for queues that were never deleted. Usage 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.
tracker_queues_tags_deleteRemove Tracker queue tagADestructive
Remove a tag from EVERY issue of a queue (irreversible; the tag disappears queue-wide).
body is {"tag": "<name>"} — pick the name from queues_tags_list. Returns an
acknowledgement on success.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``queues.tags_delete`` (``POST /queues/{id}/tags/_remove``). | |
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety bar is partly covered. The description adds real value beyond them by stating the blast radius ('EVERY issue', 'disappears queue-wide') and that the effect is irreversible, which is not encoded in 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?
Three short sentences, lead with the destructive scope, then the request body, then the return behavior. Nothing is padded and the most safety-critical fact comes first.
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?
No output schema exists, and the description tells the agent to expect an acknowledgement on success. With only two required params and a 100%-covered schema, the definition is self-sufficient; only minor gaps remain (e.g., error behavior for a nonexistent tag).
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 queue_id and body.tag are already documented in the schema. The description restates the body shape ({"tag": "<name>"}) and adds the sourcing hint, but no new format or validation detail; 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?
Specific verb (Remove) plus resource (a tag) plus scope (from EVERY issue of a queue), which is exactly what an agent needs to distinguish it from sibling tools like tracker_queues_tags_list or tracker_gaps_delete. The capitalized 'EVERY' disambiguates that this is queue-wide, not per-issue.
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?
It routes the agent to the companion read tool ('pick the name from ``queues_tags_list``') and flags the irreversibility, which is clear usage context. It does not, however, state when to prefer a per-issue tag removal if such a sibling exists, or any prerequisite permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_queues_tags_listList Tracker queue tagsARead-onlyIdempotent
Every tag name that has been added to the queue, as a flat string array.
These are the tags selectable on the queue's issues (the tags field). Remove one
everywhere with queues_tags_delete.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds value beyond that by disclosing the return shape (a flat string array) and the semantic meaning of the tags, which is useful since there is no output schema. It does not discuss permissions or pagination, keeping it at 4 rather than 5.
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?
Three short sentences, front-loaded with the return value, then the semantic clarification, then the related delete tool. Every sentence carries information; nothing is redundant or padded.
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 output schema, the description correctly compensates by explaining the return value format. For a one-parameter read-only list tool with full annotation coverage, this is nearly complete; only a note on permissions or empty-result behavior would add further value.
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 single `queue_id` parameter is fully documented in the schema (key or numeric id, case-sensitive). The description adds no additional parameter 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 states a specific verb and resource: listing every tag name added to a queue, returned as a flat string array. It also clarifies the semantic role of those tags (selectable on issues via the `tags` field), which distinguishes it clearly from sibling tools like tracker_queues_tags_delete.
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?
It gives clear context for use (discovering the tags selectable on a queue's issues) and explicitly names `queues_tags_delete` as the tool for removal, which implies the read-vs-write split. It stops short of explicit when-not guidance or other alternatives, but the routing to the delete sibling is concrete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_queues_user_permissions_getGet a user's rights in a Tracker queueARead-onlyIdempotent
What one user may do in a queue (create, read, write, grant, deny) and why.
Each right lists who grants it: the user personally, a group or a role. To change rights
use queues_permissions_update.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Login or numeric uid of the user. | |
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds real value beyond them by disclosing the shape of the payload (rights plus their granting source: personal, group, or role), which matters since no output schema exists. It stops short of stating auth/permission prerequisites for reading rights.
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 short sentences, zero filler, and the payload description is front-loaded ahead of the alternative-tool pointer. 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?
With no output schema, the description correctly compensates by outlining what each right entry contains and where rights originate. For a simple two-parameter read tool this is nearly sufficient; only finer response-field detail is absent, which 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?
Schema description coverage is 100%: ``user_id`` (login or numeric uid) and ``queue_id`` (case-sensitive key or numeric id) are fully documented in the schema. The description adds no additional semantics about either parameter, 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 states precisely what the call returns: the rights one specific user holds in a queue, enumerating the right types (create, read, write, grant, deny) and what verdicts appear. It also names the sibling that performs the corresponding mutation, so the agent can distinguish it without opening the schema.
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?
It gives an explicit routing rule: reads are this tool, changes go to ``queues_permissions_update``. That names an alternative and the condition that selects it. It does not address the nearby read siblings (``tracker_queues_group_permissions_get``, ``tracker_components_user_permissions_get``), so the when-to-use is clear but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_queues_versions_createCreate Tracker queue versionB
Create a version (release milestone) on a queue.
Required: queue (the queue key) and name; optional description,
start_date / due_date (YYYY-MM-DD). Returns the new version.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``queues.versions_create`` (``POST /versions/``). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, idempotent=false and openWorld=true, so the safety profile is covered. The description adds one useful behavioral fact ('Returns the new version'), compensating for the absent output schema, but says nothing about permissions, duplicate-name behavior, or what creating a version affects.
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 tight sentences with the core action front-loaded, followed by the required/optional split and return note. No filler and 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?
For a create tool with full annotation coverage and no output schema, the description supplies the essentials: required fields, date format, and the fact that the created version is returned. Only permission/effect details are missing, which is a minor 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?
Schema description coverage is 100%, so every field (queue, name, description, start_date, due_date) is already documented in the schema and the date format is provided there too. The description restates required/optional status without adding meaning, 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 gives a specific verb and resource ('Create a version... on a queue') and adds a semantic gloss ('release milestone') that makes the resource unambiguous. It never names the sibling operations (versions_update/delete/list), 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?
There is no when-to-use or when-not-to-use guidance and no reference to alternative tools. The 'Required'/'optional' list is parameter documentation, not usage guidance, so the agent gets no routing help from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_queues_versions_deleteDelete Tracker queue versionBDestructive
Permanently delete a queue version (irreversible). Returns an acknowledgement.
| Name | Required | Description | Default |
|---|---|---|---|
| version_id | Yes | Numeric id of the version, from ``queues_versions_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is largely covered. The description adds the useful nuance that deletion is permanent/irreversible and states the return is an acknowledgement, but offers no auth/permission or side-effect detail beyond that.
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 compact clauses, front-loaded with the action and its key constraint ('irreversible'), with the return note last. No filler 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?
For a single-parameter destructive tool with no output schema, the description plus annotations cover what the agent needs: what it does, that it is permanent, and the return shape. Missing only permission/alternative guidance, which is minor here.
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?
Only one parameter and schema description coverage is 100%, with the schema even noting the source ('from queues_versions_list'). The description adds nothing further about the parameter, so the 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?
States a specific verb+resource ('delete a queue version') that an agent can distinguish from siblings like tracker_queues_versions_get/update/create. It does not explicitly name alternatives, but the purpose is 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 when-to-use or when-not-to-use guidance, and no pointer to alternatives (e.g. version update vs delete, or any restore path). The only contextual cue is the irreversibility note, which is a warning rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_queues_versions_getGet Tracker queue versionBRead-onlyIdempotent
One queue version: name, description, dates and its released/archived flags.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated fields to return, e.g. ``name,dueDate,released``. | |
| version_id | Yes | Numeric id of the version, from ``queues_versions_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering the safety profile. The description adds useful context about what fields are returned, but does not disclose any behavioral traits beyond annotations (such as error handling, permissions, or pagination).
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 lists the returned fields without waste. It could be slightly improved by leading with an action verb, but it is appropriately sized for a simple get operation.
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, full schema coverage, and lack of an output schema, the description's enumeration of returned fields is valuable. It does not mention how to obtain the version_id (though the schema references queues_versions_list), but overall it provides enough context for an agent to call the tool 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%, so both parameters are fully documented in the schema. The description does not add any parameter-level meaning beyond what the schema provides. Baseline 3 is appropriate when the schema carries 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?
The description states the specific resource (one queue version) and enumerates the fields returned (name, description, dates, released/archived flags). It does not explicitly differentiate from sibling tools like tracker_queues_versions_list, but the purpose is clear once combined with the title.
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?
There is no explicit when-to-use guidance, no mention of alternatives, and no exclusions. The phrase 'One queue version' implies a single-item retrieval, but the agent gets no direction on when to choose this over list or other get tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_queues_versions_listList Tracker queue versionsARead-onlyIdempotent
The queue's versions — release milestones issues can be assigned to.
Each item carries the version's name, date range and released/archived flags. Create one
with queues_versions_create.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description adds value beyond them by disclosing the returned item shape (name, date range, released/archived flags), which matters since there is no 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?
Three short sentences, each carrying distinct information: the resource, the payload shape, and the sibling routing. The resource definition is front-loaded with no 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 single-parameter read tool with no output schema, the description covers purpose, returned fields, and the create alternative, which is nearly everything an agent needs. Only an explicit listing use-case trigger is absent.
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 single queue_id parameter is fully documented in the schema, so the baseline is 3. The description adds no syntax or format detail for queue_id, but none is needed.
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?
States the resource explicitly ('The queue's versions') and defines the domain concept ('release milestones issues can be assigned to'), so an agent knows exactly what is being listed. It also names the create counterpart, distinguishing it from tracker_queues_versions_create/get/update/delete.
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?
It explicitly routes the write case to ``queues_versions_create``, giving a clear this-vs-sibling signal. It stops short of an explicit 'use this when you need to inspect available versions', so it is strong context rather than a full when/when-not statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_queues_versions_updateEdit Tracker queue versionBIdempotent
Edit a queue version; only the fields set in body change. Returns the version.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``queues.version_edit`` (``PATCH /versions/{id}``). Only the fields that are set are sent, so omitted fields stay unchanged. | |
| fields | No | Comma-separated fields to return in the reply. | |
| version_id | Yes | Numeric id of the version, from ``queues_versions_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description usefully adds the PATCH-style semantics that only fields present in body are modified, but says nothing about auth needs, side effects on related versions, or rate limits.
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 short clauses, front-loaded with the action and followed by the change semantics and return note. No filler, though it is terse to the point of under-specifying.
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?
A mutation tool with a nested body object and no output schema: the description confirms a version is returned but does not describe its shape, and gives no guidance on validation or error behavior. Adequate but leaves clear gaps for an agent acting on the result.
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 body field (name, due_date, start_date, description) documented inline and version_id's origin noted. The description only restates the partial-update rule, so the 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?
States a specific verb+resource ('Edit a queue version') and clarifies the partial-update contract. It does not distinguish itself from siblings like tracker_queues_versions_create or tracker_queues_versions_delete, relying on the name to carry that discrimination.
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?
There is no guidance on when to use this tool versus alternatives (e.g. create, delete, or get for a version), nor on prerequisites such as permission requirements or where version_id comes from. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_remotelinks_createCreate Tracker issue remote linkA
Link a Tracker issue to an object in an external application; returns the created link.
Get the application id (origin) from applications_list. Pass backlink=true
to also create the mirror link in the external app.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /issues/{key}/remotelinks`` (add an external link). | |
| backlink | No | Also create the mirror link in the external application. | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, idempotentHint=false, so the safety profile is covered. The description adds genuinely new behavior: the call returns the created link, and backlink=true causes a second side effect in the external application (a mirror link). It does not warn about duplicate links on repeat calls despite idempotentHint=false, but it goes beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences/paragraphs, front-loaded with the action and its return value, followed by the two operational hints. No filler and nothing repeated from the title.
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?
No output schema exists, so the description correctly notes that the created link is returned. Together with the origin-lookup hint and the backlink side-effect note, an agent has everything needed to invoke this nested-body create tool 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 adds meaning beyond the schema by naming the external source for ``origin`` (``applications_list``) and by clarifying the effect of ``backlink=true`` beyond the schema's terse wording, which is the one place an agent could go wrong.
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?
States a specific verb and resource: links a Tracker issue to an object in an external application and returns the created link. The 'external application' framing cleanly separates it from the sibling internal-link tools (tracker_links_create) and from tracker_remotelinks_list/delete.
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?
Gives a prerequisite chain ('Get the application id (``origin``) from ``applications_list``') and conditional usage ('Pass ``backlink=true`` to also create the mirror link'). It stops short of stating when-not to use it, e.g. versus tracker_links_create for intra-tracker links, so it is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_remotelinks_deleteDelete Tracker issue remote linkADestructive
Remove a remote (external-application) link from a Tracker issue (irreversible).
Get link_id from remotelinks_list. Returns an acknowledgement on success.
| Name | Required | Description | Default |
|---|---|---|---|
| link_id | Yes | Remote link id, from ``remotelinks_list``. | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is structured. The description adds the irreversible warning and states the return behavior (acknowledgement on success), which is genuinely additive for a mutating call.
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 tight sentences with the destructive nature front-loaded and the dependency stated second. No filler or restated title.
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?
No output schema exists, but the description compensates by saying an acknowledgement is returned. Combined with the irreversible warning and the required-parameter list, an agent has enough to call 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% and both parameters are documented there, including the link_id provenance. The description's 'get link_id from remotelinks_list' duplicates the schema text rather than adding syntax or format detail, 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?
States a specific verb (Remove) and resource (remote/external-application link from a Tracker issue) plus the target entity, which cleanly separates it from tracker_remotelinks_list and tracker_remotelinks_create.
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?
Gives the prerequisite flow explicitly (get link_id from remotelinks_list) and warns the action is irreversible. It stops short of naming when-not or distinguishing itself from the other link-delete siblings such as tracker_links_delete or tracker_entities_links_delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_remotelinks_listList Tracker issue remote linksARead-onlyIdempotent
Links from a Tracker issue to objects in external applications (Bitbucket, etc.).
Each entry carries the link type, direction, and the external object's key plus its owning
application. This is the external link list — for issue-to-issue links use
links_list.
| Name | Required | Description | Default |
|---|---|---|---|
| issue_key | Yes | Issue key or id, e.g. ``JUNE-2``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), so the bar is lower. The description adds useful non-annotation detail by disclosing the shape of each returned entry (link type, direction, external object key, owning application), which matters because no output schema exists. It does not discuss pagination or scoping limits.
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?
Three short sentences with zero filler, and the operative scoping/alternative contrast is placed last as a clean routing hint. Nothing is restated from the schema or title.
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 single-parameter read tool with annotations and no output schema, the description covers purpose, the identity of returned entries, and the sibling distinction. Only minor details (ordering, whether the list can be empty or truncated) are absent, which is acceptable at 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?
Only one parameter (issue_key) and schema description coverage is 100%, so the schema already documents it fully. The description adds no syntax, format, or edge-case meaning for the parameter; this is the baseline case where structured data does the work.
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+resource (list remote links from a Tracker issue to external applications) and immediately names the sibling it is not ('for issue-to-issue links use links_list'). An agent can distinguish it from tracker_links_list / tracker_entities_links_list without opening any schema.
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?
It gives clear context (external-app links such as Bitbucket) and routes the agent to the alternative tool for the issue-to-issue case. There is no explicit list of exclusions or prerequisites beyond that single contrast, so it falls just short of the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_resolutions_createCreate Tracker resolutionA
Create an org-global issue resolution (a close-out reason such as fixed/duplicate).
CAUTION: resolutions are organisation-wide and have no delete endpoint — creation leaves
permanent residue. key is the latin identifier; name holds the ru/en display names.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /resolutions/`` (create a resolution). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only declaring readOnly=false / idempotent=false / openWorld=true, the description supplies the critical missing behavioral fact: the resource is org-wide and irreversible because no delete endpoint exists. That is exactly the kind of consequence detail an agent needs before invoking a create tool, and it goes well beyond what the annotations convey.
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 tight sentences followed by a front-loaded CAUTION sentence; the purpose statement comes first and the risk warning immediately after. No filler or restatement of the title.
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 single-parameter create tool with a fully documented nested schema and no output schema, the description covers purpose, scope, irreversibility and field meaning. It omits any hint about what the call returns (e.g. the created resolution object), which is a minor gap given no output schema exists.
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 already 100% (key character rules, en/ru name fields), so the baseline is 3. The description earns a point above baseline by clarifying the semantic split between the two fields: 'key' is the latin machine identifier while 'name' carries the ru/en display names.
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?
Specific verb and resource ('Create an org-global issue resolution') plus a plain-language gloss of what a resolution is ('a close-out reason such as fixed/duplicate') and its org-wide scope. It does not explicitly distinguish itself from tracker_resolutions_update / tracker_resolutions_list, but the scope qualifier and definition make 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 CAUTION block gives strong when-not-to-use guidance: resolutions are organisation-wide and there is no delete endpoint, so creation leaves permanent residue. That is real decision-support. It stops short of naming alternatives (e.g. tracker_resolutions_update for editing an existing one), so it is clear context without explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_resolutions_listList Tracker resolutionsARead-onlyIdempotent
Every issue resolution configured in the organisation.
A resolution is the close-out result such as fixed/duplicate/won't-fix. Use this to resolve
or validate a resolution key when reading a closed issue or filtering; see statuses_list
for workflow stages, not close-out reasons.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety and repeat-call behavior are covered elsewhere. The description adds domain context about what a resolution is and its org-wide scope, but no operational traits like ordering, paging, or whether custom resolutions are included. Adequate against the lower bar set by annotations, 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?
Front-loaded with the resource scope in the first fragment, then the key disambiguation against statuses_list. Slightly awkward as a headline fragment plus two sentences, but every clause carries information and nothing is wasted.
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 parameterless, read-only list operation with annotations covering safety and no output schema expected, the description supplies the domain meaning and the sibling disambiguation an agent needs. It is complete enough to call correctly, though it does not say how the list is ordered or whether it is paginated.
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 takes zero parameters, which is the baseline 4 case; there is nothing to disambiguate. The description's note about resolution keys is contextual rather than parameter-level, which is appropriate here.
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?
States precisely what the tool returns ("Every issue resolution configured in the organisation") and defines the resource domain (close-out results such as fixed/duplicate/won't-fix). It explicitly contrasts itself with the sibling statuses_list, so an agent can route between them without opening schemas.
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?
Names the exact conditions for use ("to resolve or validate a resolution key when reading a closed issue or filtering") and names the alternative plus the reason it is wrong ("see statuses_list for workflow stages, not close-out reasons"). When/when-not guidance is fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_resolutions_updateEdit Tracker resolutionAIdempotent
Edit an issue resolution; only the fields set in body are changed.
resolution_id is the numeric id (not the key). Pass version to guard against
concurrent edits (optimistic locking).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``PATCH /resolutions/{id}?version=`` (edit a resolution). Only the fields that are set are sent, so omitted fields stay unchanged. | |
| version | No | Current version of the object (optimistic lock), from its get/list tool. | |
| resolution_id | Yes | Resolution id or key, from ``resolutions_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=true, destructive=false, so the safety profile is covered. The description adds genuinely useful context beyond that: PATCH-style partial-update semantics and an optimistic-locking guard via `version`. It does not say what happens when `version` is omitted or whether the edit requires specific permissions, keeping it out of the top band.
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 short paragraphs with the core action front-loaded and each sentence carrying distinct information (partial update, id form, locking). No 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 mutation tool with no output schema and annotations covering the safety profile, the description covers partial-update behaviour and concurrency guarding adequately. It omits edge-case behaviour (missing/`null` version, permission requirements) and leaves the id-vs-key discrepancy with the schema unresolved.
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 nested body fields are fully documented, so the schema already carries the parameter burden and baseline is 3. The description adds the meaningful distinction that `resolution_id` is the numeric id, but this actually conflicts with the schema's "Resolution id or key, from resolutions_list", creating ambiguity rather than clarity.
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?
States a specific verb+resource pair ("Edit an issue resolution") and immediately scopes the operation ("only the fields set in body are changed"). It is distinguishable from tracker_resolutions_create and tracker_resolutions_list by the verb, but neither sibling is named explicitly.
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 this is for modifying an existing resolution and tells the caller to supply the numeric id, but it never states when to use this versus tracker_resolutions_create or how to obtain the current version value before calling. Usage context is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_sprints_archiveArchive Tracker sprintA
Archive a finished sprint (hides it from the board's active sprint list).
Pass version (the sprint's current version, from sprints_get) — the API requires
it for optimistic locking and answers 428 without one. Returns the updated sprint.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | Current version of the object (optimistic lock), from its get/list tool. | |
| sprint_id | Yes | Numeric identifier of the sprint. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), but the description adds real context the annotations cannot: archive hides rather than removes, version is mandatory for optimistic locking, and the API returns 428 if it is omitted. It does not address reversibility (can a sprint be unarchived?) or permission requirements, so it stops short of full behavioral 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?
Two short sentences with the effect front-loaded and the critical parameter requirement second. Every clause earns its place: no restatement of the tool name and no boilerplate.
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 output schema, the description correctly notes it returns the updated sprint, and it covers the one non-obvious parameter requirement and its error mode. It omits whether archiving is reversible and what happens to a sprint's issues, which would complete the picture for a mutation of this kind.
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 nonetheless adds meaning beyond the schema by naming the exact tool to fetch version from (sprints_get) and explaining the failure consequence (HTTP 428) of leaving it null, which the schema's 'optimistic lock' note does not convey.
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?
States a specific verb (Archive) and resource (sprint), then immediately clarifies the actual effect: it hides the sprint from the board's active sprint list. This distinguishes it from the destructive sibling tracker_sprints_delete and from tracker_sprints_start without the agent needing to open either schema.
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 scopes usage to a finished sprint and points to sprints_get as the source of the required version value. However, it never explicitly contrasts archiving with sprints_delete (permanent removal) or with sprints_start/update, so the agent must infer when archiving is preferable to those alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_sprints_createCreate Tracker sprintA
Create a sprint on an agile board; returns the new sprint.
Required fields: name, board ({"id": "<board id>"}), start_date and
end_date (YYYY-MM-DD). The board must have sprints enabled.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``sprints.create`` (``POST /sprints``). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful context beyond the annotations: it returns the new sprint, and the target board must have sprints enabled. It does not mention permissions or failure behavior, keeping it from a 5.
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 short sentences, with the core action and return value front-loaded and the constraints following. Every clause carries information and nothing is padded.
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 create tool with full schema coverage, annotations covering the mutation profile, and no output schema, the description supplies the essential prerequisites and the return value. It is close to complete, though it omits any note on permissions or what happens on an invalid board.
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 name, board.id, start_date and end_date. The description restates the required fields and the YYYY-MM-DD format and board id shape, which the schema already provides, so it adds no meaning beyond structured data. Baseline 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 names a specific verb and resource ('Create a sprint on an agile board') and adds that it returns the new sprint, which is unambiguous against siblings like tracker_sprints_update/delete/start. It does not explicitly contrast itself with any sibling, so it falls just short of 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?
It states a precondition ('The board must have sprints enabled'), which is useful context for selecting this tool. However, it offers no guidance on when to use create versus update/start/archive or the ordering of operations, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_sprints_deleteDelete Tracker sprintADestructive
Permanently delete a sprint (irreversible; its issues are not affected).
Returns an acknowledgement on success.
| Name | Required | Description | Default |
|---|---|---|---|
| sprint_id | Yes | Numeric identifier of the sprint. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds real value beyond them: 'irreversible' and the non-obvious side-effect clarification that issues belonging to the sprint survive. It also notes the acknowledgement response, though it omits permission requirements.
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 compact sentences; the irreversible nature and the issue-preservation fact are front-loaded, and nothing is wasted.
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 single-parameter destructive delete with no output schema, the description covers destruction semantics and the return acknowledgement. Remaining gaps (authorization requirements, interaction with boards/sprint state) are moderate but not blocking.
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 a single parameter at 100% schema coverage, the schema already fully documents 'sprint_id'. The description adds no format, sourcing, or lookup guidance beyond that, 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?
States a specific verb and resource ('Permanently delete a sprint') and adds scope ('its issues are not affected'). It does not, however, differentiate itself from the closely related tracker_sprints_archive sibling, which an agent must also consider.
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?
There is no when-to-use guidance, no prerequisites (e.g., must the sprint be closed/finished first?), and no mention of the obvious alternative, tracker_sprints_archive, which performs a non-destructive variant of the same action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_sprints_getGet Tracker sprintARead-onlyIdempotent
Look up a single sprint by its numeric id.
The sprint includes its status, planned start/end dates, actual start/end datetimes and parent
board. Use this when you already know the sprint id; use sprints_list to enumerate all
sprints on a board.
| Name | Required | Description | Default |
|---|---|---|---|
| sprint_id | Yes | Numeric identifier of the sprint. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuine value by enumerating what the sprint payload contains (status, planned vs. actual dates, parent board), which matters since no output schema exists. It stops short of noting auth requirements, but that gap is minor for a read-only lookup.
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, both earning their place: the first gives identity and scope, the second gives return contents and the sibling routing. The disambiguation is front-loaded rather than buried.
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 one-parameter read tool with annotations covering safety and no output schema, the description supplies the missing return-field context and the alternative tool. It could mention what happens on a nonexistent id, but nothing an agent needs to call it correctly is absent.
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 a single parameter and 100% schema description coverage, the schema already documents sprint_id as a numeric identifier. The description repeats 'numeric id' without adding format, range, or lookup-source detail, 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?
States a specific verb ('look up') and resource ('a single sprint by its numeric id'), with an explicit scope of one item. It names the sibling it is not (sprints_list), so an agent can distinguish it without opening a schema.
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?
Explicitly routes usage: 'Use this when you already know the sprint id; use sprints_list to enumerate all sprints on a board.' This gives both the when-to-use condition and the named alternative, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_sprints_listList Tracker board sprintsARead-onlyIdempotent
Every sprint defined on the given agile board, in the order Tracker returns them.
Each sprint carries its status, planned dates and parent board. Use this to enumerate a
board's sprints; use sprints_get when you already know a sprint id, and boards_get for
the board itself.
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Numeric identifier of the board whose sprints to list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description adds genuinely useful context beyond them: the return order ('in the order Tracker returns them') and the fact that each item carries status, planned dates and parent board. It omits pagination behavior, which keeps it from a 5.
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?
Front-loads the core behavior in the first sentence, then return contents, then routing. Every sentence earns its place, though the return-content sentence is somewhat optional given the absence of an output schema.
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, single-parameter list tool with full schema coverage and annotations covering the safety profile, the description is nearly complete. The lack of any note on pagination or result-set size is the only meaningful 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?
Schema description coverage is 100% and there is only one required parameter (board_id), which the schema already documents as the board whose sprints to list. The description adds no extra syntax or format detail beyond that. Baseline 3 is appropriate when the schema does the work.
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?
States a specific verb (list) and resource (sprints) scoped to a given agile board, and explicitly names the siblings it is not (sprints_get, boards_get). An agent can distinguish it from tracker_boards_list and tracker_sprints_get without opening any schema.
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?
Gives explicit routing: use this to enumerate a board's sprints, use sprints_get when the sprint id is known, and boards_get for the board itself. The when-to-use and the alternatives are both spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_sprints_startStart Tracker sprintA
Start a sprint (sets its status to inProgress and stamps the actual start time).
Pass version (the sprint's current version, from sprints_get) — the API requires
it for optimistic locking and answers 428 without one. Returns the updated sprint.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | Current version of the object (optimistic lock), from its get/list tool. | |
| sprint_id | Yes | Numeric identifier of the sprint. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly=false, idempotent=false, destructive=false, openWorld=true), yet the description goes well beyond them: it names the exact state transition, the timestamp side effect, the optimistic-locking contract, the 428 failure without a version, and that the updated sprint is returned. That is precisely the extra behavioral context an agent needs for a mutation.
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 tight sentences, front-loaded with the effect and scope, then the prerequisite/error condition in the second clause. No filler or restatement of the title.
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 mutation with no output schema, the description covers effect, prerequisite, error behavior, and return value, which is enough to call it correctly. It omits permission requirements and the behavior when a sprint is already in progress, which would be the remaining useful details.
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 earns above that by stating that ``version`` is required in practice for optimistic locking and returns HTTP 428 without it — which corrects the schema's misleading nullable/default-null presentation. It adds no further meaning to ``sprint_id``.
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?
Specific verb + resource (start a sprint) immediately clarified with the concrete side effects: status becomes ``inProgress`` and the actual start time is stamped. This distinguishes it from siblings like tracker_sprints_update, tracker_sprints_archive, and tracker_sprints_create without needing the schema.
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?
It tells the agent where the required ``version`` must come from (``sprints_get``), which is practical routing guidance. However, it never names the alternative state-transition tools (e.g. archive/update) or states when *not* to call this (already-started, completed sprints), so the guidance is clear but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_sprints_updateEdit Tracker sprintAIdempotent
Edit a sprint; only the fields set in body (name, dates) are changed.
Get sprint_id from sprints_list. Pass version (the sprint's current version,
from sprints_get) — the API requires it for optimistic locking and answers 428 without
one. Returns the updated sprint.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``sprints.edit`` (``PATCH /sprints/{sprint_id}``). Every field is optional; only the fields you set are sent. | |
| version | No | Current version of the object (optimistic lock), from its get/list tool. | |
| sprint_id | Yes | Numeric identifier of the sprint. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the annotations: PATCH-style partial update semantics, the optimistic-locking version requirement and its 428 failure mode, and the fact that it returns the updated sprint. The annotations (idempotentHint=true, destructiveHint=false) cover safety, and the description complements them without repeating.
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?
Three tight sentences, front-loaded with the edit action and partial-update semantics, then the ID/version sourcing, then the return value. Every sentence carries information an agent needs.
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 mutation tool with annotations covering the safety profile and no output schema, the description supplies the missing operational context: required version for locking, its failure mode, ID sourcing, and the return value. Nothing needed to call it correctly is absent.
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, but the description adds real meaning: version is the sprint's current version sourced from sprints_get and is required for optimistic locking, and sprint_id comes from sprints_list. It largely echoes the body's partial-update note, keeping it just short of 5.
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?
States a specific verb and resource ("Edit a sprint") and adds scope detail ("only the fields set in body are changed"). It does not explicitly differentiate itself from sibling sprint mutations like tracker_sprints_start, tracker_sprints_archive, or tracker_sprints_delete, so it falls short of full sibling routing.
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?
Gives concrete when/how guidance: obtain sprint_id from sprints_list, pass version from sprints_get, and notes the API rejects calls without it (428). It stops short of stating when NOT to use this tool or naming alternative sprint-mutation siblings for status changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_statuses_createCreate Tracker statusA
Create an org-global issue status for use in workflows.
CAUTION: statuses are organisation-wide and have no delete endpoint — creation leaves
permanent residue. key is the latin identifier, name holds the ru/en display names,
type is the stage kind (new/inProgress/paused/done/cancelled).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /statuses/`` (create an issue status). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety/idempotency hints, but they say destructiveHint=false while the description discloses the far more important trait: statuses are org-wide and irreversible because no delete endpoint exists. That is exactly the context annotations cannot carry. It stops short of stating duplicate-key behavior or auth requirements.
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?
Three compact sentences, front-loaded with verb+resource, then the risk warning, then the field glossary. No filler and nothing buried.
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 single nested body parameter with full schema coverage and no output schema, the description covers the essential decision input (permanence) and field meaning. It omits what the call returns and how duplicate keys fail, which are minor given the schema already handles the input shape.
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 already documents key (Latin, lower-case start), name (en/ru), and the type values. The description restates those same facts in prose ('key is the latin identifier, name holds the ru/en display names'), adding little beyond the schema's own 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?
States a specific verb and resource ('Create an org-global issue status') and pins down the scope as organisation-wide, which cleanly separates it from tracker_statuses_list and tracker_statuses_update among its siblings.
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 CAUTION supplies real decision context: creation is permanent and there is no delete endpoint, which effectively tells the agent when to hesitate. It does not, however, name the alternatives (e.g. tracker_statuses_update to modify an existing status) or state prerequisites such as required permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_statuses_listList Tracker statusesARead-onlyIdempotent
Every issue status configured in the organisation's workflows.
Each status has a key, a name and a type such as new/inProgress/done. Use this to resolve or
validate a status key before filtering or transitioning issues; see resolutions_list for
close-out results and priorities_list for priorities.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuine value beyond them by disclosing the shape of the returned records (key/name/type such as new/inProgress/done), which is the main behavioral unknown for a no-output-schema list.
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?
Front-loaded with the resource definition, then the record shape, then usage and related tools. Three short sentences, none of which repeats the title or annotations.
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 parameterless read-only list with no output schema, the description supplies everything an agent needs: what it returns, the fields per item, and when to reach for it versus neighboring lists. No obvious gap remains.
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 takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The empty input schema is consistent with the 'list everything' framing.
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?
States a specific resource and scope: 'Every issue status configured in the organisation's workflows.' It then enumerates what each status contains (key, name, type), which lets an agent distinguish this from tracker_resolutions_list and tracker_priorities_list without opening any schema.
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?
Explicitly says when to use it ('resolve or validate a status key before filtering or transitioning issues') and names two adjacent lists with their domains. It stops short of stating exclusions or clarifying against the write siblings (statuses_create/update), so it is clear context rather than full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_statuses_updateEdit Tracker statusAIdempotent
Edit an issue status; only the fields set in body are changed.
status_id is the numeric id (not the key). Pass version to guard against concurrent
edits (optimistic locking).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``PATCH /statuses/{id}?version=`` (edit a status). Only the fields that are set are sent, so omitted fields stay unchanged. | |
| version | No | Current version of the object (optimistic lock), from its get/list tool. | |
| status_id | Yes | Status id or key, from ``statuses_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly=false, destructive=false, idempotent=true), so the bar is lower. The description still adds real behavioral context: the edit is partial (omitted fields unchanged) and version enables optimistic locking against concurrent edits. It omits auth/permission requirements and what the response looks like, but this is solid value beyond 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?
Two short, front-loaded paragraphs with the partial-update rule first and the id/version caveats second; no filler. Slightly terse on field scope, but 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 3-param PATCH with a nested body and no output schema, the description covers the important calling constraints (partial update, id form, locking). The valid body fields (name, type, order, description) are left entirely to the schema, which is acceptable given 100% schema coverage, but no return behavior or error conditions are mentioned.
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 does add meaning (version's optimistic-locking purpose, partial-update semantics), but it also creates a conflict: it insists status_id is the numeric id "not the key", while the schema description says "Status id or key" and types it as a string. That inconsistency between description and schema is a net negative rather than pure added clarity.
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?
Specific verb+resource: "Edit an issue status", plus the partial-update rule that only fields set in body are changed. However, calling it an "issue status" is slightly misleading for a tracker status dictionary entry; an agent could confuse it with changing a status on an issue (tracker_issues_update / tracker_transitions_execute). It never names its real siblings (tracker_statuses_create, tracker_statuses_list) to disambiguate.
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?
Implicit guidance only: it tells you status_id comes from statuses_list (a retrieval sibling) and version comes from a get/list tool, which steers the workflow. But there is no explicit when-to-use/when-not-to-use statement, no mention of tracker_statuses_create for new statuses, and no note on permission requirements for editing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_transitions_executeExecute Tracker issue transitionA
Move a Tracker issue through a workflow transition (change its status).
Get transition_id from transitions_list. body may be empty or carry issue
fields to set on transition, e.g. a resolution when closing. Returns the transitions
available from the new status.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /issues/{key}/transitions/{id}/_execute``. Open-ended: any issue field can be set on transition (e.g. a resolution when closing), so ``extra="allow"`` lets arbitrary fields pass through unvalidated while the common fields below still document themselves in the MCP schema. | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. | |
| transition_id | Yes | Transition id, from ``transitions_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the mutation semantics are covered structurally. The description adds value by explaining that body may be empty and that the call returns the transitions available from the new status, which the annotations do not convey.
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?
Three tight sentences, front-loaded with the core action and then the prerequisite and body semantics. No filler, though the parenthesis restating 'change its status' is mildly redundant.
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?
There is no output schema, and the description compensates by stating the call returns the transitions available from the new status. Combined with the schema's full parameter coverage and the annotations' safety profile, an agent has nearly everything needed 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% and the nested body is fully documented, so the schema does the heavy lifting. The description adds only that body may be empty or carry issue fields such as a resolution, which is marginal beyond what the schema already states.
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?
States a specific verb (Move) and resource (Tracker issue through a workflow transition) plus a clarifying synonym (change its status). It is easy to separate from siblings like transitions_list (which lists rather than executes).
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?
Explicitly routes the agent to ``transitions_list`` to obtain ``transition_id``, which is a real prerequisite. It doesn't state when NOT to use this (e.g. vs. tracker_issues_transition_bulk), so it falls short of a full when/when-not/alternatives treatment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_transitions_listList Tracker issue transitionsCRead-onlyIdempotent
Available workflow transitions for a Tracker issue.
| Name | Required | Description | Default |
|---|---|---|---|
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds only the vague word 'available', giving no insight into whether the list is filtered by the issue's current status/workflow, what fields a transition carries, or how it is used downstream.
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 fragment that wastes no words. It is borderline under-specified rather than bloated, but it is efficiently 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?
With no output schema, the description should carry the burden of explaining what a 'transition' result looks like and how the returned identifiers feed into tracker_transitions_execute. Instead it only restates the title, leaving the discovery-to-execution flow undocumented.
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 a single required issue_key parameter documented as 'Issue key, e.g. QUEUE-123.' The description adds no parameter meaning beyond the schema, so the 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 states a specific verb+resource (list available workflow transitions) scoped to a Tracker issue, and the word 'available' implicitly distinguishes it from the write-side sibling tracker_transitions_execute. It is clear on its own, but it never names or contrasts with any sibling explicitly.
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?
There is no when-to-use guidance, no prerequisites, and no mention of the natural alternative tracker_transitions_execute or tracker_issues_transition_bulk. An agent must infer on its own that this is the discovery step preceding a transition execution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_triggers_createCreate Tracker queue triggerA
Create a trigger on a queue — actions that fire when an issue event matches conditions.
Required: name and actions (e.g. [{"type": "Transition", …}]); optional
conditions scope when it fires. Returns the new trigger.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Trigger name, actions and optional conditions. | |
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation is a non-idempotent, non-destructive, open-world write, so the safety profile is covered. The description adds meaningful context those annotations don't carry: the created conditions default to "always", and the call "Returns the new trigger" — a real addition given there is no output schema. It omits any auth/permission or duplicate-trigger caveats, keeping it out of 5 territory.
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 tight sentences with the verb+resource front-loaded and no filler; every clause does work. The restatement of required fields is mildly redundant with the schema, which keeps it from 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?
For a two-parameter mutation tool with full schema coverage and no output schema, the description covers the essentials: what it creates, the required vs optional inputs, and that it returns the new trigger. Only operational caveats (permissions, duplicate-creation behavior) 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?
Schema description coverage is 100%, so queue_id, name, actions and conditions are all already documented in the schema. The description restates the required fields and supplies an inline action example (`{"type": "Transition", …}`), but that example largely duplicates the schema's AutomationAction description, so it lands at the baseline 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 gives a specific verb and resource ("Create a trigger on a queue") and explains what the created object is — "actions that fire when an issue event matches conditions" — which lets an agent distinguish it from tracker_triggers_update or tracker_autoactions_create. It stops short of naming any sibling explicitly, so it doesn't reach 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?
Usage is only implied: the agent can infer this is for adding a new queue trigger, but the description never states when to prefer it over tracker_triggers_update (existing trigger) or tracker_autoactions_create, nor does it give any prerequisite. Adequate context, no explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_triggers_getGet Tracker queue triggerARead-onlyIdempotent
One queue trigger by id — its actions, firing conditions, order and active flag.
Triggers run actions on an issue when their conditions match. The webhook-action run log is
triggers_webhook_log_list.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | Queue key (case-sensitive, e.g. DESIGN) or numeric queue id. | |
| trigger_id | Yes | Numeric identifier of the trigger. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description goes beyond them by explaining what a trigger actually does ('run actions on an issue when their conditions match') and by routing to the related webhook run log, though it says nothing about permissions or error 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?
Two tight sentences, front-loaded with the return content and followed by a short domain gloss plus a cross-reference. Nothing is padded, though the final pointer sentence reads as a fragment.
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 output schema, the description compensates by naming the fields returned, and annotations cover the read-only nature. An agent has enough to invoke it correctly, with only minor gaps around permissions and error cases.
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 both parameters (queue key/id and numeric trigger id), so the schema carries the parameter burden. The description only restates 'by id' and adds no format or syntax detail beyond it, matching the baseline for fully documented schemas.
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?
States a specific verb and resource ('One queue trigger by id') and enumerates the payload it returns (actions, firing conditions, order, active flag), which separates it from the create/update/list trigger siblings. It does not explicitly contrast with tracker_triggers_list, so it stops short of full 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?
Usage is implied by 'by id' and by the pointer to the webhook run log, but there is no explicit when-to-use guidance or statement of when to prefer tracker_triggers_list instead. The agent must infer the retrieval context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_triggers_listList Tracker queue triggersARead-onlyIdempotent
Every trigger of a queue, ascending by id: name, actions, conditions and active flag.
Auto-paginated and capped at the configured item cap unless limit is given. Use
triggers_get for one trigger by id.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max triggers to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| queue_id | Yes | Queue key (case-sensitive, e.g. DESIGN) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuine non-annotation behavior: auto-pagination and the default item cap applied when ``limit`` is omitted, plus the sort order. Auth/permission requirements are not disclosed.
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?
Three tightly packed sentences: scope and return fields first, pagination behavior second, alternative tool last. No filler and the most decision-relevant information is 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?
For a two-parameter read-only list tool with no output schema, the description covers the returned fields, ordering, pagination cap, and the sibling alternative. Only minor gaps remain, such as permission requirements for reading a queue's triggers.
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 are already documented, including the YCLI__HTTP__MAX_ITEMS default for ``limit`` and the queue key/id format. The description restates the cap behavior without adding syntax or format detail beyond the schema, so the 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?
States a specific verb and resource (list every trigger of a queue), specifies the ordering (ascending by id), and enumerates what is returned (name, actions, conditions, active flag). It also distinguishes itself from the near-identically named tracker_triggers_get by naming it as the single-item alternative.
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?
Explicitly routes the agent to ``triggers_get`` when a single trigger by id is needed, and explains the limit/pagination condition that governs bulk retrieval. It lacks an explicit 'when not to use' beyond the single-item case, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_triggers_updateEdit Tracker queue triggerAIdempotent
Edit a queue trigger; only the fields set in body are changed.
Get trigger_id from triggers_get / the queue settings. Pass version to guard
against concurrent edits (optimistic locking).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Fields to change; unset ones stay. | |
| version | No | Current version of the object (optimistic lock), from its get/list tool. | |
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. | |
| trigger_id | Yes | Numeric trigger id, from ``triggers_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (idempotentHint=true, destructiveHint=false, openWorldHint=true), so the bar is lower. The description still adds real value beyond them: partial-update semantics and optimistic-locking behavior via version. No return-value or permission details, but the mutation model is well disclosed.
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 short sentences, front-loaded with the core behavior and then the prerequisites. Every clause 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?
For a 4-param mutation tool with full schema coverage, no output schema, and safety annotations, the description covers the essentials: partial update semantics, ID sourcing, and concurrency control. It could note permissions or effects on unlisted fields but is otherwise 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%, so the baseline is 3. The description adds meaning beyond the schema by explaining the source of trigger_id and the concurrency purpose of version (optimistic locking), which the schema only labels generically as a lock field.
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?
States a specific verb and resource ('Edit a queue trigger') and immediately clarifies the PATCH semantics ('only the fields set in body are changed'). It is clear what the tool does, though it does not explicitly contrast with sibling writers like tracker_triggers_create.
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?
Provides clear preconditions: obtain trigger_id from triggers_get or the queue settings, and pass version to guard against concurrent edits. It gives no explicit when-not-to-use guidance or named alternatives, but the context needed to call it correctly is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_triggers_webhook_log_listList Tracker trigger webhook logsARead-onlyIdempotent
The execution log of a trigger's HTTP-request (Webhook) action, newest first.
Each record holds the outbound request and received response for one run. Only Webhook actions produce these; a trigger with no HTTP action returns an empty list.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (the API's default is 10, its maximum 100). | |
| date_to | No | Range end, YYYY-MM-DDThh:mm:ss.sss±hhmm. | |
| issue_id | No | Optional issue key/id to scope the logs to one issue. | |
| queue_id | Yes | Queue key (case-sensitive, e.g. DEV) or numeric queue id. | |
| date_from | No | Range start, YYYY-MM-DDThh:mm:ss.sss±hhmm. | |
| trigger_id | Yes | Numeric identifier of the trigger. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so safety is covered. The description adds real value beyond them: ordering (newest first), the per-record payload (outbound request plus received response), and the empty-list behavior for non-webhook triggers. No permissions or rate-limit notes, but the bar is lower 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?
Three short sentences, front-loaded with what the log is, followed by record contents and the empty-result caveat. Every sentence earns its place with no filler, though the third sentence is slightly defensive.
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 output schema, the description steps in to describe what each returned record holds (request and response for one run) and its ordering, which is what an agent needs. For a read-only listing tool with full param schema coverage, the remaining gap (no pagination/limit interaction note) is minor.
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 each parameter (limit, date_from/date_to, issue_id, queue_id, trigger_id) is documented in the schema itself. The description adds no syntax or format detail beyond that, so the 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 names the specific resource ('execution log of a trigger's HTTP-request (Webhook) action') and the operation (list, newest first), so an agent knows exactly what comes back. It stops short of naming or contrasting sibling tools like tracker_triggers_list or tracker_autoactions_logs_list, which would push it to 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?
It implies the context of use ('Only Webhook actions produce these; a trigger with no HTTP action returns an empty list'), which usefully heads off a confusing empty result. However, there is no explicit guidance on when to prefer this over other trigger/autoaction log tools, so usage remains 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.
tracker_users_getGet Tracker userARead-onlyIdempotent
Look up a single organisation user account by login or uid.
The account includes name, email and licence/dismissal status. Use this when you already know
one user; use users_list to browse or enumerate the whole directory. Pass
expand="groups" to include the user's groups.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Extra data to include in the response, e.g. groups. | |
| login_or_id | Yes | User login or numeric uid; for a digits-only login use login:<digits>. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds real value beyond that by disclosing the response contents (name, email, licence/dismissal status) and the expand behavior, though it says nothing about permissions or error cases.
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?
Three short sentences, front-loaded with purpose before the alternative-tool routing and the expand hint. No 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?
With no output schema, the description correctly compensates by listing returned fields, and it covers input format, disambiguation from the list sibling, and the optional expand parameter. Complete for a simple read 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 baseline is 3. The description echoes the login/uid lookup and gives a concrete value for expand ('groups') that the schema only hints at with 'e.g. groups', adding modest value over the structured data.
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?
States a precise verb and resource ('look up a single organisation user account') with explicit scope, and names the sibling it is not ('users_list') so the agent can distinguish it without opening either schema. Also enumerates the returned fields.
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?
Gives an explicit when-to-use condition ('when you already know one user') and names the alternative tool plus its purpose ('browse or enumerate the whole directory'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_users_listList Tracker usersARead-onlyIdempotent
All users registered in the organisation, sorted by ascending uid.
Auto-paginated via the relative id-cursor. Capped at the configured item cap unless limit
is given; use users_get instead when you already know the specific login or uid.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max users to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| expand | No | Extra data to include per user, e.g. groups. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), so the description's added value is the ordering guarantee, the id-cursor auto-pagination mechanism, and the item-cap behaviour. It does not mention permission requirements or what a truncated result looks like, but the disclosed traits go meaningfully beyond 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?
Three short sentences, front-loaded with the resource and ordering, then pagination/cap behaviour, then the alternative tool. No filler and nothing repeated unnecessarily.
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 list tool with no output schema, the description covers ordering, pagination, and cap semantics, and routes the agent elsewhere for single-user lookups. It stops short of describing return fields or the meaning of expand beyond the schema's 'e.g. groups', which is a minor 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?
Schema coverage is 100% and the schema itself already documents both limit (default cap) and expand. The description restates the limit/cap relationship without adding format or syntax detail, so it only marginally exceeds what the schema provides. 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?
States a specific verb+resource (list all organisation users) plus scope detail (sorted by ascending uid), and explicitly distinguishes itself from the sibling tracker_users_get. An agent can pick between the two without opening either schema.
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?
Names the alternative (users_get) and the exact condition that selects it (you already know the specific login or uid), and explains when to supply limit versus relying on the configured cap. Both routing decisions are explicit rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_workflows_actions_updateEdit Tracker workflow actionAIdempotent
Edit one action (transition) of a workflow step; only the fields set in body change.
Returns the whole workflow with its incremented version.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``workflows.edit_action``. The docs mark every field optional, but Tracker refuses an edit without ``name`` and ``target`` (422), so both are required; the other fields change only when set. | |
| status | Yes | Key of the step (status) the action leaves. | |
| version | Yes | Current version of the workflow (optimistic lock), from ``workflows_get``. | |
| action_id | Yes | Id of the action within that step. | |
| workflow_id | Yes | Workflow id, from ``workflows_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, non-destructive, open-world behavior, so the bar is lower. The description adds real value beyond them by disclosing partial-update semantics ('only the fields set in body change') and the return shape ('the whole workflow with its incremented version'), which is important because no output schema exists. It does not mention permission requirements or failure modes, keeping it from a 5.
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 short sentences, zero filler, with the scope of the edit front-loaded and the return behavior second. Nothing is wasted and no sentence is redundant.
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 mutation tool with a nested required body, 5 required parameters, no output schema and helpful annotations, the description covers scope and the return value, compensating for the absent output schema. Gaps remain around permissions and error/conflict behavior for the version optimistic lock, so it is strong but 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% and quite verbose, so the baseline is 3. The description's only semantic addition is that unset body fields are left unchanged, but that exact point is already stated inside the body schema ('the other fields change only when set'), so there is no net value beyond the structured data.
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 and resource: edit one action (transition) within a workflow step, which implicitly separates it from tracker_workflows_update (whole-workflow edit) and tracker_workflows_get. It is precise about the unit of edit ('one action') but never names a sibling or explicitly contrasts with workflows_update, so it falls short of a full 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?
There is no when-to-use / when-not-to-use guidance and no alternatives named. The reader can infer this is for modifying an existing action, but nothing tells the agent how this tool relates to tracker_workflows_update, workflows_delete, or the sibling action-level tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_workflows_createCreate Tracker workflowA
Create a workflow; returns it with its generated id and version.
Required: name, initialAction (name and target status) and steps (each a status
with its actions). Statuses are given as keys such as open and must exist; names are
{"ru": …, "en": …} objects.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``workflows.create`` (``POST /workflows``). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety and mutation profile is covered. The description adds that the created workflow is returned with a generated id and version, plus the precondition that referenced statuses exist, but says nothing about permissions required or side effects of an openWorld write.
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 tight sentences/paragraphs, front-loaded with the purpose and return before the structural requirements. No filler, though the required-field recital slightly overlaps the schema.
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 complex nested create with no output schema, the description supplies the required shape, the localization convention, and the status-existence precondition. It omits error/permission behavior, but the annotation set plus rich schema descriptions cover most remaining needs.
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, but the description adds navigational value over a deeply nested body: it flags the three required top-level fields, clarifies that initialAction carries "name and target status", that steps wrap a status plus its actions, and that names are {"ru":…, "en":…} objects. That summary genuinely helps an agent orient in the large 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 opens with a specific verb+resource ("Create a workflow") and even states what the call returns ("with its generated id and version"). It is unambiguously the create operation, but it never names the adjacent siblings (tracker_workflows_update, tracker_workflows_delete, tracker_workflows_list) to sharpen the distinction.
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?
It supplies a real precondition — statuses "must exist" — which is genuine usage guidance. However, it never states when to choose this over tracker_workflows_update or what to do on failure, so usage is only implied by the create verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_workflows_deleteDelete Tracker workflowBDestructive
Delete a workflow (irreversible). Returns an acknowledgement.
| Name | Required | Description | Default |
|---|---|---|---|
| workflow_id | Yes | Workflow id, from ``workflows_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description adds useful context beyond that by flagging the operation as "irreversible" and noting it returns an acknowledgement, though it omits permission requirements and any cascade effects on queues/boards referencing the workflow.
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 short clauses, front-loaded with the action and the most decision-relevant fact (irreversibility), with zero 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 single-parameter delete with annotations covering the safety profile and the description noting the return acknowledgement, the definition is largely complete. A brief note on permissions or downstream impact would make it fully self-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%, and workflow_id is documented in the schema with a source hint (``workflows_list``). The description adds nothing about the parameter, so the schema does the heavy lifting – baseline 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?
States a specific verb+resource ("Delete a workflow") that is unambiguous and clearly distinct from the sibling read/update tools (workflows_list, workflows_update). It does not explicitly name which sibling to use instead, so it stops short of 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?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as tracker_workflows_update or archive-style operations. The agent must infer that this is the tool for permanent removal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_workflows_getGet Tracker workflowARead-onlyIdempotent
One workflow with its steps, initial action, queue binding and version.
A step is a status with the transitions leaving it; version is needed to edit the workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| workflow_id | Yes | Workflow id, from ``workflows_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds value beyond that by explaining the shape of the return (steps are statuses with outgoing transitions) and the dependency that the returned version is required to perform an edit.
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?
Compact and front-loaded: it leads with what is returned, then clarifies the domain concepts. Every sentence carries information, though the embedded RST-style backticks are a minor noise cost.
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 output schema, the description correctly fills the gap by describing the returned fields (steps, initial action, queue binding, version), which is what an agent needs. Error cases and pagination are irrelevant for a single-resource fetch, so nothing critical is 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?
Schema coverage is 100% and there is only one parameter, whose description already says it comes from workflows_list. The prose adds no additional syntax, format, or sourcing detail, so this sits at the baseline for a fully documented single param.
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?
States a specific verb and resource ('Get Tracker workflow') and enriches it by enumerating the returned payload: steps, initial action, queue binding, and version. It does not explicitly distinguish itself from close siblings like tracker_workflows_list or tracker_workflows_for_queue, so an agent must infer that 'one workflow' means single-fetch by id.
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?
There is no explicit when-to-use or when-not statement, and no sibling is named as an alternative. The clause 'version is needed to edit the workflow' implicitly signals the retrieve-before-update use case, which is useful but not a full routing guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_workflows_listList Tracker workflowsARead-onlyIdempotent
Every workflow of the organization (deleted ones excluded) with its steps and actions.
A workflow is the status graph an issue type follows. Use workflows_get for one by id
and workflows_list_for_queue to see which workflow each issue type of a queue uses.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so safety is covered. The description adds that deleted workflows are excluded and that results include steps and actions, which is useful. However, for an open-world list with no output schema, it doesn't describe pagination, result size, or return shape.
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?
Three compact sentences, front-loaded with the result scope, then the domain definition, then the sibling routing. 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?
For a zero-param, no-output-schema list tool, the description covers scope and alternatives adequately. But as an open-world list with no output schema, it leaves pagination and result-size behavior unaddressed, which an agent may need.
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?
Zero parameters, so baseline 4 applies. The description adds meaning by noting the deletion filter and that steps/actions are embedded in the result.
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?
States a specific verb (List/all) and resource (every workflow of the organization), and explicitly scopes exclusions (deleted ones excluded). It also defines what a workflow is, distinguishing it from siblings.
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?
Explicitly routes to alternatives: 'Use workflows_get for one by id and workflows_list_for_queue to see which workflow each issue type of a queue uses.' Names the conditions that select each sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_workflows_list_for_queueList workflows of a Tracker queueBRead-onlyIdempotent
The workflows a queue uses: a map from workflow id to the issue types that follow it.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | Queue key (case-sensitive, e.g. TEST) or numeric queue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds one genuinely useful behavioral fact the annotations lack: the return is a map keyed by workflow id mapping to the issue types that follow each workflow. It says nothing about auth requirements or pagination, but for a simple read that is acceptable.
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?
One short sentence with zero filler that front-loads what the tool returns. Nothing redundant with the title or schema.
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 output schema, the description correctly compensates by describing the return structure, which is the one thing an agent could not get from the structured fields. For a one-parameter read-only list tool this is nearly sufficient; only the routing between it and the other tracker_workflows_* tools is left unstated.
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 single queue_id parameter is already documented with both accepted formats (case-sensitive key like TEST, or numeric id). The description adds no parameter-level meaning, so the 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?
States a specific resource and scope: 'the workflows a queue uses', distinguishing it from the sibling tracker_workflows_list (global) and tracker_workflows_get. It also explains the shape of the result (map from workflow id to issue types). The verb is implied by the name rather than stated, but the resource is unmistakable.
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 when-to-use guidance, no mention of alternatives such as tracker_workflows_list for a global listing or tracker_workflows_get for a single workflow. The agent must infer the queue-scoped use case from the name alone; nothing states prerequisites or when this is the right call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_workflows_updateEdit Tracker workflowAIdempotent
Edit a workflow.
Only the fields set in body change, and a given steps list replaces the whole step
list. Returns the workflow with its incremented version.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``workflows.edit`` (``PATCH /workflows/{id}``). Only the fields that are set change; a given ``steps`` list replaces the whole step list. | |
| version | Yes | Current version of the workflow (optimistic lock), from ``workflows_get``. | |
| workflow_id | Yes | Workflow id, from ``workflows_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (not read-only, idempotent, non-destructive), so the bar is lower. The description still adds real behavioral content: merge semantics for body, wholesale replacement for steps, and the fact that the response is the workflow with an incremented version.
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?
Three short sentences, front-loaded with the action, then the two facts an agent most needs before calling. No filler, though the return-value line could be seen as slightly outside the core 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?
For a mutation tool with a large nested schema, no output schema, and optimistic locking, the description covers the essentials: partial update, steps replacement, and the returned version. It omits concurrency-failure behavior and permissions requirements, which would round it out.
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 restates the merge/replace semantics already written in the body property description, and does not add format or constraint detail (e.g. what version mismatch yields) 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?
States a specific verb and resource ('Edit a workflow') and adds the concrete mutation semantics (partial field update, steps list replacement). It does not differentiate itself from the near-name sibling tracker_workflows_update_action, which an agent could plausibly confuse with this tool.
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 when-to-use guidance, no prerequisites, and no routing versus tracker_workflows_get / tracker_workflows_create / tracker_workflows_update_action. The only indirect help is that 'version' is described as coming from workflows_get, which implies a read-then-edit flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_worklog_createAdd Tracker worklog recordB
Log spent time on a Tracker issue; returns the created worklog record.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /issues/{key}/worklog`` (log time spent). | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=true), so the safety burden is largely covered. The description adds only that a worklog record is returned, and says nothing about permission requirements or duplicate-entry behavior for a non-idempotent write.
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 sentence that front-loads the action and resource with zero filler. Nothing is repeated and nothing needs trimming.
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 non-idempotent create with a nested request body and no output schema, the description covers the bare minimum. The return value is mentioned but the routing context (why this instead of update/import) and any preconditions are absent.
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 field (issue_key, start, duration, comment) is documented in the schema itself, so the baseline of 3 applies. The description adds no format, constraint, or example information beyond 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?
States a specific verb and resource ('Log spent time on a Tracker issue') and notes the returned artifact, which clearly separates it from the read/update/delete worklog siblings. It does not explicitly name those siblings, so it falls just short of the top mark.
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?
There is no guidance on when to use this tool versus tracker_worklog_update, tracker_worklog_import, or other ways of recording time. The agent must infer usage entirely from the name and the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_worklog_deleteDelete Tracker worklog recordADestructive
Permanently delete a worklog record from a Tracker issue (irreversible).
Get record_id from worklog_list. Returns an acknowledgement on success.
| Name | Required | Description | Default |
|---|---|---|---|
| issue_key | Yes | Issue key, e.g. QUEUE-123. | |
| record_id | Yes | Worklog record id, from ``worklog_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is largely covered. The description adds meaningful context beyond that: the deletion is permanent/irreversible and the call returns an acknowledgement on success, which reduces uncertainty about what happens after invocation.
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 short sentences, front-loaded with the destructive nature of the call and then the prerequisite. Every clause earns its place with no 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 two-parameter delete with full schema coverage, complete annotations, and no output schema, the description covers purpose, irreversibility, prerequisite, and return behavior. It could add auth/permission requirements, but nothing critical is missing for correct 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% (both `issue_key` and `record_id` are documented in the schema), so the baseline is 3. The description only restates that `record_id` comes from `worklog_list`, adding a small amount of provenance info but no new format or constraint details.
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?
States a specific verb (delete), resource (worklog record), and scope (from a Tracker issue), plus the irreversibility qualifier. It also names the sibling tool `worklog_list` as the source of the id, so an agent can tell it apart from read-side worklog 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 the workflow by telling the agent where to obtain `record_id` (`worklog_list`), which is useful prerequisite guidance. However, it gives no explicit when-to-use vs. when-not guidance (e.g., use `worklog_update` to amend instead of deleting) among the many sibling delete/update tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_worklog_importImport Tracker worklog recordA
Import a worklog record preserving its original author and timestamps (admin-only).
Returns the imported record(s) — the endpoint answers with a JSON array.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed body for ``POST /issues/{key}/worklogs/_import`` — import one worklog with history. | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the mutation profile (readOnly=false, idempotent=false, destructive=false), so the bar is lower. The description still adds value beyond them: the admin-only authorization requirement, the side effect of retaining original authorship timestamps, and the note that the endpoint responds with a JSON array (important because no output schema 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 tight sentences with zero filler. The differentiating behavior and the admin-only constraint are front-loaded, and the return-shape note is appended economically.
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 2-parameter nested-body tool with no output schema, the description covers the essentials: what it does, the authorization gate, and the response shape (JSON array). It lacks pagination/error or duplicate-handling notes, but nothing critical to a correct invocation is 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?
Schema description coverage is 100% and every body field (start, duration, createdAt, createdBy, comment) is individually documented, so the baseline of 3 applies. The description adds no parameter-level meaning beyond the schema, but none is needed.
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 gives a specific verb+resource ('Import a worklog record') and adds a differentiating qualifier — it preserves the original author and timestamps — which separates it from the sibling tracker_worklog_create. It stops short of explicitly naming that sibling, so it is clear but not fully sibling-differentiated.
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?
It states the administrative prerequisite ('admin-only'), which is real usage guidance. However, it never states when to choose this over tracker_worklog_create or tracker_worklog_update; the 'preserve original author/timestamps' phrasing only implies the migration use case rather than saying it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_worklog_listList Tracker worklogARead-onlyIdempotent
All time-tracking entries logged against a single Tracker issue.
Auto-paginated via the relative id-cursor. Capped at the configured item cap unless limit
is given.
Scoped to one issue by issue_key. To search worklog across the whole org (by author and/or a
creation-time range) use worklog_search instead.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description nonetheless adds real behavior: auto-pagination via a relative id-cursor, and that results are capped by the configured item cap unless limit is supplied. Ordering and any permission requirements are not stated, so it falls short of a 5.
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?
Three short paragraphs, front-loaded with purpose, then behavior, then routing. No filler, no repetition of the title, and every sentence carries distinct 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 two-param, no-output-schema read tool this covers purpose, scope, pagination and the alternative route. What remains unstated is result ordering and whether page traversal is transparent to the caller, which matters slightly given the auto-pagination claim.
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 both parameters are documented there, so the baseline is 3. The description restates the limit/cap relationship (already in the schema) and reinforces that issue_key scopes to a single issue, but adds no format, ordering, or cursor semantics beyond structured data.
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?
States a specific verb and resource ("All time-tracking entries logged against a single Tracker issue") plus the scoping dimension, and explicitly names the sibling that handles the other scope. An agent can distinguish it from tracker_worklog_search and tracker_worklog_list_global without opening any schema.
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?
Gives both the when-to-use condition (one issue, keyed by issue_key) and the when-not condition with the named alternative ("To search worklog across the whole org ... use worklog_search instead"). Routing is explicit and requires no inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_worklog_list_globalList Tracker org-wide worklogARead-onlyIdempotent
Org-wide worklog entries via GET /worklog query filters (author, creation time).
A lighter sibling of worklog_search; every filter is optional.
| Name | Required | Description | Default |
|---|---|---|---|
| created_by | No | Login or id of the record author to filter by. | |
| created_to | No | End of the creation-time range (``YYYY-MM-DDThh:mm:ss``). | |
| created_from | No | Start of the creation-time range (``YYYY-MM-DDThh:mm:ss``). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds only that filters are optional and the endpoint shape; it says nothing about result size, pagination, or org-wide scope limits.
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 short sentences, front-loaded with the resource and endpoint, with zero filler. The sibling relationship is placed second where it belongs.
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 three-optional-param list tool with fully documented schema and no output schema, the definition is adequate, but it leaves the worklog_search vs worklog_list vs this tool decision under-specified, which matters given the dense tracker_worklog_* sibling cluster.
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 three parameters (created_by, created_from, created_to) are already fully documented with formats and defaults. The description merely names 'author, creation time' as filter categories, adding no syntax or constraint details 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?
States a specific verb and resource ('Org-wide worklog entries'), plus the backing endpoint GET /worklog, and names the sibling it relates to (worklog_search). It distinguishes itself from siblings, though 'lighter sibling' leaves the exact scope boundary somewhat vague.
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?
Notes that 'every filter is optional' and that this is a lighter alternative to worklog_search, which implies broad unfiltered listing. However it never states when to pick this tool over worklog_search or worklog_list, so the agent must infer the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_worklog_searchSearch Tracker worklogARead-onlyIdempotent
Org-wide worklog entries filtered by author and/or a creation-time range.
Unlike worklog_list (one issue), this searches every issue's worklog. body.createdBy
scopes to a user and body.createdAt to a time window; both are optional. E.g.
{"body": {"createdBy": "ann", "createdAt": {"from": "2026-01-01T00:00:00"}}}.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /worklog/_search``: by author, by creation time, or both. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and idempotentHint=true, so safety and idempotency are covered. The description adds that the search spans every issue and is filter-driven, but says nothing about pagination, result caps, or required permissions on org-wide data. Adequate but not rich beyond 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?
Three tight sentences: purpose and scope first, sibling differentiation second, parameter semantics plus a worked example last. No filler, and the most important constraint (org-wide vs single issue) is 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?
For a read-only filter search with no output schema, the description covers what is filtered and how, plus the scope distinction. It leaves return shape and pagination unstated, but the rubric excuses return-value documentation when no output schema exists, so only minor gaps remain.
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 earns a notch more by naming the nested fields (``body.createdBy``, ``body.createdAt``), confirming both are optional, and giving a concrete request-body example that shows how they combine.
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?
States a specific verb and resource (search worklog entries) plus the scope (org-wide, every issue), and explicitly contrasts with the sibling ``worklog_list`` which covers a single issue. An agent can identify the tool's purpose without opening the schema.
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?
Explicitly contrasts with ``worklog_list`` (one issue) and states the filters are optional, giving clear selection context. It does not, however, distinguish itself from the similarly-named sibling ``tracker_worklog_list_global``, which could cause ambiguity between the two global search/list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_worklog_updateEdit Tracker worklog recordAIdempotent
Edit a worklog record on a Tracker issue (duration and/or comment).
Get record_id from worklog_list. Returns the updated record.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``PATCH /issues/{key}/worklog/{record_id}`` (edit an entry). | |
| issue_key | Yes | Issue key, e.g. QUEUE-123. | |
| record_id | Yes | Worklog record id, from ``worklog_list``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, covering the safety and idempotency profile. The description adds that the operation edits duration and/or comment and returns the updated record, which is useful since no output schema exists, but it does not mention auth requirements, permissions, or rate limits.
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 short sentences with no wasted words. The purpose is front-loaded, followed by the prerequisite 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?
The description covers what the tool does, how to obtain the record_id, and that it returns the updated record. Given the rich schema and annotations, this is nearly complete, though it could say more about the response shape or permissions needed for editing.
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 issue_key, record_id, and the body fields. The description's mention of 'duration and/or comment' slightly clarifies that either or both fields may be updated, but it largely repeats 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 states a specific verb ('Edit') and resource ('a worklog record on a Tracker issue'), making the tool's purpose immediately clear. It also names the editable fields (duration and/or comment). It does not explicitly differentiate itself from siblings like tracker_worklog_create or tracker_worklog_delete, but the action is 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 gives a prerequisite (get record_id from worklog_list) but does not state when to use this tool versus alternatives such as worklog_create or worklog_delete. Usage is implied by the verb 'Edit', but there are no explicit inclusion/exclusion rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_access_clearClear Wiki page accessesADestructive
Revoke every personal access on a wiki page except the owner's.
Everyone but the owner falls back to the page's access policy. Irreversible: the revoked entries are not kept.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Numeric id of the page. | |
| prevent_selflock | No | Refuse the change if it would leave you without read access or the right to change accesses. Set it unless you mean to lock yourself out. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: the owner is preserved, the resulting state is policy fallback, and the removal is irreversible because entries are not retained. It stops short of permissions/auth requirements, but for a destructive bulk-revoke that is a modest gap.
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?
Three short sentences, zero filler, with the scope and the irreversibility warning front-loaded where a cautious agent will see them first.
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?
No output schema exists, so the description carries the burden of explaining the resulting access state, which it does. Combined with annotations and a fully documented two-parameter schema, an agent has nearly everything needed; only auth/permission prerequisites are absent.
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 schema itself explains prevent_selflock in useful detail ('Refuse the change if it would leave you without read access...'). The description adds nothing about either parameter, which is acceptable but not additive, so the 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?
States a specific verb and resource ('Revoke every personal access on a wiki page') plus a precise scope ('except the owner's'). This distinguishes it from the nearby single-entry siblings wiki_access_delete and wiki_access_update, which an agent can now tell apart without opening schemas.
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 bulk-clear use case and explains the resulting state ('everyone but the owner falls back to the page's access policy'), but it never states when to prefer this over wiki_access_delete or wiki_access_update, nor any prerequisites for invoking it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_access_createGrant Wiki page accessA
Grant a user or a group a role on a wiki page; returns the new access entry.
A user who already holds a personal access is refused: change it with access_update.
Read the current accesses with pages_get_by_id and
fields="access_policy,access_lists".
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The grant: exactly one of ``user`` (uid / cloud_uid) and ``group`` (src + id), the ``role``, and optionally ``inheritance``. | |
| page_id | Yes | Numeric id of the page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, which covers the mutation profile, so the description is not required to restate that. It goes beyond them by disclosing a concrete failure mode (refusal when a personal access already exists) and the fact that a new access entry is returned. No mention of permission requirements or rate limits, so a 4 rather than 5.
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?
Three short sentences, front-loaded with the core action, then the failure/alternative routing, then the read-before-write hint. No filler; every clause carries operational 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 nested-body mutation with no output schema, the description covers the mutation semantics, the return value, a refusal case, and the alternatives needed to route correctly. It is nearly complete; missing only permission/auth prerequisites, which the openWorldHint annotation gestures at but does not specify.
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%, including nested details for uid/cloud_uid, group src/id, role enum, and inheritance, so the baseline is 3. The description's 'a user or a group a role' lightly echoes the exactly-one-of constraint already stated in the schema and adds no syntax or format information beyond 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?
States a specific verb (Grant), resource (a role on a wiki page), and the outcome (returns the new access entry). An agent can distinguish it from wiki_access_update and wiki_access_delete without opening any schema.
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?
Explicitly names the failed-over alternative ('A user who already holds a personal access is refused: change it with access_update') and tells the agent how to inspect current state (access_update / pages_get_by_id with access field selection). This is when-to-use, when-not, and alternatives in one compact block.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_access_deleteRevoke Wiki page accessADestructive
Revoke one access entry on a wiki page — the holder loses that grant at once.
The page owner's own entry cannot be revoked.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Numeric id of the page. | |
| access_id | Yes | Id of the access entry, from the page's ``access_lists``. | |
| prevent_selflock | No | Refuse the change if it would leave you without read access or the right to change accesses. Set it unless you mean to lock yourself out. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered. The description still adds real value by stating the revocation is immediate and that the owner's entry is protected, both of which are behavioral facts not in 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?
Two short sentences, effect first, constraint second. Every clause earns its place and nothing is padding.
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 destructive single-entry revocation with full annotation coverage and a well-documented schema, the description supplies the key behavioral facts an agent needs. The only gap is the absence of explicit routing to sibling access tools, which the annotations and schema cannot supply.
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%, including a thorough description of prevent_selflock and the access_lists source of access_id, so the schema carries the parameter burden. The description adds no syntax or format detail beyond that, which matches the baseline 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?
States a specific verb and resource ('Revoke one access entry on a wiki page') and immediately clarifies the effect ('the holder loses that grant at once'). This clearly distinguishes it from sibling tools like wiki_access_create, wiki_access_update, and wiki_access_clear.
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?
Gives one useful usage constraint — the page owner's own entry cannot be revoked — which guides the caller. However, it never names or contrasts with the obvious alternatives (wiki_access_update for modifying a grant, wiki_access_clear for wiping all entries), so the when-to-use-this-vs-that guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_access_updateUpdate Wiki page accessAIdempotent
Change the role or reach of one access entry on a wiki page.
The page owner's own entry cannot be changed.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The new ``role`` and/or ``inheritance`` (one at least). | |
| page_id | Yes | Numeric id of the page. | |
| access_id | Yes | Id of the access entry, from the page's ``access_lists``. | |
| prevent_selflock | No | Refuse the change if it would leave you without read access or the right to change accesses. Set it unless you mean to lock yourself out. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it non-read-only, idempotent, and non-destructive, so the safety profile is covered externally. The description adds one behavioral rule not present in the annotations (the owner's entry is immutable), but says nothing about partial-update behavior, reversibility, or authorization needs.
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 short sentences, front-loaded with the core action and followed immediately by the key constraint. Zero filler; every sentence carries 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 mutation tool with full parameter documentation and annotations covering the safety profile, the description supplies the essential additional rule. It stops short of describing partial-update semantics or the response shape (no output schema exists), leaving a small 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?
Schema coverage is 100%, so the schema already documents all four parameters in depth, including the nested body fields and prevent_selflock. The phrase 'role or reach' loosely maps to the body's role/inheritance fields but adds no format or semantics 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?
Names a specific verb and resource ('Change the role or reach of one access entry on a wiki page') and scopes it to a single entry, which separates it from bulk operations like wiki_access_clear. It does not, however, explicitly contrast itself with wiki_access_create or wiki_access_delete, so the differentiation rests mostly on the name.
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?
Provides one exclusion ('the page owner's own entry cannot be changed') but no positive guidance on when to prefer this over wiki_access_create/delete, nor any prerequisites such as required permissions. Usage is implied by the update verb rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_attachments_attachAttach uploaded files to Wiki pageA
Attach file(s) from finished upload sessions to a wiki page.
The final step of the upload pipeline: create the session (uploadsessions_create),
send the bytes (uploadsessions_parts_upload), close it (uploadsessions_finish),
then attach here. For one small file, attachments_upload runs the whole pipeline in
a single call. Returns the newly-attached files.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Numeric id of the page to attach to. | |
| session_ids | Yes | ``session_id`` of each FINISHED upload session to attach. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it is not read-only, is open-world, is not idempotent, and is not destructive. The description adds useful behavioral context beyond that: the attachment step requires finished sessions and returns the newly-attached files. It does not cover duplicate-attachment behavior or failure modes, so it is strong but not exhaustive.
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 short and front-loaded: it states the action first, then the pipeline context, then the alternative and return value. Every sentence adds useful routing or prerequisite information without 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 2-parameter mutation tool with full schema coverage, rich annotations, and no output schema, the description supplies the key missing context: final-step position, prerequisite finished sessions, alternative tool, and return value. Remaining gaps, such as duplicate handling and error behavior, are minor.
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 both page_id and session_ids. The description adds little parameter-level detail beyond reinforcing that session_ids must be finished sessions, which the schema description also states. Baseline 3 is appropriate when the schema carries 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?
The description states a specific verb and resource: 'Attach file(s) from finished upload sessions to a wiki page.' It clearly positions the tool as the final step in the upload pipeline and distinguishes it from the single-call alternative, attachments_upload.
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?
It gives explicit when-to-use context by naming the prior steps (uploadsessions_create, uploadsessions_parts_upload, uploadsessions_finish) and an alternative for small files: 'For one small file, attachments_upload runs the whole pipeline in a single call.' This is direct routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_attachments_deleteDelete Wiki attachmentADestructive
Delete an attachment from a wiki page — irreversible (no recovery token).
The API answers 204 No Content; a typed acknowledgement is returned instead. Find
file_id with attachments_list and double-check it before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | Numeric id of the attachment to delete. | |
| page_id | Yes | Numeric id of the page the file is attached to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds the crucial detail that deletion is irreversible with no recovery token, plus the 204 No Content response and typed acknowledgement. This goes beyond the annotations meaningfully. It doesn't cover auth or rate-limit behavior, so not a 5.
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?
Three short sentences, front-loaded with the irreversible warning, then the response shape, then the lookup hint. Each sentence carries information. Slightly dense spacing but no 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 destructive 2-param tool with no output schema, the description covers the irreversibility, the response format, and how to obtain the id. It lacks auth/permission expectations, which would round it out, but an agent has what it needs to call it safely.
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 both file_id and page_id are already documented. The description reinforces that file_id should be validated and points to where to obtain it, but adds no syntax or format detail beyond the schema. 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?
States a specific verb (Delete) and resource (attachment from a wiki page), which is unambiguous against siblings like wiki_attachments_list and wiki_attachments_get. It does not explicitly name those siblings, so it stops short of full disambiguation.
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?
Gives clear usage context: find file_id with attachments_list and double-check before calling. That is genuine precondition guidance. It doesn't state when not to use this tool or name alternatives for removal, but the lookup-and-verify workflow is concrete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_attachments_getGet Wiki attachmentARead-onlyIdempotent
Metadata of one attachment (GET /pages/{id}/attachments/{file_id}).
Name, size, MIME type, download URL, whether a preview exists and the virus-check status.
Yandex does not document this operation (it is in the live OpenAPI only) and may change it.
Fetching the bytes (download, preview) is CLI/SDK-only.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | Numeric id of the attachment. | |
| page_id | Yes | Numeric id of the page the file is attached to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description adds genuine beyond-schema context: the exact return fields (name, size, MIME type, download URL, preview flag, virus-check status) and a stability warning that Yandex does not document this operation and may change 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?
Purpose is front-loaded in the first sentence, followed by the return fields, the stability caveat, and the byte-fetch boundary. Four tight sentences with no filler; every line carries information an agent needs.
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 output schema, the description compensates by enumerating the returned fields, and it flags the undocumented/volatile nature of the operation plus the metadata-only limitation. For a two-param single-resource get, nothing an agent needs to call it correctly is 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?
Schema description coverage is 100% and both parameters are documented there, so the baseline is 3. The description's endpoint template (GET /pages/{id}/attachments/{file_id}) loosely maps page_id and file_id to their roles but adds no syntax or format 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?
States a precise verb+resource ('Metadata of one attachment') and even names the underlying REST endpoint, making it unmistakably the singular counterpart to wiki_attachments_list. An agent can distinguish it from attach/delete/upload siblings without opening any schema.
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 establishes a clear scope boundary by stating that fetching the actual bytes ('download', 'preview') is CLI/SDK-only, so the agent knows this tool yields metadata only. It does not, however, explicitly route the agent to wiki_attachments_list for enumeration or name other alternatives, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_attachments_listList Wiki attachmentsARead-onlyIdempotent
Attachments (name, size, mime type) on a page id, auto-paginated (drains next_cursor).
Capped at the configured item cap unless limit is given. This is the list surface;
downloading an attachment's bytes is CLI/SDK-only (binary blobs are not an MCP payload).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max attachments to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| page_id | Yes | Numeric page id, from ``pages_get_meta`` or a page ref. | |
| order_by | No | Sort field. | |
| order_direction | No | Sort direction for ``order_by``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/open-world, but the description adds substantive behavior beyond them: results are auto-paginated and drain next_cursor, and results are capped at the configured item cap unless limit is supplied. That pagination and truncation behavior is exactly the kind of context an agent needs when calling a list 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?
Three short sentences, each earning its place: what is returned, how pagination/cap behaves, and where the tool's scope ends. The most important constraint (cap/pagination) is front-loaded rather than buried.
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 output schema, the description compensates by naming the returned fields, and it covers pagination, cap behavior, and the binary-download boundary. Remaining gaps (error behavior, default sort semantics) are minor and largely carried by the schema.
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 four parameters (limit, page_id, order_by, order_direction) are already documented, giving a baseline of 3. The description only reinforces the limit-vs-cap relationship and adds no new syntax or format 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?
States a specific verb+resource (list attachments on a page id) and enumerates the returned fields (name, size, mime type). It also draws the boundary against the download/get surface, so an agent can distinguish this tool from the attachment siblings without opening schemas.
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?
Explicitly frames itself as 'the list surface' and tells the agent that retrieving attachment bytes is CLI/SDK-only, which is actionable guidance about what this tool cannot do. It does not, however, name a sibling tool or state a condition for choosing it over e.g. wiki_attachments_get.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_attachments_uploadUpload file to Wiki pageA
Upload one small file and attach it to a wiki page in a single call.
Runs the whole pipeline end to end: opens an upload session sized to data, PUTs the
bytes as a single part, finishes the session, and attaches it to the page. Small-file
path — for large files drive uploadsessions_create / uploadsessions_parts_upload
(chunked) / uploadsessions_finish + attachments_attach yourself. Returns the
newly-attached files.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | The file's bytes, base64-encoded. | |
| page_id | Yes | Numeric id of the page to attach the file to. | |
| file_name | Yes | Name to give the uploaded file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write, non-idempotent, non-destructive and open-world, so the bar is lower; the description still adds useful procedural detail by enumerating the internal pipeline (session creation sized to data, single-part PUT, finish, attach) and stating the return value. It does not say whether repeated calls create duplicate attachments or what the size ceiling for 'small' is.
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?
Front-loads the one-call small-file scope in the first sentence, then the pipeline mechanics, then the escape hatch to the chunked path. Nothing is padded and every sentence carries distinct 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?
With no output schema, the description correctly states the return ('the newly-attached files'), and it covers the split between small and chunked uploads. The remaining gap is the unspecified limit defining 'small', which an agent would need to judge whether this tool is appropriate.
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 three parameters (data as base64 bytes, page_id, file_name) are already documented; the description only adds that the session is sized to `data`, which is marginal extra meaning. 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?
States a specific verb and resource ('Upload one small file and attach it to a wiki page') and explicitly scopes it as the single-call, small-file path, which cleanly separates it from the chunked upload siblings it names.
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?
Gives an explicit when-to-use condition ('small file', 'single call') and an explicit when-not-to-use with the exact alternative tool chain for large files (uploadsessions_create / uploadsessions_parts_upload / uploadsessions_finish + attachments_attach). The routing decision is fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_comments_createCreate Wiki commentA
Add a comment (or a threaded reply) to a wiki page.
Pass body.parent_id to reply to an existing comment — find ids with
comments_list. Returns the created comment with its numeric id.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The comment: required ``body`` text plus optional placement — ``inline_text`` (pin to a page fragment), ``parent_id`` (reply), ``thread_id``. | |
| page_id | Yes | Numeric id of the page to comment on. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-destructive, non-idempotent write with open-world access. The description adds that a created comment with numeric id is returned, which is useful for chaining, but it does not add much beyond the annotation-covered 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?
Two sentences with zero waste. The main action is front-loaded, followed by a focused parent_id/threaded-reply note. Nothing is redundant or meandering.
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 nested write body, no output schema, and full schema coverage, the description covers purpose, threaded reply mechanics, and the return id. It omits inline-comment placement details, but those are fully described in the schema.
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 repeats the parent_id reply behavior but adds no new syntax or format details for inline_text, thread_id, or body. Baseline 3 is appropriate when the schema does the heavy lifting.
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 gives a specific verb and resource: 'Add a comment (or a threaded reply) to a wiki page.' It distinguishes this from read/delete siblings and points to the relevant lookup tool for parent ids. An agent can tell what it does without opening the schema.
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?
It clearly scopes the tool to wiki pages and explains how to create a threaded reply, including where to find parent ids. There is no explicit when-not guidance or comparison to tracker-comment siblings, but the context is clear enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_comments_deleteDelete Wiki commentADestructive
Delete a comment from a wiki page — irreversible (no recovery token).
Returns the page's remaining comments_count. Verify the target with
comments_list / comments_thread_list first: deleting a parent orphans its
replies' threading.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Numeric id of the page the comment lives on. | |
| comment_id | Yes | Numeric id of the comment to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses irreversibility ("no recovery token"), states the return value (remaining comments_count), and warns that deleting a parent orphans its replies' threading. The destructive/irreversible profile is confirmed and enriched rather than merely repeated.
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?
Three compact sentences, front-loaded with the destructive warning, then return value, then the verification prerequisite. Every sentence earns its place and none is redundant.
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?
There is no output schema, and the description compensates by stating the return value explicitly. For a two-parameter destructive tool, the irreversible warning, prerequisite check, and threading side effect make it complete for correct 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% and both parameters are fully documented in the schema (page_id, comment_id as numeric ids). The description adds nothing about parameter format or constraints, so baseline 3 applies — the schema does the heavy lifting.
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?
States a specific verb and resource ("Delete a comment from a wiki page") with the exact scope of the operation, and it is trivially distinguishable from siblings like wiki_comments_create, wiki_comments_list, and wiki_comments_thread_list. No ambiguity about what is being deleted.
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?
Explicitly instructs the agent to verify the target with comments_list / comments_thread_list before deleting, which is real routing guidance to sibling read tools. It stops short of stating when NOT to use it or naming an alternative deletion path, so it is clear context rather than full when/when-not guidance. (Minor: it abbreviates sibling names without the wiki_ prefix.)
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_comments_listList Wiki commentsARead-onlyIdempotent
Comments on a page id, auto-paginated (drains the next_cursor internally).
Capped at the configured item cap unless limit is given. Pair with
pages_get_meta (its attributes.comments_count tells you how many exist).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max comments to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| page_id | Yes | Numeric page id, from ``pages_get_meta`` or a page ref. | |
| order_by | No | Sort field: ``created_at``. | |
| status_filter | No | Keep only the comments in this state. | |
| order_direction | No | Sort direction for ``order_by``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description adds real behavioral context beyond that: it is auto-paginated and drains next_cursor internally, and results are capped at the configured item cap unless limit is passed.
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 tightly written sentences with zero filler; the core purpose and the pagination/cap behavior are front-loaded before the optional pairing hint.
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 list tool with no output schema, the description covers purpose, auto-pagination, and result capping adequately. Non-essential gaps remain (return field shape, ordering defaults), but nothing required to invoke it correctly is 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?
Schema coverage is 100%, so all five parameters are documented in the schema itself, which sets the baseline at 3. The description echoes the limit-vs-cap semantics (YCLI__HTTP__MAX_ITEMS) but adds no new meaning for order_by, order_direction, or status_filter.
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?
States a specific verb and resource ('Comments on a page id'), so the agent knows it retrieves comments scoped to a page. However, it does not differentiate itself from the sibling wiki_comments_thread_list, leaving ambiguity about which comment-listing tool to pick.
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?
It offers a useful pairing tip (use pages_get_meta to learn the total comment count) and explains the limit-vs-cap behavior. It stops short of saying when to choose this over the thread-oriented siblings or naming an alternative, so usage 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.
wiki_comments_thread_getGet Wiki comment thread from the serverARead-onlyIdempotent
The thread of a comment as the Wiki server returns it — an empty list for every real thread.
Checked live on 2026-10-02: the server's /thread endpoint has no replies to give, for a
root comment or a reply, plain or inline. Use comments_thread_list, which rebuilds the
thread from the page's comment list.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max comments (omitted: the configured cap). | |
| page_id | Yes | Numeric page id the comment lives on. | |
| comment_id | Yes | Comment id whose server-side thread to fetch. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), but the description adds a genuinely non-obvious behavioral fact: the server's /thread endpoint returns no replies in any case, verified live on a specific date. That is high-value disclosure an agent cannot get from annotations or 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?
Front-loaded with the key outcome, then the corroborating evidence and the redirect. Three short sentences with almost no waste; the 'plain or inline' clause is slightly redundant but harmless.
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 output schema, the description still tells the agent what to expect back (an empty list) and where to go instead, which is everything needed to avoid a wasted call. Complete for this tool's purpose.
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 page_id, comment_id and limit are already documented in the schema. The description adds no parameter-level detail (e.g. how limit interacts with the always-empty result), so the 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 states a specific verb and resource — fetching a comment's thread as the Wiki server returns it — and explicitly names the sibling it competes with (comments_thread_list). The one caveat is that the stated purpose is essentially negative ('an empty list for every real thread'), so an agent learns what the tool nominally does rather than a useful capability.
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?
It gives an explicit directive: 'Use comments_thread_list, which rebuilds the thread from the page's comment list.' It even names the alternative and explains why it is preferable, which is exactly the routing information an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_comments_thread_listList Wiki comment threadARead-onlyIdempotent
A comment and its replies, reconstructed from the page's comment list.
The Wiki /thread endpoint (comments_thread_get) is dead (returns no replies), so this
fetches every comment on the page and chains parent_id from the target: the comment comes
first, then its descendants in depth-first order. Capped at the configured item cap unless
limit is given. Use comments_list first to discover a root comment id, then this to
read its thread.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max replies (omitted: the configured cap). | |
| page_id | Yes | Numeric page id the comment lives on. | |
| comment_id | Yes | Root comment id whose reply thread to fetch. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld, and the description goes further by disclosing the internal reconstruction mechanism, result ordering, and the cap behavior. The only soft spot is the limit semantics, which the description frames as an 'item cap' while the schema calls it 'Max replies', leaving minor ambiguity.
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?
Front-loaded with the return shape, then the rationale and the usage routing. Every sentence carries information, though the middle mechanism sentence is dense enough to slow scanning slightly.
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 full annotations and no output schema, the description covers purpose, ordering, cap behavior, and the discovery prerequisite, which is nearly everything an agent needs. Only the exact interaction between limit and the cap remains slightly underspecified.
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 schema already documents page_id, comment_id, and limit. The description reinforces that comment_id is a root id and that limit overrides the configured cap, but adds little syntactic detail beyond the schema. 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?
States a specific verb and resource (list a Wiki comment thread) and precisely what it returns: a comment plus its replies chained by parent_id in depth-first order. It distinguishes itself from both siblings by name, noting comments_thread_get is dead and comments_list is the discovery step.
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?
Gives an explicit workflow: 'Use comments_list first to discover a root comment id, then this to read its thread.' It also explains why the obvious alternative (comments_thread_get) should not be used because the endpoint is dead, leaving no ambiguity about which tool to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_grids_cells_updateUpdate Wiki grid cellsAIdempotent
Set the value of individual grid cells (addressed by row id + column slug).
Repeating the same call sets the same values (idempotent). Returns the updated cells
plus the grid's new revision.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ``cells`` (each: ``row_id`` + ``column_slug`` + ``value``) + the current ``revision``. | |
| grid_id | Yes | The grid's permanent UUID4 id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false and openWorldHint=true, so the description's restatement of idempotency earns little. What it does add beyond structured data is the return payload (updated cells plus the grid's new revision), which matters because there is no output schema. It omits concurrency behavior around the revision field.
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 tight sentences with zero filler; the value/set operation is front-loaded and the idempotency/return note follows. Every clause contributes.
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 output schema, the description usefully covers the return shape and confirms idempotency for a mutation tool. It does not explain what happens when the supplied revision is stale, which is the one behavioral detail an agent editing grid cells would likely need.
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 grid_id, row_id, column_slug, value and revision. The description only restates the row id + column slug addressing and adds no format or constraint detail beyond that, so the 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?
States a concrete verb+resource (set cell values) and specifies the addressing scheme (row id + column slug), which separates it from the coarse-grained wiki_grids_update and wiki_grids_rows_update siblings. It stops short of naming those alternatives, so an agent still has to open schemas to distinguish cell-level from row-level edits.
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 only implied by the word 'individual' — the caller is expected to infer this is for single-cell edits rather than wholesale grid updates. There is no explicit when-to-use vs wiki_grids_rows_update or wiki_grids_update, and no prerequisite or conflict guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_grids_cloneClone Wiki gridA
Copy a grid onto another page (POST /grids/{id}/clone — asynchronous).
body.with_data=true copies the rows as well as the structure. Returns a deferred
operation reference — poll operations_clone_inline_grid_get with the returned
operation.id until it reaches a terminal status.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Clone spec: ``target`` page slug (created if absent) + optional ``title`` and ``with_data`` (copy rows too). | |
| grid_id | Yes | The grid's permanent UUID4 id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly=false, idempotent=false, destructive=false). The description adds the crucial behavioral fact that the call is asynchronous and returns a deferred operation reference requiring polling of wiki_operations_clone_inline_grid_get, which annotations do not convey.
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?
Three tight sentences, front-loaded with the action, then the with_data nuance, then the async workflow. No 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 an async mutation with a nested body and no output schema, the description supplies the two things an agent most needs: the async nature and the follow-up polling call. Only minor gaps remain, such as what target-page side effects to expect.
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 schema already documents grid_id, target, and title. The description restates the with_data semantics ('copies the rows as well as the structure') that the schema already provides, adding essentially no new parameter detail beyond 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?
States a specific verb and resource ('Copy a grid onto another page') plus the underlying endpoint. An agent can distinguish this from siblings like wiki_pages_clone and wiki_grids_create without opening any schema.
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?
Clarifies the meaningful choice (with_data true copies rows vs structure only) and routes the agent to the correct polling tool. It lacks an explicit when-not-to-use statement or prerequisites, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_grids_columns_createAdd Wiki grid columnsA
Add columns to a grid at a position (default: append after the last column).
Each column needs a title and a type (string, number, select,
staff, date, checkbox, ticket_field, …); type-specific fields such as
select_options shape it further. Returns the grid's new revision.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ``columns`` (each needs ``title`` + ``type``) + the current ``revision``; optional ``position``. | |
| grid_id | Yes | The grid's permanent UUID4 id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=false and idempotentHint=false, lowering the bar, and the description adds real behavior: the default append position when no index is supplied, and the fact that a new grid revision is produced. It still omits the revision/concurrency conflict story that matters for a non-idempotent mutation.
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?
Front-loaded with the action and placement default, then the required-column rule, then the return value. Slightly padded by echoing the type enum ('string, number, select, staff, date, checkbox, ticket_field, …') that the schema already enumerates.
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?
Covers the required shape, positioning, and the return value (the new revision), which is useful since there is no output schema. For a nested-object mutation it is nearly complete, missing only error/conflict behavior around the revision field.
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 field, including nested column properties, is documented in the schema. The description only restates the required title/type pair and cites select_options and ticket_field as examples, adding no syntax or format detail beyond the structured data, so the 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?
States a specific verb and resource ('Add columns to a grid') plus placement semantics ('at a position (default: append after the last column)'), which implicitly separates it from wiki_grids_columns_move and wiki_grids_columns_update. It does not explicitly name any sibling, so it stops short of 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?
Usage is only implied by the verb: an agent can infer 'use this to add new columns', but the description never states when to reach for this versus wiki_grids_columns_update (modify existing), wiki_grids_columns_suggest, or wiki_grids_columns_move. No prerequisites or exclusion conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_grids_columns_deleteRemove Wiki grid columnsADestructive
Delete columns from a grid by slug — irreversible (every cell in them is lost).
A rare DELETE-with-body: slugs and revision travel in the JSON body. Returns the grid's
new revision.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ``column_slugs`` to delete + the current ``revision``. | |
| grid_id | Yes | The grid's permanent UUID4 id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description goes further by stating the loss is total ('every cell in them is lost') and irreversible, and by flagging the unusual DELETE-with-body transport. It stops short of stating permission/auth requirements or concurrency implications of the revision field.
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?
Roughly three lines, front-loaded with the destructive action, followed by the irreversibility, the transport quirk, and the return value. Every clause carries 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 destructive mutation with no output schema, it covers what is destroyed, the non-standard body transport, and what comes back (new revision). Minor gaps: no mention of auth scope, and the concurrency role of the optional revision field is left to the schema.
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 a fully documented nested body, so the baseline is 3. The description adds real value by clarifying that slugs and revision travel in the JSON body rather than path/query, but it does not explain the meaning or optionality of revision beyond what the schema already says.
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?
Specific verb + resource: 'Delete columns from a grid by slug', which cleanly separates it from sibling row/grid operations (wiki_grids_rows_delete, wiki_grids_columns_update, wiki_grids_delete). It never names a sibling to disambiguate, but the scope is unambiguous from the text alone.
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?
There is no when-to-use or when-not-to-use guidance and no named alternative — an agent could confuse this with wiki_grids_delete or wiki_grids_columns_update. The description only explains how to call it (body-transported slugs/revision), not when it is the right tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_grids_columns_moveMove Wiki grid columnsA
Reorder columns inside a grid (move a run of consecutive columns to a new position).
Returns the grid's new revision.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ``column_slug`` (first column to move) + ``position`` + optional ``columns_count`` + the current ``revision``. | |
| grid_id | Yes | The grid's permanent UUID4 id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states that it returns the grid's new revision, which is helpful context beyond the annotations. However, annotations already declare the key behavioral traits (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), and the description does not add further behavioral details such as how column shifting affects existing positions, what happens on revision mismatch, or authentication requirements.
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, zero waste. The core action is front-loaded, and the return value note is concise and appropriately secondary. 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?
No output schema exists, so the description appropriately states the return value (new revision). The action and effect are clear, and parameters are fully covered by the schema. However, it does not address potential concurrency or revision-conflict behavior, which could matter for a non-idempotent move 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?
Schema description coverage is 100%, so the schema already fully documents grid_id and the nested body parameters (column_slug, position, columns_count, revision). The description adds no additional parameter-level meaning beyond what the schema provides, which matches the baseline of 3 when the schema does the heavy lifting.
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 and resource: 'Reorder columns inside a grid' and clarifies it means 'move a run of consecutive columns to a new position'. This distinguishes the operation from sibling tools like wiki_grids_columns_create, wiki_grids_columns_delete, and wiki_grids_rows_move without needing to name them.
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 only implied by the core action; there is no explicit when-to-use guidance, no mention of alternatives (e.g., wiki_grids_columns_update for property changes), and no when-not-to-use conditions. The action itself implies its use case, which is the minimum viable level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_grids_columns_suggestSuggest Wiki grid column slugARead-onlyIdempotent
Check whether a column slug is free in a grid and get free alternatives (read-only).
The call is a POST but changes nothing. Yandex does not document this operation (it is in the live OpenAPI only) and may change it.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ``slug`` to check, or a ``title`` to turn into a slug and check. | |
| grid_id | Yes | The grid's permanent UUID4 id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, yet the description adds genuinely non-redundant context: it clarifies that the operation uses POST but changes nothing (preempting a false destructive inference), and warns that Yandex does not document it and it may change. That undocumented/unstable caveat is exactly the kind of behavioral disclosure annotations cannot convey.
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?
Front-loaded with the core purpose and efficiently sized. The 'read-only' parenthetical and the 'POST but changes nothing' sentence overlap slightly, but the latter adds distinct method-level clarity, so the minor redundancy is defensible.
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 two-parameter, nested-body read tool with no output schema, the description covers purpose, the read-only/non-mutating nature, and the undocumented-and-may-change caveat. It even signals what the call returns (free alternatives), leaving no significant gap for correct 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% – both 'slug' (column slug to check) and 'title' (title to turn into a slug and check) are documented in the schema. The description restates the availability-check concept but adds no syntax, format, or edge-case detail beyond what the schema already provides, 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?
States a specific verb+resource: checking whether a column slug is free in a grid and returning free alternatives. This is clearly distinct from sibling mutation tools like wiki_grids_columns_add, wiki_grids_columns_update, and wiki_grids_columns_remove, so an agent can route correctly without opening the schema.
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 purpose (slug-availability check) strongly implies usage as a pre-flight step before adding a column, and 'read-only' frames it as non-mutating. However, there is no explicit when-to-use statement, no named alternative, and no condition that selects this tool over the columns_add/columns_update siblings. Guidance 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.
wiki_grids_columns_updateUpdate Wiki grid columnAIdempotent
Edit a grid column in place: only the fields sent change; its type and slug stay.
Repeating the same call leaves the same column (idempotent). revision is accepted but not
enforced, and every call moves the grid's revision on. Returns the grid's new revision and
the column as saved. Yandex does not document this operation (it is in the
live OpenAPI only) and may change it.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The fields to change (``title``, ``description``, ``required``, ``width``, ``color``, ``pinned``, ``select_options``, …); ``revision`` is optional. | |
| grid_id | Yes | The grid's permanent UUID4 id. | |
| column_slug | Yes | Slug of the column to edit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: it discloses immutable fields (type and slug), true patch behavior versus full replacement, that revision is accepted but not enforced while every call still advances the grid's revision, what is returned, and the important caveat that Yandex only exposes this in the live OpenAPI and may change it. That is exactly the kind of context annotations cannot carry.
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?
Four short sentences, all front-loaded: patch semantics first, then idempotency, then revision behavior and return value, then the API-stability caveat. No filler, and the most decision-relevant fact leads.
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 output schema, the description carries return-value disclosure ('returns the grid's new revision and the column as saved') and covers mutation scope, idempotency, revision handling and API volatility — everything an agent needs to invoke this nested-body update 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 adds genuine meaning by clarifying revision semantics (accepted but not enforced, still bumps the grid revision) and by noting that unspecified fields — including type and slug — are untouched, which shapes how the body should be populated.
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?
States a specific verb and resource ('Edit a grid column in place') and immediately narrows the operation by noting that type and slug stay fixed, which distinguishes it from sibling write tools like wiki_grids_columns_add, wiki_grids_columns_remove and wiki_grids_columns_move without needing the schema.
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?
Clear context for when this tool applies: patch semantics ('only the fields sent change'), safe repetition ('repeating the same call leaves the same column'), and that a stale/missing revision is acceptable. It does not explicitly name the sibling alternatives (move/remove) or state when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_grids_createCreate Wiki gridA
Create an empty dynamic table (grid) as a resource of a page.
A new grid has no rows or columns — add them afterwards with grids_columns_create and
grids_rows_create. Returns the created grid; every subsequent write sends its
revision back.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Grid spec: ``title`` plus the ``page`` (by id or slug) to live on. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-destructive, non-idempotent, open-world. The description adds genuinely useful context beyond that: the grid is created with no rows or columns, the created grid is returned, and subsequent writes must send back its ``revision`` (optimistic-concurrency behavior). It does not mention permission requirements, but the revision contract is valuable 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?
Three short sentences, front-loaded with the core action, then the follow-up tooling and the return/revision contract. No filler and every sentence carries distinct 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?
No output schema exists, and the description compensates by describing the return value and the revision contract for later writes. Combined with full schema coverage and annotations, an agent has everything needed to invoke this create tool 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%, so the single ``body`` parameter (title plus page by id or slug) is fully documented in the schema. The description adds no parameter-level detail (no mention of title/page/identifier semantics), 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?
States a specific verb (create) and resource (an empty dynamic table/grid as a page resource), and explicitly distinguishes the result from the sibling tools that populate it. An agent can tell it apart from wiki_grids_update, wiki_grids_clone and wiki_grids_rows_create without opening a schema.
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?
Gives clear sequencing guidance: the grid starts empty and rows/columns must be added afterwards via grids_columns_create and grids_rows_create. It routes the agent to the correct follow-up tools, though it doesn't state when NOT to use this tool (e.g. cloning an existing grid with wiki_grids_clone).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_grids_deleteDelete Wiki gridADestructive
Delete a grid — irreversible (grids have NO recovery token, unlike pages).
Verify the target with grids_get first. The API answers 204 No Content; the
result is a typed acknowledgement.
| Name | Required | Description | Default |
|---|---|---|---|
| grid_id | Yes | The grid's permanent UUID4 id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds crucial context beyond them: the operation is irreversible, grids have no recovery token (unlike pages), and the API returns 204 No Content with a typed acknowledgement. This tells the agent exactly what is destroyed and that no undo 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?
Front-loads the critical irreversibility warning, then follows with prerequisite and return-value details in two tight paragraphs. Every sentence earns its place with no 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 destructive single-param tool with no output schema, the description covers the essentials: what happens (irreversible deletion), the safety prerequisite (verify with grids_get), and the response shape (204 No Content, typed acknowledgement). Nothing an agent needs to call it correctly is 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?
Schema description coverage is 100% and the single grid_id parameter is fully documented in the schema as a permanent UUID4 id. The description adds no additional parameter semantics, 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?
States a specific verb (Delete) and resource (Wiki grid), and differentiates from siblings by contrasting behavior with pages ('grids have NO recovery token, unlike pages'), which distinguishes it from wiki_pages_delete. An agent can identify this tool without opening any schema.
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?
Provides explicit pre-call guidance ('Verify the target with grids_get first'), naming a sibling tool and the condition that motivates it. It lacks an explicit 'when not to use' statement or direct alternative naming, but the workflow guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_grids_getGet Wiki gridARead-onlyIdempotent
A single dynamic table (grid) by its UUID, with structure, rows and revision.
Grids are the modern dynamic tables attached to a page; find a grid's id with
pages_grids_list. Use row_filter/only_cols/only_rows/sort to narrow large
grids server-side, and fields=attributes,user_permissions for extra blocks. The returned
revision is what any subsequent write must send back.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Row sort, e.g. ``slug,-slug2``. | |
| fields | No | Extra blocks to include (CSV), e.g. ``attributes,user_permissions``. | |
| grid_id | Yes | The grid's permanent UUID4 id. | |
| revision | No | Load this past revision instead of the current one. | |
| only_cols | No | Return only these column slugs (CSV). | |
| only_rows | No | Return only these row ids (CSV). | |
| row_filter | No | Server-side row filter, e.g. ``[slug] ~ wiki``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so the safety profile is covered. The description adds real behavioral value beyond that: the server-side narrowing behavior and the critical contract that the returned revision must be sent back on subsequent writes. It does not cover pagination or response size limits, keeping it at 4.
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?
Three tight sentences, front-loaded with the core purpose, then discovery/alternatives, then behavioral contract. No filler and every sentence carries actionable 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?
With no output schema and annotations covering the safety profile, the description carries the needed extras well: it names return contents (structure, rows, revision) and the write-back revision contract. Nothing essential for correct invocation is 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?
Schema description coverage is 100%, so the baseline is 3. The description goes further by grouping the filtering parameters and explaining their shared purpose (narrowing large grids server-side) plus the fields param for extra blocks, adding intent beyond the schema's per-param examples.
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?
States a specific verb and resource ('Get a single dynamic table (grid) by its UUID') and clarifies what a grid is ('modern dynamic tables attached to a page'), which distinguishes it from siblings like wiki_grids_create, wiki_grids_update, and wiki_pages_grids_list. An agent can tell this is the read-one operation without opening the schema.
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?
Explicitly routes to the alternative for discovery ('find a grid's id with pages_grids_list') and explains when to reach for the narrowing parameters ('to narrow large grids server-side'). It gives clear context but doesn't state exclusions or when not to use it directly, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_grids_rows_createAdd Wiki grid rowsA
Insert rows into a grid at a position (default: append at the end).
Column slugs come from grids_get's structure block. Returns the created rows plus
the grid's new revision.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ``rows`` (each maps column slug → cell value) + ``revision``; optional ``position`` / ``after_row_id`` placement. | |
| grid_id | Yes | The grid's permanent UUID4 id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, idempotent=false, openWorld=true, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the default append-at-end placement and the fact that it returns the created rows plus the grid's new revision. It leaves concurrency/auth implications implicit, keeping it from a 5.
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?
Three tight sentences, front-loaded with purpose and default behavior, then the slug prerequisite, then the return shape. No filler; every sentence carries information an agent needs.
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 mutation tool with a nested body object and no output schema, the description covers purpose, placement defaults, slug sourcing, and return values, which is enough to invoke it correctly. It omits any note about revision handling/conflicts, which the optional revision parameter raises but does not fully resolve.
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 100% schema coverage the baseline is 3, but the description adds meaning beyond the schema by telling the agent where the column slugs used as row keys originate (grids_get's structure block) and clarifying default placement semantics. That is real extra semantic value the schema does not supply.
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?
States a specific verb+resource+scope: 'Insert rows into a grid at a position (default: append at the end)'. An agent can distinguish this from siblings like wiki_grids_rows_update, rows_delete, and rows_move without opening any schema.
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?
Provides clear context: default behavior when no position is given, and the prerequisite that column slugs come from grids_get's structure block. It does not explicitly state when to prefer this over wiki_grids_cells_update or other row-editing siblings, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_grids_rows_deleteRemove Wiki grid rowsADestructive
Delete rows from a grid by id — irreversible.
A rare DELETE-with-body: ids and revision travel in the JSON body. Find row ids with
grids_get. Returns the grid's new revision.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ``row_ids`` to delete (at least one) + the current ``revision``. | |
| grid_id | Yes | The grid's permanent UUID4 id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely non-obvious behavior: the rare DELETE-with-body convention, the body-carried revision, and the returned new revision. It does not cover auth/permission needs or revision-conflict failure 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?
Three short sentences, front-loaded with the action and its irreversibility, then the mechanics, then the return value. Every sentence carries distinct information with no padding.
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 destructive 2-param nested-body tool with no output schema, the description covers consequences, input discovery, request shape, and return value. It leaves out permission requirements and how a stale revision is handled, which would round it out.
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 row_ids and revision are already documented, including the concurrency meaning of revision. The description confirms the body-vs-query mechanics but adds no format, constraint, or edge-case 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 first line gives a specific verb (Delete), resource (rows from a grid), scope (by id), and the critical consequence (irreversible). It is easily distinguishable from siblings like wiki_grids_delete (whole grid) and wiki_grids_columns_delete (columns) without opening any schema.
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?
It tells the agent how to obtain the required input ("Find row ids with ``grids_get``"), which is a real prerequisite flow. It stops short of explicit when-not guidance or naming update/move siblings as alternatives, so it is clear context but not full routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_grids_rows_moveMove Wiki grid rowsB
Reorder rows inside a grid (move a run of consecutive rows to a new position).
Returns the grid's new revision.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ``row_id`` (first row to move) + destination (``position`` or ``after_row_id``) + optional ``rows_count`` + the current ``revision``. | |
| grid_id | Yes | The grid's permanent UUID4 id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true). The description adds that it returns the grid's new revision and that it operates on a run of rows, but it does not explain the optimistic-concurrency implication of the revision parameter or the failure behavior. With annotations carrying the safety load, a 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?
Two short sentences with zero waste and the core action front-loaded. Every 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?
For a nested-object mutation tool with no output schema, the description supplies the key return value (the new revision) and the operation scope, while annotations and the rich schema cover safety and parameters. It stops short of explaining concurrency/failure semantics, so it is complete but not exhaustive.
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 row_id, position, revision, rows_count, and after_row_id fully, including the position/after_row_id alternative. The description adds no parameter-level meaning beyond what the schema provides, so the 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 states a specific verb and resource ('Reorder rows inside a grid') and adds useful scope detail ('move a run of consecutive rows to a new position'). It is clearly distinguishable in intent from wiki_grids_columns_move, but it never explicitly routes against the many wiki_grids siblings (rows_create, rows_update, rows_delete).
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?
There is no when-to-use, when-not-to-use, or alternative-tool guidance. The description never contrasts this with wiki_grids_rows_update/rows_create or the columns_move sibling, so an agent gets no help choosing among near-identical grid tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_grids_rows_updateUpdate Wiki grid rowAIdempotent
Pin or colour one grid row (cell values are set by grids_cells_update).
Repeating the same call leaves the same row (idempotent). The reply is a bare acknowledgement
without the new revision (read it with grids_get); revision is accepted but not
enforced. Yandex does not document this operation (it is in the live OpenAPI only) and may
change it.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ``pinned`` and/or ``color`` to set; ``revision`` is optional. | |
| row_id | Yes | Id of the row to pin or colour. | |
| grid_id | Yes | The grid's permanent UUID4 id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses idempotency behavior, that the response is a bare acknowledgement lacking the new revision (and that grids_get is needed to read it), that revision is accepted but not enforced, and the significant caveat that the endpoint is undocumented and may change. These are exactly the traits an agent cannot infer from readOnly/idempotent/destructive hints.
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?
Front-loads the mutation purpose, then packs idempotency, response shape, and the undocumented-API warning into a few tight sentences. Dense but every sentence earns its place; no 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?
With no output schema, the description compensates by describing the return value (bare acknowledgement, revision absent) and how to retrieve the revision. Combined with the undocumented-endpoint warning, an agent has everything needed to call and interpret this 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 still adds value by clarifying that revision is accepted but not enforced (which matters for whether an agent must fetch a fresh revision) and confirms the pin/color intent of the body, lifting it above 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?
States a specific verb+resource ('Pin or colour one grid row') and immediately delineates scope by noting cell values are set by grids_cells_update. An agent can distinguish it from wiki_grids_rows_move, wiki_grids_rows_remove, and wiki_grids_cells_update without opening any schema.
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?
Explicitly routes cell-value edits to the sibling grids_cells_update, which is the key usage boundary for this tool. It does not spell out when-not to use it beyond that, but the sibling routing is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_grids_updateUpdate Wiki gridAIdempotent
Rename or re-sort a grid (POST-not-PATCH quirk handled by the SDK).
body.revision must match the grid's current revision (read it off grids_get);
a mismatch fails the write. Returns the grid's new revision.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Editable fields (``title``, ``default_sort``) plus the required ``revision``. | |
| grid_id | Yes | The grid's permanent UUID4 id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (not read-only, idempotent, non-destructive). The description adds real context beyond them: the POST-not-PATCH quirk, the optimistic-concurrency rule that a stale revision fails the write, and that it returns the new revision. This failure-mode disclosure is exactly the kind of behavioral detail annotations cannot convey.
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?
Three tight sentences with the operation front-loaded, followed by the revision constraint and return value. The parenthetical about the SDK handling the POST-not-PATCH quirk is a slight aside but still informative rather than wasteful.
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 nested-body mutation with no output schema, the description covers the essentials: what it edits, the revision precondition, and the returned revision. Annotations carry the safety profile and the schema fully documents the nested fields, leaving no critical gap for correct 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%, so the baseline is 3. The description rises above it by clarifying the otherwise-vague 'revision' parameter: it must equal the grid's current revision and a mismatch fails the write, adding a concrete constraint the schema field text does not.
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?
States specific verbs and resource ('Rename or re-sort a grid'), which cleanly separates it from sibling grid tools like wiki_grids_columns_update, wiki_grids_rows_update, and wiki_grids_cells_update. An agent can identify the operation without opening the schema.
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?
It provides a prerequisite workflow step (read the current revision off grids_get before writing), which is genuinely useful. However it does not state when to choose this over alternatives such as cloning or column updates, and gives no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_me_getGet current Wiki userARead-onlyIdempotent
The authenticated Yandex Wiki user (a safe auth probe).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered structurally. The description adds one genuinely useful behavioral note – that calling it is a safe way to probe auth state – but says nothing about the shape of the returned user object, which matters because there is no 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?
A single short clause with zero filler, and the key noun (the authenticated user) is front-loaded. It is arguably too terse to stand on its own without the title, but nothing is wasted.
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 no-parameter read-only tool the description is close to adequate, and the auth-probe note is a nice touch. But with no output schema, the description is the only place that could explain what the returned user contains, and it does not.
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 takes zero parameters, so the baseline of 4 applies. There is nothing for the description to clarify in terms of arguments, and it does not waste words pretending otherwise.
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 resource returned – the authenticated Yandex Wiki user – and the title supplies the verb (Get). It is a noun-phrase fragment rather than a full verb+resource statement, and it does not explicitly name the parallel tracker_me_get/forms_me_get siblings, but an agent can still tell exactly what this 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?
'(a safe auth probe)' implies a usage context – verifying that credentials work – which is more than nothing. However, it gives no explicit when-to-use guidance, no mention of when not to use it, and no routing versus the near-identical tracker_me_get and forms_me_get siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_operations_clone_getGet Wiki page-clone statusARead-onlyIdempotent
Status of an async page-clone operation — poll it until it finishes.
pages clone (a CLI/SDK write) returns an operation.id; pass it here and re-read until
status is success or failed. On success the result.page names the clone.
The sibling operations_clone_inline_grid_get polls inline-grid clones instead.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task id from a page-clone trigger (operation.id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and open-world traits, so the bar is lower; the description still adds real behavioral context beyond them by disclosing the polling loop and the terminal status values. It does not describe pagination or timing/backoff, so it stops short of a 5.
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?
Front-loaded with the core purpose, then the usage mechanics and the sibling disambiguation. Three short sentences/lines, none of which is 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?
With no output schema, the description carries the return-value burden and does it: it tells the agent to expect a `status` field with success/failed and a `result.page` naming the clone, which is exactly what is needed to consume the response.
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 sole parameter is already documented as 'Task id from a page-clone trigger (operation.id)'. The description restates that same linkage, adding minimal meaning beyond the schema, so the 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?
States a specific resource and action ('status of an async page-clone operation') and explicitly disambiguates from the sibling that polls inline-grid clones. An agent can tell which tool to call without opening the schema.
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?
Gives an explicit when-to-use path: obtain operation.id from `pages clone`, pass it here, and re-read until status is success or failed. It also names the alternative (operations_clone_inline_grid_get) and the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_operations_clone_inline_grid_getGet Wiki grid-clone statusARead-onlyIdempotent
Status of an async inline-grid-clone operation — poll it until it finishes.
grids clone (a CLI/SDK write) returns an operation.id; pass it here and re-read until
status is success or failed. On success the result.grid_id names the copy.
The sibling operations_clone_get polls page clones instead.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task id from a grid-clone trigger (operation.id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, so the safety profile is covered. The description adds genuine behavioral context beyond that: the tool is a polling endpoint, the terminal states are 'success' or 'failed', and on success result.grid_id names the copy. It does not mention polling cadence, intermediate states, or failure payloads, so it stops short of 5.
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?
Three tight sentences: what it is, how to drive it, and how it differs from the sibling. Front-loaded with the core purpose and free of 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?
With no output schema, the description appropriately explains the returned status values and the result.grid_id field. It omits any note on polling interval/backoff or what a non-terminal status looks like, which for a polling endpoint would complete the picture.
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 task_id is already documented as 'Task id from a grid-clone trigger (operation.id)'. The description still adds value by tying the value's origin to the specific 'grids clone' write call as a workflow, making the provenance explicit rather than merely restating the field.
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?
States a specific verb and resource ('Status of an async inline-grid-clone operation') and immediately names the sibling it is not: 'operations_clone_get polls page clones instead.' An agent can distinguish it from the page-clone and move-operation siblings without opening any schema.
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?
Gives explicit when-to-use guidance ('poll it until it finishes... re-read until status is success or failed'), states the trigger for use (grids clone returns an operation.id), and names the alternative tool for the page-clone case. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_operations_move_getGet Wiki page-move statusARead-onlyIdempotent
Status of an async page-move operation — poll it until it finishes.
pages_move returns an operation.id; pass it here and re-read until status is
success or failed. On success the result.page_count says how many pages moved.
This operation is undocumented by Yandex (it is in the live OpenAPI only) and may change.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task id from a page-move trigger (operation.id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds real context beyond that: it is a polling endpoint, the terminal status values, what result.page_count reports on success, and a warning that the endpoint is undocumented and may change. Minor gap: no guidance on polling interval or backoff.
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?
Front-loads what the tool is, then the polling contract, then the success semantics, then the caveat. Every sentence adds information, though the operation.id reference is slightly repetitive with the schema description.
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 output schema, the description carries the return-value burden and does so: it names the status field, its terminal values, and result.page_count on success. Nothing needed to call and interpret this tool is 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?
Schema coverage is 100% and the schema already defines task_id as 'Task id from a page-move trigger (operation.id)', which the description essentially restates. Baseline 3 applies since the schema carries the 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?
States a specific verb+resource: retrieving the status of an async Wiki page-move operation. It distinguishes itself from the sibling operation-poller tools (wiki_operations_clone_get, wiki_operations_gridclone_get) by naming the producing tool pages_move and the exact fields to inspect. An agent can tell instantly what this does and what feeds it.
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?
Explicitly says to poll this tool ('re-read until status is success or failed') and identifies the prerequisite: the operation.id returned by pages_move. It also states the terminating conditions, so when-to-use and when-to-stop are both spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_pages_appendAppend content to Wiki pageA
Append a YFM fragment to a wiki page without rewriting the whole body.
Unlike pages_update (full replace), this adds body.content at the chosen spot:
body.body.location (top/bottom of the page), a numbered body.section, or a named
text body.anchor. Returns the updated page.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | What to append and where: required ``content`` (YFM fragment) plus optional ``body`` (top/bottom), ``section`` or ``anchor`` placement. | |
| fields | No | Extra blocks to include in the reply (CSV), e.g. ``content,attributes``. | |
| page_id | Yes | Numeric id of the page to append to. | |
| is_silent | No | Do not notify the page's subscribers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is partly covered. The description still adds real value beyond them: it clarifies the operation does not rewrite the whole body, and that it returns the updated page. It does not discuss idempotency or the silent-notification behavior, which stays 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?
Three tight sentences that front-load the core action and the sibling contrast before detailing placement. The RST-style double backticks add mild visual noise but no filler; every sentence carries 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 nested-object mutation tool, the description covers the action, the placement variants, and the return value ('Returns the updated page'), even without an output schema. Secondary parameters like fields and is_silent are documented in the schema, so nothing critical is 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?
Schema description coverage is 100% and the nested body structure (location/section/anchor/content) is fully documented in the schema itself. The description mirrors those concepts ('top/bottom of the page', 'a numbered body.section', 'a named text anchor') without adding syntax or constraints beyond the schema, so the 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?
States a specific verb (append) and resource (wiki page) with the exact scope ('a YFM fragment') and immediately contrasts it with the closest sibling, pages_update, as a full replace. An agent can distinguish this from every other wiki_* tool without opening a schema.
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?
Names the alternative tool (pages_update) and the reason to prefer this one (partial edit rather than full body rewrite), and enumerates the three placement modes. It stops short of stating explicit exclusions (e.g. when appending is inappropriate vs updating), so it lands just under a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_pages_backlinks_listList Wiki page backlinksARead-onlyIdempotent
Refs (id and slug) of the pages that link to a page (GET /pages/{id}/backlinks).
Auto-paginated. Yandex does not document this operation (it is in the live OpenAPI only) and may change it.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max refs (omitted: the configured cap). | |
| page_id | Yes | Numeric id of the page that is linked to. | |
| show_all | No | The API's ``show_all`` flag (undocumented; no effect seen live). | |
| for_cluster | No | Links to the page's whole subtree, not just the page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds valuable behavioral context beyond that: it is auto-paginated and is an undocumented live-API operation that may change. It does not cover auth requirements or rate limits, but the added context is meaningful.
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 short sentences with no wasted words. The return shape is front-loaded, followed by pagination behavior and the API stability caveat, which are appropriately placed.
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 output schema, the description usefully states the return values (refs with id and slug), notes auto-pagination, and warns that the operation is undocumented and unstable. Combined with the annotations and fully described input schema, this is nearly complete, though it omits error or permission behavior.
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 four parameters well. The description adds no parameter-specific meaning beyond the schema, so the baseline score 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 states the specific resource (backlinks) and what is returned (refs with id and slug), plus the underlying endpoint. It clearly describes a list operation, though it does not explicitly differentiate itself from sibling wiki page listing 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 gives no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. It notes that the operation is undocumented and may change, which is a risk caveat rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_pages_cloneClone Wiki pageA
Copy a page to a new address (POST /pages/{id}/clone — asynchronous).
Cloning leaves the original where it is; to give the page itself a new slug use
pages_move. The call returns a deferred operation reference — poll
operations_clone_get with the returned operation.id until it reaches a terminal status.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Clone spec: required ``target`` (destination slug) plus optional ``title`` and ``subscribe_me``. | |
| page_id | Yes | Numeric id of the page to copy. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety/write profile is covered structurally. On top of that the description discloses the async nature ('asynchronous'), that a deferred operation is returned requiring polling, and that the source page is left intact. It does not mention permission requirements or what happens to subscriptions, hence not a full 5.
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?
Three tight sentences with zero filler, and the core behavior ('copy a page') is front-loaded before the alternative and the follow-up polling step. Each sentence carries distinct, load-bearing 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 an asynchronous 2-parameter tool with no output schema, the description supplies exactly what is missing from structured data: the async return shape, the polling tool, and the terminal-status condition. Nothing needed to invoke and follow through the call is absent.
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 page_id and the nested body fields (target, title, subscribe_me) are already fully documented in the schema. The description adds no extra parameter-level meaning beyond referencing the returned operation.id. 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?
States a specific verb and resource ('Copy a page to a new address') and immediately frames the endpoint. It explicitly distinguishes itself from the sibling pages_move, which is the only neighboring operation an agent could confuse it with.
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?
Explicitly says when to use an alternative ('to give the page itself a new slug use pages_move'), and it removes the calling ambiguity created by the async return value by naming the follow-up tool (operations_clone_get) and the exact key to poll (operation.id). Both the when-to-use and the when-to-use-something-else cases are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_pages_createCreate Wiki pageA
Create a wiki page at body.slug (POST /pages).
Treat the slug as permanent: pages_move can rename the page later, but the old address
then answers 404 and links to it break, so pick the slug carefully. Returns the created page
(its numeric id drives the id-based tools and every subsequent write). E.g.
{"body": {"slug": "data/x", "title": "X", "content": "# X"}}.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /pages``: a new page at ``slug``. | |
| fields | No | Extra blocks to include in the reply (CSV), e.g. ``content,attributes``. | |
| is_silent | No | Do not notify the page's subscribers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readonly, non-idempotent, non-destructive, and open-world. The description adds non-obvious behavior beyond that: the 404-after-move consequence, slug permanence, and that the created page (with its numeric id) is returned and drives subsequent writes.
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?
Front-loaded with the core action and endpoint, and each following sentence earns its place (slug caution, rename semantics, return value, example). The double-backtick formatting makes it slightly denser than needed but nothing is wasted.
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 output schema, explaining that the created page and its id come back is important, and the example covers the nested body. The optional fields (content, access_policy, is_silent) are left to the schema, which documents them fully, so the gap is minor.
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, but the description adds genuine value by tying body.slug to the concept of a permanent address and supplying a concrete nested-body example for a tool whose primary parameter is a nested object.
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?
States a specific verb and resource ('Create a wiki page at body.slug') with the backing endpoint, and is clearly distinguishable from siblings like wiki_pages_update, wiki_pages_move, and wiki_pages_clone.
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?
Gives real decision context: pick the slug carefully because it is effectively permanent, and names pages_move as the later-rename path that breaks links. It stops short of stating explicit when-not-to-use conditions versus clone/append.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_pages_deleteDelete Wiki pageADestructive
Delete a wiki page by numeric id (DELETE /pages/{id}).
KEEP the returned recovery_token — it is the only handle to undo the delete
(redeem it with recovery_recover). Deleting removes the page's descendants'
anchor too, so double-check the id (pages_get_by_id) before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Numeric id of the page to delete. | |
| recursive | No | Also delete every page under it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and non-idempotency, but the description adds crucial behavior not visible there: the returned recovery_token is the only undo handle, and deletion removes descendants' anchors. This is exactly the kind of consequence disclosure annotations cannot carry.
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?
Three tightly-written sentences, front-loaded with the operation, then the critical recovery-token caveat, then the pre-call verification advice. Every sentence earns its place with no 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?
With no output schema, the description compensates by explaining the return value (recovery_token) and its significance, plus the ancestor/descendant side effects. Nothing needed to call this destructive tool safely is 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?
Schema description coverage is 100%, so both page_id and recursive are already documented in the schema, making the baseline 3. The description's mention of descendant anchors hints at the recursive cascade but adds no syntax or value constraints beyond what the schema states.
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?
States a specific verb+resource ('Delete a wiki page by numeric id') and even names the underlying route, distinguishing it clearly from siblings like wiki_pages_update or wiki_pages_move. It also names related tools (recovery_recover, pages_get_by_id) so the agent understands the surrounding workflow.
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?
Gives clear pre-call guidance ('double-check the id (pages_get_by_id) before calling') and explains the undo path via recovery_recover, which routes the agent to the right sibling post-delete. It stops short of explicit when-not-to-use guidance, so it is clear context without full exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_pages_descendants_listList Wiki page descendantsARead-onlyIdempotent
All descendant refs under SLUG, auto-paginated.
Capped at the configured item cap unless limit is given; narrow by SLUG for large trees.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Wiki page slug (its path), e.g. ``users/something/abc``. | |
| limit | No | Max descendant refs to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS). | |
| show_all | No | The API's ``show_all`` flag. | |
| actuality | No | Only the pages in this state: `actual` or `obsolete`. | |
| include_self | No | Also return the ancestor page itself. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent, so the bar is lower, and the description still adds meaningful behavior: results are auto-paginated and implicitly capped at the configured item cap unless limit is passed. It does not state ordering or what a 'ref' contains, but the pagination/cap detail is genuine added 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?
Two short sentences with zero waste; the core action and scope are front-loaded before the cap/pagination caveat and the narrowing tip.
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, single-resource list tool with a fully described schema and safety annotations, the description covers purpose, scoping, and pagination behavior. It omits result ordering and any hint about the descendant ref shape, which is a minor gap since no output schema exists.
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 slug, limit, show_all, actuality, and include_self are already documented. The description reinforces the limit/default-cap relationship but adds no syntax or semantics beyond the schema; 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?
States a specific verb and resource: list all descendant refs under a given wiki page SLUG. The slug-based addressing implicitly separates it from the sibling wiki_pages_descendants_list_by_id, but that sibling is never named, so differentiation is left to inference.
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?
Offers real operational guidance ('narrow by SLUG for large trees') and explains the cap/limit interaction, but gives no explicit when-to-use rule relative to wiki_pages_descendants_list_by_id, wiki_pages_backlinks_list, or wiki_pages_get. Usage 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.
wiki_pages_descendants_list_by_idList Wiki page descendants by idARead-onlyIdempotent
All descendant page refs under a numeric page id, auto-paginated.
The id-based twin of pages_descendants_list. Capped at the configured item cap
unless limit is given; each ref carries the child's numeric id and permanent
slug.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max refs (omitted: the configured cap). | |
| page_id | Yes | Numeric page id whose subtree to list. | |
| show_all | No | The API's ``show_all`` flag. | |
| actuality | No | Only the pages in this state: `actual` or `obsolete`. | |
| include_self | No | Also return the ancestor page itself. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld), so the bar is lower, yet the description adds genuinely useful behavior: auto-pagination, capping at the configured item cap unless limit is set, and the shape of each returned ref (numeric id and permanent slug). With no output schema, that return-shape detail is valuable.
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?
Three sentences, front-loaded with the scope and then the relationship to the sibling and pagination behavior. No filler, though the wording is somewhat prose-heavy for the information conveyed.
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, auto-paginated listing tool with full schema coverage and no output schema, the description supplies scope, pagination/cap behavior, the sibling relationship, and return-ref shape. Nothing an agent needs to invoke it correctly is 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?
Schema description coverage is 100%, so all five parameters are already documented in the schema. The description's only parameter-adjacent content ('capped at the configured item cap unless limit is given') restates the limit parameter's own schema description, adding no new syntax or format detail. 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?
States a specific verb and resource ('All descendant page refs under a numeric page id') and explicitly frames itself as the id-based twin of pages_descendants_list, which lets an agent infer the pairing. It stops short of stating the sibling's discriminating key (slug) outright, so the distinction is implied rather than spelled out.
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?
Mentions 'the id-based twin of pages_descendants_list', which implies a choice between the two, but never states the condition that selects one over the other (e.g. 'use this when you have a numeric id, use X when you have a slug'). No when-not-to-use guidance or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_pages_getGet Wiki pageBRead-onlyIdempotent
The page's markdown body for SLUG.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Wiki page slug (its path), e.g. ``users/something/abc``. | |
| revision_id | No | Show this past revision (an id from ``pages_revisions_list``). | |
| raise_on_redirect | No | Fail if the page is a redirect instead of following it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, covering the safety profile. The description adds that the return value is markdown body, which is useful behavioral context, but it says nothing about redirect handling (raise_on_redirect) or revision retrieval beyond what the schema already provides.
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 very short and front-loaded, but it is a sentence fragment lacking a verb. It is concise to a fault, potentially leaving the agent to infer the 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?
For a simple read-only tool with full schema coverage and known annotations, the description covers the essential return value. However, it omits usage context and sibling differentiation, which would help an agent select correctly among the many wiki_pages_* tools.
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 all three parameters. The description does not add any syntax or format details for slug, revision_id, or raise_on_redirect beyond 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 names the resource (page) and the specific return content (markdown body) scoped by SLUG. It implicitly distinguishes from the sibling wiki_pages_get_meta, which likely returns metadata rather than content, though it does not explicitly name alternatives.
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?
There is no guidance on when to use this tool versus siblings like wiki_pages_get_meta, wiki_pages_get_by_id, or wiki_pages_revisions_list. Usage is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_pages_get_by_idGet Wiki page by idARead-onlyIdempotent
A single page by its numeric id — the id-based twin of pages_get/pages_get_meta.
Use it when you hold a numeric page id (e.g. from a descendants listing or a write's
response) instead of the slug. fields follows the standard Wiki selector rules:
without it the response carries id/slug/title only; ask for content or
attributes explicitly.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Extra blocks (CSV), e.g. ``content,attributes,breadcrumbs``. Omitted = id/slug/title only. | |
| page_id | Yes | Numeric page id to fetch. | |
| revision_id | No | Show this past revision (an id from ``pages_revisions_list``). | |
| raise_on_redirect | No | Fail if the page is a redirect instead of following it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description adds real behavioral context beyond that: the default projection (id/slug/title only) and the requirement to explicitly request content/attributes. It stops short of documenting auth needs, redirect handling (raise_on_redirect is schema-only), or error behavior, so not a full 5.
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 short paragraphs, front-loaded with the identity/scope of the tool before the usage condition and the fields note. Slightly loose phrasing ('the id-based twin of') but nothing is wasted.
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 single-resource getter with annotations covering safety, full schema coverage, and no output schema, the description supplies the one thing the structured fields don't fully convey: what the response contains by default and how to expand it. It is complete for correct invocation, with only edge behaviors like redirects left to the schema.
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 four parameters are already documented, including the fields CSV format and its default. The description's 'fields follows the standard Wiki selector rules' mostly restates the schema's own explanation of the same parameter and adds no format or syntax detail beyond it, so the baseline 3 is correct.
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?
States a specific verb and resource (fetch a single wiki page) and immediately positions it as the 'id-based twin of pages_get/pages_get_meta', so the agent can distinguish it from the slug-based siblings without opening any schema.
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?
'Use it when you hold a numeric page id ... instead of the slug' gives the exact discriminator that selects this tool over the slug-based siblings, and it even names where such an id comes from (descendants listing, write response). The alternative is implicit in 'instead of the slug' but the routing rule is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_pages_get_metaGet Wiki page metadataCRead-onlyIdempotent
Page metadata for SLUG (attributes + owner).
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Wiki page slug (its path), e.g. ``users/something/abc``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the return scope ('attributes + owner'), which is useful context, but says nothing about permissions, visibility, or what happens with malformed slugs.
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 short, front-loaded sentence with no filler. It is efficient, though bordering on under-specification rather than crisp completeness.
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 trivial one-parameter read operation with a full-coverage schema and read-only annotations, the description is minimally viable. It gives partial return information (attributes + owner) but no output schema exists, so the agent still does not fully know the response shape.
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 single 'slug' parameter is well documented in the schema itself with an example path. The description merely repeats 'SLUG' and adds no new syntax or constraint detail, so the 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?
States the resource ('page metadata for SLUG') and hints at payload ('attributes + owner'), so the verb+resource is roughly clear. However, 'metadata' and 'attributes' remain ambiguous, and it does nothing to distinguish itself from close siblings like wiki_pages_get, wiki_pages_get_by_id, or wiki_pages_backlinks_list.
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?
There is no guidance on when to use this instead of wiki_pages_get or wiki_pages_get_by_id, nor any prerequisites. The agent must infer the use case purely 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.
wiki_pages_grids_listList Wiki page gridsARead-onlyIdempotent
Dynamic tables (grids) attached to a page id, auto-paginated (drains next_cursor).
Each grid ref is a UUID id + title + created_at. Capped at the configured item cap
unless limit is given. Reads a page's numeric id — pair with
pages_get_meta / pages_descendants_list (whose refs carry the ids) to find one.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max grids (omitted: the configured cap). | |
| page_id | Yes | Numeric page id whose grids to list. | |
| order_by | No | Sort field. | |
| order_direction | No | Sort direction for ``order_by``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuinely new behavioral context: it is auto-paginated and drains next_cursor, and it is capped at the configured item cap unless limit is supplied. These are traits the annotations cannot express.
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?
Front-loads what a grid is, then pagination behavior, then return shape, then the id-sourcing hint. Dense and largely waste-free, though the final sentence mixes field shape and parameter sourcing slightly awkwardly.
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 list endpoint with full schema coverage and no output schema, the description covers what an agent needs: the scoping parameter's origin, pagination behavior, the cap rule, and the shape of each returned ref. Nothing material is 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?
Schema coverage is 100%, so baseline is 3, but the description adds value beyond the schema by explaining that page_id is a numeric id and where to obtain it, and reiterating the cap-vs-limit tradeoff in prose. That lifts it slightly above the schema-only 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?
States a specific verb and resource ('dynamic tables (grids) attached to a page id') and clarifies what a grid is, which distinguishes it from siblings like wiki_grids_get or wiki_pages_get. An agent can identify the operation without opening the schema.
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?
Gives concrete guidance on acquiring the required page_id, naming pages_get_meta and pages_descendants_list as the sources that carry numeric ids. It does not, however, contrast this listing tool with sibling grid tools (e.g. when to use wiki_grids_get instead), so it stops short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_pages_moveMove Wiki pageA
Move or rename pages (POST /pages/move — asynchronous; undocumented by Yandex).
The only way to give a page a new slug. The call returns a deferred operation reference —
poll operations_move_get with the returned operation.id until it reaches a terminal
status. A page moves with its subtree and links to the old address may stop working, so try
validate_only=true first: it validates the request, applies nothing, and its operation id
cannot be polled. Yandex does not document this operation (it is in the live OpenAPI only)
and may change it.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Move spec: ``operations`` (each ``source`` slug and new ``target`` slug, optionally ``next_to_slug`` with ``position`` before/after) and optional ``copy_inherited_access``. | |
| validate_only | No | Validate the move without applying it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which only declare readOnly=false, destructive=false, idempotent=false, openWorld=true). The description discloses asynchrony, the deferred-operation return contract and required polling tool, subtree movement, that old links may break, the special semantics of validate_only (applies nothing, unpollable id), and that the endpoint is undocumented and unstable.
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?
Purpose and scope are front-loaded in the first two sentences, and every subsequent sentence carries distinct operational value (polling, safety, instability warning). Slightly dense at five sentences, but nothing is padding.
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?
No output schema exists, yet the description explains the return value (deferred operation reference) and the follow-up call needed to resolve it, plus the validate_only exception. For an asynchronous, undocumented mutation tool, this covers everything an agent needs to call 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%, so baseline is 3, but the description adds semantics the schema lacks - notably that validate_only applies nothing and produces an id that cannot be polled. It does not help decode the copy_inherited_access 400 case beyond what the schema already states.
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?
States a specific verb and resource ('Move or rename pages') and immediately scopes it with 'The only way to give a page a new slug,' which distinguishes it from update/clone siblings that cannot change a slug. An agent knows exactly what this accomplishes without opening a schema.
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?
Gives clear operating guidance: use validate_only=true first to dry-run, then poll operations_move_get. It does not explicitly name a competing sibling tool to avoid (e.g. wiki_pages_update), so it stops just short of full when/when-not/alternatives coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_pages_revisions_listList Wiki page revisionsARead-onlyIdempotent
Saved revisions of a page, auto-paginated (GET /pages/{id}/revisions).
Each revision has an id (what GET /pages takes as revision_id), its author,
created_at, page_type and publication state. Yandex does not document this operation
(it is in the live OpenAPI only) and may change it.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Only these revision ids (comma separated). | |
| limit | No | Max revisions (omitted: the configured cap). | |
| page_id | Yes | Numeric page id whose revisions to list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and open-world behavior. The description adds meaningful context: auto-pagination, the fields returned per revision, and a warning that the operation is undocumented and may change. It does not cover auth or rate limits, but adds significant value beyond 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?
Three sentences, front-loaded with purpose and endpoint, followed by useful field details and an operational caveat. Every sentence 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?
For a read-only list tool with no output schema, the description explains return fields and pagination behavior. It lacks details on sorting or exact pagination mechanics, but annotations and schema cover the rest adequately.
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 input schema fully documents the three parameters. The description adds no parameter-level details beyond what the schema provides, making the baseline of 3 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 tool returns 'Saved revisions of a page' and includes the underlying endpoint. It identifies the resource and scope, but does not explicitly differentiate from sibling tools like wiki_pages_get or wiki_pages_meta.
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 given on when to use this tool versus alternatives, nor any prerequisites or exclusions. The purpose implies usage, but the description lacks explicit when-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_pages_searchSearch WikiARead-onlyIdempotent
Full-text search over wiki pages and files; returns one page of hits.
Each hit has the page slug (read it with pages_get), title, a content
snippet, the type and modified_at. body.filters narrows the search by type,
authors, cluster (a page slug), created_at / modified_at (a window with both
from and to) and show_obsolete. For the next page pass next_cursor back as
body.cursor; stop at the first page without hits, because next_cursor stays set
after an empty page. A new page can take seconds to appear in the index. E.g.
{"body": {"query": "roadmap", "limit": 5}}.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Body of ``POST /search``: the query, filters and one page of the results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint/idempotentHint, but the description adds genuinely non-obvious behavior: the write-to-index lag ('a new page can take seconds to appear in the index') and the trap that next_cursor stays set after an empty page. It does not cover auth or rate behavior, so a 4 rather than 5.
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?
Front-loaded with purpose, then return shape, filters, pagination and a worked example. Every sentence carries information, though the example is slightly redundant with the schema's query field.
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 output schema, the description does the work of documenting hit fields, pagination and index latency, which makes it nearly self-sufficient. The time-window 400 error constraint is only documented in the schema, so a small gap remains.
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, but the description adds value the schema does not: it enumerates what body.filters can narrow by (type, authors, cluster, created_at/modified_at, show_obsolete) and explains the next_cursor -> body.cursor round trip. It still omits the order_by/highlight 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 opening sentence gives a specific verb and resource ('Full-text search over wiki pages and files') plus the scope of a single page of hits. It is clearly distinguishable from siblings like wiki_pages_get or wiki_pages_revisions_list.
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?
It explicitly routes the agent downstream ('read it with pages_get') and gives clear pagination instructions including the stop condition. It does not name alternatives for other search needs or when-not-to-use, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_pages_updateUpdate Wiki pageAIdempotent
Change a wiki page by numeric id: only the fields set in body change.
body.content REPLACES the whole text — to add to an existing page use pages_append
instead. The Wiki API updates via POST, not PATCH (PATCH returns 405); the SDK already
handles that quirk. Repeating the same call yields the same page state (idempotent). E.g.
{"page_id": 7, "body": {"title": "New name"}}.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Typed request body for ``POST /pages/{id}``: only the fields set are changed. A page's address is not among them: :class:`PageMove` renames or relocates a page. | |
| fields | No | Extra blocks to include in the reply (CSV), e.g. ``content,attributes``. | |
| page_id | Yes | Numeric id of the page to update. | |
| is_silent | No | Do not notify the page's subscribers. | |
| allow_merge | No | Merge with a concurrent edit (3-way merge) instead of failing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by warning that body.content REPLACES the whole text, disclosing the POST-not-PATCH quirk (PATCH returns 405), and clarifying idempotency with a concrete example. The content-overwrite warning is a critical behavioral trait not captured by the destructiveHint=false/idempotentHint=true 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?
Front-loaded with the core action and partial-update rule, followed by the key caveat and alternative. It is dense with backtick/code formatting, and the POST-vs-PATCH implementation quirk is arguably internal detail, but overall each sentence carries useful 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 5-param, nested-object mutation with no output schema, the description covers the essential risks (content replacement), routing (pages_append), and semantics (partial update, idempotency). Remaining details such as merge/silent behavior are left entirely to the 100%-covered schema, which 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?
Schema coverage is 100%, so parameters like page_id, fields, is_silent, and allow_merge are already fully documented and need no description support. The description mostly restates the schema's partial-update and content-replacement semantics rather than adding new parameter-level meaning, so the 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?
States a specific verb and resource ('Change a wiki page by numeric id') and immediately scopes it as a partial update: 'only the fields set in body change.' It also names a sibling (pages_append) so the agent can distinguish it from the append operation without reading either schema.
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?
Explicitly routes one case to an alternative: 'to add to an existing page use pages_append instead,' with the condition attached. It does not, however, address other adjacent operations such as renaming/relocating (which the schema notes belongs to PageMove), so guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_recovery_recoverRestore deleted Wiki pageA
Undo a page delete: redeem a recovery_token and bring the page back.
pages_delete returns the token — it is the only handle to the deleted page. Returns
the restored page's numeric id and permanent slug, and pages_count, how many pages
came back (the page and those under it). No request body; the token in
the path is the whole request.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | UUID4 ``recovery_token`` returned by ``pages_delete``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false; the description adds real context beyond that by disclosing the return payload (numeric ``id``, permanent ``slug``, ``pages_count``) and that the restore cascades to child pages. It doesn't explicitly warn that the token is consumed or that repeat calls fail, which would fully explain the non-idempotent 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?
Front-loads the action ("Undo a page delete") before the mechanics, then uses two tight sentences for token provenance, return values and request shape. No filler or repetition of the title.
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 output schema, the description carries the return-value burden and does so: it names the restored page's id, slug, and the pages_count of cascaded restores. Combined with token provenance and request shape, an agent has everything needed to call 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 coverage is 100% and the schema already documents the token as the UUID4 returned by ``pages_delete``, so the description's token guidance is largely redundant. It does clarify that the token is passed in the path with no request body, which is marginally useful but not substantial.
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?
States a specific action and resource: undo a page delete and restore the page, with the recovery token as the mechanism. It is clearly distinguishable from siblings like wiki_pages_delete and wiki_pages_create, and even names the tool whose output feeds it.
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?
Explains the operative condition clearly: the token comes from ``pages_delete`` and is the only handle to the deleted page, so an agent knows this tool only applies after a delete with a token in hand. It does not state explicit when-not-to-use cases or token expiry semantics, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_resources_listList Wiki page resourcesARead-onlyIdempotent
A page's resources — attachments AND grids — as {type, item} envelopes, auto-paginated.
The unified single-pass listing over what attachments_list and pages_grids_list
expose separately (drains next_cursor internally). Capped at the configured item cap
unless limit is given; narrow with q (title) or types (attachment,grid).
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Optional title search filter. | |
| limit | No | Max resources (omitted: the configured cap). | |
| types | No | Comma-separated kinds to include: ``attachment,grid``. | |
| page_id | Yes | Numeric page id whose resources to list. | |
| order_by | No | Sort field. | |
| order_direction | No | Sort direction for ``order_by``. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered. The description adds real behavioral context beyond that: auto-pagination that drains `next_cursor` internally, and a configured item cap that is overridden by `limit`. It stops short of describing error/edge behavior, but the added pagination and cap semantics are substantive.
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?
Three tightly packed sentences with the return shape and the sibling relationship front-loaded, then the cap/limit caveat. No filler; every clause carries information an agent needs.
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, auto-paginated list tool with no output schema, the description covers return envelope, pagination, cap behavior, and filtering. Sorting (`order_by`/`order_direction`) is left entirely to the schema, but the essential operational facts are present.
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 reiterates the `q` (title) and `types` (`attachment,grid`) semantics that the schema already documents, and only marginally extends `limit` by explaining its interaction with the configured cap. It does not add syntax 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?
States a specific verb and resource (lists a wiki page's attachments AND grids) and immediately differentiates itself from the two siblings it subsumes. An agent can tell exactly what it returns — `{type, item}` envelopes — without opening the schema.
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?
Explicitly names the alternatives (`attachments_list` and `pages_grids_list`) and states the condition that selects this tool: it is the unified single-pass listing over what they expose separately. It also gives narrowing conditions (`q`, `types`), so when-to-use and when-to-prefer-a-sibling are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_uploadsessions_abortAbort Wiki upload sessionADestructive
Cancel one in-progress upload session, discarding its uploaded parts.
Frees the session's quota; the session cannot be resumed afterwards. Returns the
session with status: aborted.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | UUID4 of the upload session. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is known. The description adds real value beyond that: it specifies that uploaded parts are discarded, quota is freed, the session cannot be resumed, and the returned status is 'aborted'.
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 tight sentences with the action and scope front-loaded, followed by the consequences and return status. No filler or 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?
For a single-parameter destructive operation, the description plus annotations cover what the agent needs: what is destroyed, that it is irreversible, and the returned state. No output schema exists but the return value is described inline.
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% (session_id documented as a UUID4), so the schema already does the work. The description adds no additional parameter syntax or format detail, making the baseline 3 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?
States a specific verb (abort/cancel) and resource (upload session) with a scoping qualifier ("one in-progress upload session") that distinguishes it from the sibling wiki_uploadsessions_abort_all. An agent can tell exactly which session is targeted.
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 purpose (cancel a session you no longer want), and the irreversibility note gives context, but the description never states when to abort versus finish or abort_all, nor any prerequisite such as session ownership.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_uploadsessions_abort_allAbort all Wiki upload sessionsADestructive
Cancel EVERY active upload session of the caller, discarding all uploaded parts.
A quota-freeing sweep — use it when stale sessions block new uploads; prefer
uploadsessions_abort to cancel a single known session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the bar is lower, yet the description still adds real substance: it says the sweep affects EVERY session of the caller and that uploaded parts are discarded, which is the concrete damage model. It does not mention whether the abort is reversible or how it is confirmed, so it stops short of a 5.
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, zero filler — the destructive scope is front-loaded and the routing hint follows. Every 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?
For a parameterless, destructive bulk sweep with no output schema, the description supplies scope, damage, trigger, and alternative. Nothing an agent needs to call it correctly is 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?
Zero parameters, so the baseline of 4 applies; the description correctly frames the scope as implicit (caller's sessions) with no inputs to misread.
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?
States a specific verb ('Cancel EVERY active upload session') plus the exact resource and scope ('of the caller'), and the name pair with uploadsessions_abort makes the ALL-vs-single distinction unambiguous. An agent can route between the two without opening either schema.
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?
It names both the trigger condition ('when stale sessions block new uploads') and the alternative sibling with the condition that selects it ('prefer uploadsessions_abort to cancel a single known session'). This is explicit when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_uploadsessions_createCreate Wiki upload sessionA
Open an upload session — step 1 of the Wiki file-upload pipeline.
The returned session_id addresses the session for uploadsessions_parts_upload /
uploadsessions_finish. For a single small file, attachments_upload runs the whole
pipeline in one call instead.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ``file_name`` + total ``file_size`` in bytes (sum of every part). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, idempotent=false, so the write profile is covered. The description adds value beyond that by disclosing the return contract (the returned session_id addresses the session) which is essential since there is no output schema. It omits session lifetime/expiry and any permission requirements, which keeps it short of a 5.
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 waste, and the pipeline position is front-loaded before the alternative routing. Every clause carries load.
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 session-creating write tool with a nested body and no output schema, the description compensates by explaining what the call returns and how it connects to follow-up tools. It stops short of covering session lifetime or auth needs, a minor gap given the annotations and 100% 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% and the nested body fields (file_name, file_size) are fully documented in the schema. The description adds no format or constraint detail for the body beyond what the schema already provides, so baseline 3 is correct.
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?
States a specific verb ('Open an upload session') and resource with explicit scope: 'step 1 of the Wiki file-upload pipeline'. It names the downstream siblings (parts_upload, finish) and the shortcut alternative (attachments_upload), so an agent can place it in the pipeline without opening any schema.
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?
Gives explicit routing: use this to start a session that later calls parts_upload/finish, but use attachments_upload when handling a single small file in one call. The alternative and the condition that selects it are both stated, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_uploadsessions_finishFinish Wiki upload sessionA
Close an upload session after its last part — step 3 of the upload pipeline.
Only a finished session can be attached to a page (attachments_attach). Returns the
session with its final status.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | UUID4 of the upload session. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly=false, idempotent=false, destructive=false), so the bar is lower; the description still adds real behavior: the session must be finished before attachment, and the call returns the session with its final status. It omits what happens if invoked twice or on a session with no parts, which the non-idempotent hint makes relevant.
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, front-loaded with the action and its pipeline position, then the downstream constraint. No 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 single-parameter session-lifecycle tool with no output schema, the description covers purpose, sequencing, and return value. Minor gaps remain around failure/idempotency behavior, but nothing essential to correct invocation is 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?
Only one parameter (session_id) and schema description coverage is 100%, so the schema fully documents it; the description adds no format or semantic detail beyond 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?
Specific verb+resource ('close an upload session') with explicit placement in the pipeline ('step 3 of the upload pipeline'), which cleanly separates it from the sibling upload_part (step 2) and abort 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?
Gives a clear precondition ('after its last part') and a downstream routing cue ('only a finished session can be attached to a page'), naming attachments_attach. It stops short of stating when NOT to use it, e.g. that an incomplete session should be handled with wiki_uploadsessions_abort instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_uploadsessions_getGet Wiki upload sessionARead-onlyIdempotent
Current state of a Wiki file upload session by its UUID (status, file name/size, storage).
Poll this to watch a session move not_started → in_progress → finished before the
file is attached to a page.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | UUID4 of the upload session to inspect. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the bar is lower; the description adds genuine behavioral value by disclosing the session state machine (not_started → in_progress → finished) and the fact that the file only becomes usable after the session finishes. It does not mention polling cadence or any rate limits, so it is not fully 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?
Two tight sentences with the identity/scoping statement front-loaded and the usage directive second. Every clause carries information; nothing is redundant.
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 single-parameter, read-only tool with no output schema, the description does the remaining work by naming the fields the call returns (status, file name/size, storage) and the state values to expect. An agent has enough to call it correctly and interpret results without further documentation.
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 schema already documents session_id as a UUID4. The description reinforces 'by its UUID' but adds no format, validation or sourcing detail beyond what the schema provides, so the 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 states a specific verb and resource ('Current state of a Wiki file upload session by its UUID') and even enumerates the returned fields (status, file name/size, storage), which clearly distinguishes it from the mutating siblings wiki_uploadsessions_create/finish/abort. It stops short of explicitly naming those siblings, so it lands at a strong 4 rather than 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 second sentence gives concrete usage context ('Poll this to watch a session move not_started → in_progress → finished before the file is attached to a page'), telling the agent exactly when this read-only tool is appropriate in the upload lifecycle. It offers clear context but no explicit exclusions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_uploadsessions_parts_uploadUpload Wiki file partAIdempotent
Upload one file part to an open session — step 2 of the upload pipeline.
The base64 data is decoded and sent as raw application/octet-stream bytes.
Parts may be 5-16 MB except the last; a small file fits in a single part_number=1
call. Returns the session (poll status via uploadsessions_get).
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | This part's bytes, base64-encoded. | |
| session_id | Yes | UUID4 of the upload session. | |
| part_number | Yes | 1-based part index (1 for the first part, +1 for each next). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly=false, destructive=false, idempotent=true, openWorld=true), so the bar is lower. The description adds genuinely useful behavior: base64 data is decoded and shipped as raw application/octet-stream, and parts are constrained to 5-16 MB except the last. It also discloses the return (the session).
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?
Three tight sentences, front-loaded with the core action and pipeline stage, followed by encoding detail and size rules. No filler; every sentence carries operational 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 3-param upload step with no output schema, the description covers the action, the byte encoding, the size constraints, the single-part shortcut, and how to observe results via uploadsessions_get. Nothing an agent needs to call it correctly is 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?
Schema coverage is 100%, so baseline is 3, but the description goes beyond it by explaining part sizing (5-16 MB except last) tied to part_number and the decoding applied to data. That is real added meaning over the field 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?
States a specific verb and resource ("Upload one file part") and situates it precisely as "step 2 of the upload pipeline," which distinguishes it from session creation, finishing, and status tools. An agent can tell exactly what this does without opening the schema.
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?
Gives clear context on when to call it (during an open session, step 2), notes a small file fits in a single part_number=1 call, and points to uploadsessions_get for status polling. It doesn't explicitly state the predecessor (uploadsessions_create) or the follow-on finish step as required, so it's strong but not fully prescriptive.
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.
306 tool updates
v0.122.1- Added
datalens_audit_entries_updates_list - Added
datalens_audit_entry_permissions_get - Added
datalens_charts_data_get - Added
datalens_charts_editor_create - Added
datalens_charts_editor_delete - Added
datalens_charts_editor_get - Added
datalens_charts_editor_update - Added
datalens_charts_ql_create - Added
datalens_charts_ql_delete - Added
datalens_charts_ql_get - Added
datalens_charts_ql_update - Added
datalens_charts_wizard_create - Added
datalens_charts_wizard_delete - Added
datalens_charts_wizard_get - Added
datalens_charts_wizard_update - Added
datalens_cloudenvironments_create - Added
datalens_cloudenvironments_delete - Added
datalens_cloudenvironments_get - Added
datalens_cloudenvironments_list - Added
datalens_cloudenvironments_update - Added
datalens_cloudenvironmentstorage_bucket_download_url_create - Added
datalens_cloudenvironmentstorage_bucket_object_metadata_get - Added
datalens_cloudenvironmentstorage_bucket_objects_list - Added
datalens_cloudenvironmentstorage_bucket_upload_url_create - Added
datalens_collections_access_bindings_list - Added
datalens_collections_access_bindings_update - Added
datalens_collections_breadcrumbs_list - Added
datalens_collections_content_list - Added
datalens_collections_create - Added
datalens_collections_delete - Added
datalens_collections_delete_bulk - Added
datalens_collections_get - Added
datalens_collections_list_by_ids - Added
datalens_collections_move - Added
datalens_collections_move_bulk - Added
datalens_collections_permissions_get_root - Added
datalens_collections_update - Added
datalens_connections_create - Added
datalens_connections_delete - Added
datalens_connections_get - Added
datalens_connections_update - Added
datalens_dashboards_create - Added
datalens_dashboards_delete - Added
datalens_dashboards_get - Added
datalens_dashboards_update - Added
datalens_datasets_create - Added
datalens_datasets_data_get - Added
datalens_datasets_delete - Added
datalens_datasets_get - Added
datalens_datasets_update - Added
datalens_datasets_validate - Added
datalens_embeddingsecrets_create - Added
datalens_embeddingsecrets_delete - Added
datalens_embeddingsecrets_get - Added
datalens_embeddingsecrets_list - Added
datalens_embeds_create - Added
datalens_embeds_delete - Added
datalens_embeds_list - Added
datalens_embeds_update - Added
datalens_entries_list - Added
datalens_entries_permissions_get - Added
datalens_entries_relations_list - Added
datalens_entries_rename - Added
datalens_entries_revisions_list - Added
datalens_entrylocks_create - Added
datalens_entrylocks_delete - Added
datalens_entrylocks_extend - Added
datalens_htmlpages_create - Added
datalens_htmlpages_delete - Added
datalens_htmlpages_get - Added
datalens_htmlpages_preview_url_get - Added
datalens_htmlpages_update - Added
datalens_lakehouseoperations_get - Added
datalens_licensing_licenses_assign - Added
datalens_licensing_licenses_list - Added
datalens_licensing_limit_get - Added
datalens_licensing_limit_set - Added
datalens_members_list - Added
datalens_permissions_get_bulk - Added
datalens_reports_create - Added
datalens_reports_delete - Added
datalens_reports_get - Added
datalens_reports_update - Added
datalens_restcatalogs_create - Added
datalens_restcatalogs_list - Added
datalens_sharedentries_access_bindings_list - Added
datalens_sharedentries_access_bindings_update - Added
datalens_sparkapplications_cancel - Added
datalens_sparkapplications_create - Added
datalens_sparkapplications_get - Added
datalens_sparkapplications_list - Added
datalens_sparkapplications_log_list - Added
datalens_sparkclusters_create - Added
datalens_sparkclusters_delete - Added
datalens_sparkclusters_get - Added
datalens_sparkclusters_list - Added
datalens_sparkclusters_resource_presets_get - Added
datalens_sparkclusters_resource_presets_list - Added
datalens_sparkclusters_start - Added
datalens_sparkclusters_stop - Added
datalens_sqlqueries_create - Added
datalens_sqlqueries_delete - Added
datalens_sqlqueries_get - Added
datalens_sqlqueries_run - Added
datalens_sqlqueries_update - Added
datalens_tenant_details_get - Added
datalens_trinoclusters_catalog_create - Added
datalens_trinoclusters_catalog_delete - Added
datalens_trinoclusters_create - Added
datalens_trinoclusters_delete - Added
datalens_trinoclusters_get - Added
datalens_trinoclusters_list - Added
datalens_trinoclusters_resource_preset_get - Added
datalens_trinoclusters_resource_presets_list - Added
datalens_trinoclusters_start - Added
datalens_trinoclusters_stop - Added
datalens_workbookexports_cancel - Added
datalens_workbookexports_result_get - Added
datalens_workbookexports_start - Added
datalens_workbookexports_status_get - Added
datalens_workbookimports_start - Added
datalens_workbookimports_status_get - Added
datalens_workbooks_access_bindings_list - Added
datalens_workbooks_access_bindings_update - Added
datalens_workbooks_create - Added
datalens_workbooks_delete - Added
datalens_workbooks_delete_bulk - Added
datalens_workbooks_entries_list - Added
datalens_workbooks_get - Added
datalens_workbooks_list - Added
datalens_workbooks_list_by_ids - Added
datalens_workbooks_move - Added
datalens_workbooks_move_bulk - Added
datalens_workbooks_update - Removed
forms_access_get - Added
forms_access_list - Removed
forms_access_set - Added
forms_access_update - Changed
forms_answers_list4 fields changed- added
Input schema / properties / limitAdded value: +{ + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Max answers to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS)." +} - added
Input schema / properties / use_slugs / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / use_slugs / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / use_slugs / typeRemoved value: -"boolean"
- Removed
forms_conditions_hook_set_operator - Added
forms_conditions_hook_update_operator - Removed
forms_conditions_page_set_operator - Added
forms_conditions_page_update_operator - Removed
forms_conditions_question_set_operator - Added
forms_conditions_question_update_operator - Removed
forms_conditions_submit_set_operator - Added
forms_conditions_submit_update_operator - Changed
forms_filling_get3 fields changed- removed
Input schema / properties / surveyRemoved value: -{ - "description": "Form id, its slug, or an id+verification-key combination.", - "type": "string" -} - added
Input schema / properties / survey_idAdded value: +{ + "description": "Form id, its slug, or an id+verification-key combination.", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "survey" -]New value: +[ + "survey_id" +]
- Changed
forms_filling_submit5 fields changed- removed
Input schema / properties / dry_runRemoved value: -{ - "default": false, - "description": "Validate only — saves nothing and fires no integrations.", - "type": "boolean" -} - removed
Input schema / properties / surveyRemoved value: -{ - "description": "Form id or slug of a published form.", - "type": "string" -} - added
Input schema / properties / survey_idAdded value: +{ + "description": "Form id or slug of a published form.", + "type": "string" +} - added
Input schema / properties / validate_onlyAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Validate only — saves nothing and fires no integrations." +} - changed
Input schema / requiredPrevious value: -[ - "survey", - "body" -]New value: +[ + "survey_id", + "body" +]
- Changed
forms_filling_suggest3 fields changed- removed
Input schema / properties / surveyRemoved value: -{ - "description": "Form id or slug.", - "type": "string" -} - added
Input schema / properties / survey_idAdded value: +{ + "description": "Form id or slug.", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "survey" -]New value: +[ + "survey_id" +]
- Changed
forms_images_clone1 field changed- changed
Input schema / properties / body / properties / name / descriptionPrevious value: -"File name for the clone."New value: +"Ignored by the API: the clone keeps the file name of the original."
- Changed
forms_notifications_list1 field changed- changed
Input schema / properties / survey_id / descriptionPrevious value: -"Only this form's runs (24-char hex)."New value: +"The form whose runs to list (24-char hex); without it, 404."
- Changed
forms_questions_delete3 fields changed- added
Input schema / properties / force / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / force / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / force / typeRemoved value: -"boolean"
- Changed
forms_questions_get3 fields changed- added
Input schema / properties / with_slugs / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / with_slugs / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / with_slugs / typeRemoved value: -"boolean"
- Changed
forms_subscriptions_create4 fields changed- changed
Input schema / properties / body / descriptionPrevious value: -"The integration; ``type`` selects its schema."New value: +"The integration; ``type`` selects its schema. Its schema is not listed here: read `Subscription` with schema_get(service=\"forms\", name=\"Subscription\"), then the definitions it refers to." - removed
Input schema / properties / body / oneOfRemoved value: -[ - { - "additionalProperties": true, - "description": "Send an e-mail.", - "properties": { - "active": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Whether the integration runs." - }, - "attachments": { - "anyOf": [ - { - "additionalProperties": true, - "description": "What a subscription attaches: answer files and fixed files.", - "properties": { - "question": { - "anyOf": [ - { - "additionalProperties": true, - "description": "File questions whose uploads a subscription attaches.", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Attach the files of every question." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the file questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "File questions whose uploads are attached." - }, - "static": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A fixed file attached to every run (sent by ``path``; read back with ``id`` and links).", - "properties": { - "check_status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Scan status: check, ready, infected, error, deleted." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Attachment id (read only)." - }, - "links": { - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Download links (read only)." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "File name (read only)." - }, - "path": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Uploaded file path (from `subscriptions attach`)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Fixed files attached to every run." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Files to attach." - }, - "body": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Message body." - }, - "email_from_title": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Sender name (max 255)." - }, - "email_to_address": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Recipient (max 255)." - }, - "follow": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Notify the form's followers about the run." - }, - "headers": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A name/value pair: an e-mail or HTTP header, a JSON-RPC or function parameter.", - "properties": { - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Header or parameter name (max 255)." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Send it only when the value is not empty." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Value; may embed variables such as {form.name} (max 500)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Extra message headers." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Subscription id (integer, read only)." - }, - "subject": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Message subject (max 255)." - }, - "type": { - "const": "email", - "default": "email", - "description": "Discriminator: email.", - "type": "string" - }, - "variables": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A variable configured on a subscription and referenced from its texts by ``id``.", - "properties": { - "filters": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Filters applied to the value: md5, base64, lower, upper, …." - }, - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable id, referenced from the texts." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable display name." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render only answered questions." - }, - "question": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Question slug the variable reads (single-question types)." - }, - "questions": { - "anyOf": [ - { - "additionalProperties": true, - "description": "Which questions a variable covers (``all``, or the listed slugs).", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cover every question of the form." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the covered questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Questions the variable reads (multi-question types)." - }, - "renderer": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "How the value renders: txt, formatted, yfm, json, …." - }, - "secret": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Secret value (write only)." - }, - "show_filenames": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render file answers as file names." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable type, e.g. form.name or form.question_answer." - }, - "version": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable format version (write only)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variables referenced from the subscription's texts." - } - }, - "required": [ - "type" - ], - "type": "object" - }, - { - "additionalProperties": true, - "description": "Create a Tracker issue.", - "properties": { - "active": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Whether the integration runs." - }, - "assignee": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Assignee login." - }, - "attachments": { - "anyOf": [ - { - "additionalProperties": true, - "description": "What a subscription attaches: answer files and fixed files.", - "properties": { - "question": { - "anyOf": [ - { - "additionalProperties": true, - "description": "File questions whose uploads a subscription attaches.", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Attach the files of every question." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the file questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "File questions whose uploads are attached." - }, - "static": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A fixed file attached to every run (sent by ``path``; read back with ``id`` and links).", - "properties": { - "check_status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Scan status: check, ready, infected, error, deleted." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Attachment id (read only)." - }, - "links": { - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Download links (read only)." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "File name (read only)." - }, - "path": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Uploaded file path (from `subscriptions attach`)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Fixed files attached to every run." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Files to attach." - }, - "author": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Issue author login." - }, - "body": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Issue description." - }, - "fields": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "One Tracker issue field a tracker subscription fills.", - "properties": { - "key": { - "anyOf": [ - { - "type": "string" - }, - { - "additionalProperties": true, - "description": "A Tracker issue field addressed by slug.", - "properties": { - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Field display name." - }, - "slug": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Tracker field key, e.g. tags." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Field type (default string)." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Field key: a slug, or an object with slug/name/type." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Set the field only when the value is not empty." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Field value; may embed variables." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Other issue fields." - }, - "follow": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Notify the form's followers about the run." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Subscription id (integer, read only)." - }, - "issue_type": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Issue type id." - }, - "parent": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Parent issue key." - }, - "priority": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Priority id." - }, - "queue": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Queue key (max 255)." - }, - "subject": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Issue summary." - }, - "type": { - "const": "tracker", - "default": "tracker", - "description": "Discriminator: tracker.", - "type": "string" - }, - "variables": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A variable configured on a subscription and referenced from its texts by ``id``.", - "properties": { - "filters": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Filters applied to the value: md5, base64, lower, upper, …." - }, - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable id, referenced from the texts." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable display name." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render only answered questions." - }, - "question": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Question slug the variable reads (single-question types)." - }, - "questions": { - "anyOf": [ - { - "additionalProperties": true, - "description": "Which questions a variable covers (``all``, or the listed slugs).", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cover every question of the form." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the covered questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Questions the variable reads (multi-question types)." - }, - "renderer": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "How the value renders: txt, formatted, yfm, json, …." - }, - "secret": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Secret value (write only)." - }, - "show_filenames": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render file answers as file names." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable type, e.g. form.name or form.question_answer." - }, - "version": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable format version (write only)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variables referenced from the subscription's texts." - } - }, - "required": [ - "type" - ], - "type": "object" - }, - { - "additionalProperties": true, - "description": "Comment on a Tracker issue.", - "properties": { - "active": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Whether the integration runs." - }, - "attachments": { - "anyOf": [ - { - "additionalProperties": true, - "description": "What a subscription attaches: answer files and fixed files.", - "properties": { - "question": { - "anyOf": [ - { - "additionalProperties": true, - "description": "File questions whose uploads a subscription attaches.", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Attach the files of every question." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the file questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "File questions whose uploads are attached." - }, - "static": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A fixed file attached to every run (sent by ``path``; read back with ``id`` and links).", - "properties": { - "check_status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Scan status: check, ready, infected, error, deleted." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Attachment id (read only)." - }, - "links": { - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Download links (read only)." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "File name (read only)." - }, - "path": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Uploaded file path (from `subscriptions attach`)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Fixed files attached to every run." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Files to attach." - }, - "body": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Comment text." - }, - "fields": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "One Tracker issue field a tracker subscription fills.", - "properties": { - "key": { - "anyOf": [ - { - "type": "string" - }, - { - "additionalProperties": true, - "description": "A Tracker issue field addressed by slug.", - "properties": { - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Field display name." - }, - "slug": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Tracker field key, e.g. tags." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Field type (default string)." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Field key: a slug, or an object with slug/name/type." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Set the field only when the value is not empty." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Field value; may embed variables." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Issue fields to set." - }, - "follow": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Notify the form's followers about the run." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Subscription id (integer, read only)." - }, - "issue": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Issue key to comment on." - }, - "type": { - "const": "tracker_comment", - "default": "tracker_comment", - "description": "Discriminator: tracker_comment.", - "type": "string" - }, - "variables": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A variable configured on a subscription and referenced from its texts by ``id``.", - "properties": { - "filters": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Filters applied to the value: md5, base64, lower, upper, …." - }, - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable id, referenced from the texts." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable display name." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render only answered questions." - }, - "question": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Question slug the variable reads (single-question types)." - }, - "questions": { - "anyOf": [ - { - "additionalProperties": true, - "description": "Which questions a variable covers (``all``, or the listed slugs).", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cover every question of the form." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the covered questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Questions the variable reads (multi-question types)." - }, - "renderer": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "How the value renders: txt, formatted, yfm, json, …." - }, - "secret": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Secret value (write only)." - }, - "show_filenames": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render file answers as file names." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable type, e.g. form.name or form.question_answer." - }, - "version": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable format version (write only)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variables referenced from the subscription's texts." - } - }, - "required": [ - "type" - ], - "type": "object" - }, - { - "additionalProperties": true, - "description": "Write to a Wiki page (text, or a row of a grid).", - "properties": { - "active": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Whether the integration runs." - }, - "body": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Text to write." - }, - "follow": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Notify the form's followers about the run." - }, - "grid_data": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "One Wiki grid cell a wiki subscription fills.", - "properties": { - "key": { - "anyOf": [ - { - "additionalProperties": true, - "description": "A Wiki grid column addressed by slug and type.", - "properties": { - "slug": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Column slug." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Column type." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The grid column." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cell value; may embed variables." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "additionalProperties": true, - "description": "A Wiki grid a wiki subscription appends rows to.", - "properties": { - "cols": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "One Wiki grid cell a wiki subscription fills.", - "properties": { - "key": { - "anyOf": [ - { - "additionalProperties": true, - "description": "A Wiki grid column addressed by slug and type.", - "properties": { - "slug": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Column slug." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Column type." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The grid column." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cell value; may embed variables." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The cells of a new row." - }, - "grid_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Grid id." - }, - "title": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Grid title." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Grid row to add: a list of cells, or a grid with its cells." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Subscription id (integer, read only)." - }, - "insert_to_begin": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Insert at the top of the page instead of the bottom." - }, - "supertag": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Wiki page slug (max 255)." - }, - "type": { - "const": "wiki", - "default": "wiki", - "description": "Discriminator: wiki.", - "type": "string" - }, - "variables": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A variable configured on a subscription and referenced from its texts by ``id``.", - "properties": { - "filters": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Filters applied to the value: md5, base64, lower, upper, …." - }, - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable id, referenced from the texts." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable display name." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render only answered questions." - }, - "question": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Question slug the variable reads (single-question types)." - }, - "questions": { - "anyOf": [ - { - "additionalProperties": true, - "description": "Which questions a variable covers (``all``, or the listed slugs).", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cover every question of the form." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the covered questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Questions the variable reads (multi-question types)." - }, - "renderer": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "How the value renders: txt, formatted, yfm, json, …." - }, - "secret": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Secret value (write only)." - }, - "show_filenames": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render file answers as file names." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable type, e.g. form.name or form.question_answer." - }, - "version": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable format version (write only)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variables referenced from the subscription's texts." - } - }, - "required": [ - "type" - ], - "type": "object" - }, - { - "additionalProperties": true, - "description": "Call a JSON-RPC method.", - "properties": { - "active": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Whether the integration runs." - }, - "follow": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Notify the form's followers about the run." - }, - "headers": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A name/value pair: an e-mail or HTTP header, a JSON-RPC or function parameter.", - "properties": { - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Header or parameter name (max 255)." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Send it only when the value is not empty." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Value; may embed variables such as {form.name} (max 500)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "HTTP headers." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Subscription id (integer, read only)." - }, - "method": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "JSON-RPC method name (max 255)." - }, - "params": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A name/value pair: an e-mail or HTTP header, a JSON-RPC or function parameter.", - "properties": { - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Header or parameter name (max 255)." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Send it only when the value is not empty." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Value; may embed variables such as {form.name} (max 500)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Call parameters." - }, - "type": { - "const": "jsonrpc", - "default": "jsonrpc", - "description": "Discriminator: jsonrpc.", - "type": "string" - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Endpoint URL (max 255)." - }, - "variables": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A variable configured on a subscription and referenced from its texts by ``id``.", - "properties": { - "filters": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Filters applied to the value: md5, base64, lower, upper, …." - }, - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable id, referenced from the texts." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable display name." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render only answered questions." - }, - "question": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Question slug the variable reads (single-question types)." - }, - "questions": { - "anyOf": [ - { - "additionalProperties": true, - "description": "Which questions a variable covers (``all``, or the listed slugs).", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cover every question of the form." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the covered questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Questions the variable reads (multi-question types)." - }, - "renderer": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "How the value renders: txt, formatted, yfm, json, …." - }, - "secret": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Secret value (write only)." - }, - "show_filenames": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render file answers as file names." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable type, e.g. form.name or form.question_answer." - }, - "version": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable format version (write only)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variables referenced from the subscription's texts." - } - }, - "required": [ - "type" - ], - "type": "object" - }, - { - "additionalProperties": true, - "description": "Send an HTTP request.", - "properties": { - "active": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Whether the integration runs." - }, - "body": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Request body; may embed variables." - }, - "follow": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Notify the form's followers about the run." - }, - "headers": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A name/value pair: an e-mail or HTTP header, a JSON-RPC or function parameter.", - "properties": { - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Header or parameter name (max 255)." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Send it only when the value is not empty." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Value; may embed variables such as {form.name} (max 500)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "HTTP headers." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Subscription id (integer, read only)." - }, - "method": { - "anyOf": [ - { - "enum": [ - "get", - "post", - "patch", - "put", - "delete" - ], - "type": "string" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "HTTP method: get, post, patch, put or delete." - }, - "type": { - "const": "http", - "default": "http", - "description": "Discriminator: http.", - "type": "string" - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Request URL (max 255)." - }, - "variables": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A variable configured on a subscription and referenced from its texts by ``id``.", - "properties": { - "filters": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Filters applied to the value: md5, base64, lower, upper, …." - }, - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable id, referenced from the texts." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable display name." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render only answered questions." - }, - "question": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Question slug the variable reads (single-question types)." - }, - "questions": { - "anyOf": [ - { - "additionalProperties": true, - "description": "Which questions a variable covers (``all``, or the listed slugs).", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cover every question of the form." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the covered questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Questions the variable reads (multi-question types)." - }, - "renderer": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "How the value renders: txt, formatted, yfm, json, …." - }, - "secret": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Secret value (write only)." - }, - "show_filenames": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render file answers as file names." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable type, e.g. form.name or form.question_answer." - }, - "version": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable format version (write only)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variables referenced from the subscription's texts." - } - }, - "required": [ - "type" - ], - "type": "object" - }, - { - "additionalProperties": true, - "description": "Call a Yandex Cloud function.", - "properties": { - "active": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Whether the integration runs." - }, - "follow": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Notify the form's followers about the run." - }, - "function_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cloud function id (max 255)." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Subscription id (integer, read only)." - }, - "params": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A name/value pair: an e-mail or HTTP header, a JSON-RPC or function parameter.", - "properties": { - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Header or parameter name (max 255)." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Send it only when the value is not empty." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Value; may embed variables such as {form.name} (max 500)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Function parameters." - }, - "type": { - "const": "function", - "default": "function", - "description": "Discriminator: function.", - "type": "string" - }, - "variables": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A variable configured on a subscription and referenced from its texts by ``id``.", - "properties": { - "filters": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Filters applied to the value: md5, base64, lower, upper, …." - }, - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable id, referenced from the texts." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable display name." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render only answered questions." - }, - "question": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Question slug the variable reads (single-question types)." - }, - "questions": { - "anyOf": [ - { - "additionalProperties": true, - "description": "Which questions a variable covers (``all``, or the listed slugs).", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cover every question of the form." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the covered questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Questions the variable reads (multi-question types)." - }, - "renderer": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "How the value renders: txt, formatted, yfm, json, …." - }, - "secret": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Secret value (write only)." - }, - "show_filenames": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render file answers as file names." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable type, e.g. form.name or form.question_answer." - }, - "version": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable format version (write only)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variables referenced from the subscription's texts." - } - }, - "required": [ - "type" - ], - "type": "object" - } -] - added
Input schema / properties / body / typeAdded value: +"object" - added
Input schema / properties / body / x-ycli-schemaAdded value: +"ycli.yandex.forms.subscriptions.models:Subscription"
- Changed
forms_subscriptions_update4 fields changed- changed
Input schema / properties / body / descriptionPrevious value: -"Fields to change; ``type`` must match the integration's type."New value: +"Fields to change; ``type`` must match the integration's type. Its schema is not listed here: read `Subscription` with schema_get(service=\"forms\", name=\"Subscription\"), then the definitions it refers to." - removed
Input schema / properties / body / oneOfRemoved value: -[ - { - "additionalProperties": true, - "description": "Send an e-mail.", - "properties": { - "active": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Whether the integration runs." - }, - "attachments": { - "anyOf": [ - { - "additionalProperties": true, - "description": "What a subscription attaches: answer files and fixed files.", - "properties": { - "question": { - "anyOf": [ - { - "additionalProperties": true, - "description": "File questions whose uploads a subscription attaches.", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Attach the files of every question." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the file questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "File questions whose uploads are attached." - }, - "static": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A fixed file attached to every run (sent by ``path``; read back with ``id`` and links).", - "properties": { - "check_status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Scan status: check, ready, infected, error, deleted." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Attachment id (read only)." - }, - "links": { - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Download links (read only)." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "File name (read only)." - }, - "path": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Uploaded file path (from `subscriptions attach`)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Fixed files attached to every run." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Files to attach." - }, - "body": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Message body." - }, - "email_from_title": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Sender name (max 255)." - }, - "email_to_address": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Recipient (max 255)." - }, - "follow": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Notify the form's followers about the run." - }, - "headers": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A name/value pair: an e-mail or HTTP header, a JSON-RPC or function parameter.", - "properties": { - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Header or parameter name (max 255)." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Send it only when the value is not empty." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Value; may embed variables such as {form.name} (max 500)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Extra message headers." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Subscription id (integer, read only)." - }, - "subject": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Message subject (max 255)." - }, - "type": { - "const": "email", - "default": "email", - "description": "Discriminator: email.", - "type": "string" - }, - "variables": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A variable configured on a subscription and referenced from its texts by ``id``.", - "properties": { - "filters": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Filters applied to the value: md5, base64, lower, upper, …." - }, - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable id, referenced from the texts." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable display name." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render only answered questions." - }, - "question": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Question slug the variable reads (single-question types)." - }, - "questions": { - "anyOf": [ - { - "additionalProperties": true, - "description": "Which questions a variable covers (``all``, or the listed slugs).", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cover every question of the form." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the covered questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Questions the variable reads (multi-question types)." - }, - "renderer": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "How the value renders: txt, formatted, yfm, json, …." - }, - "secret": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Secret value (write only)." - }, - "show_filenames": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render file answers as file names." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable type, e.g. form.name or form.question_answer." - }, - "version": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable format version (write only)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variables referenced from the subscription's texts." - } - }, - "required": [ - "type" - ], - "type": "object" - }, - { - "additionalProperties": true, - "description": "Create a Tracker issue.", - "properties": { - "active": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Whether the integration runs." - }, - "assignee": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Assignee login." - }, - "attachments": { - "anyOf": [ - { - "additionalProperties": true, - "description": "What a subscription attaches: answer files and fixed files.", - "properties": { - "question": { - "anyOf": [ - { - "additionalProperties": true, - "description": "File questions whose uploads a subscription attaches.", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Attach the files of every question." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the file questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "File questions whose uploads are attached." - }, - "static": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A fixed file attached to every run (sent by ``path``; read back with ``id`` and links).", - "properties": { - "check_status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Scan status: check, ready, infected, error, deleted." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Attachment id (read only)." - }, - "links": { - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Download links (read only)." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "File name (read only)." - }, - "path": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Uploaded file path (from `subscriptions attach`)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Fixed files attached to every run." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Files to attach." - }, - "author": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Issue author login." - }, - "body": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Issue description." - }, - "fields": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "One Tracker issue field a tracker subscription fills.", - "properties": { - "key": { - "anyOf": [ - { - "type": "string" - }, - { - "additionalProperties": true, - "description": "A Tracker issue field addressed by slug.", - "properties": { - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Field display name." - }, - "slug": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Tracker field key, e.g. tags." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Field type (default string)." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Field key: a slug, or an object with slug/name/type." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Set the field only when the value is not empty." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Field value; may embed variables." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Other issue fields." - }, - "follow": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Notify the form's followers about the run." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Subscription id (integer, read only)." - }, - "issue_type": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Issue type id." - }, - "parent": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Parent issue key." - }, - "priority": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Priority id." - }, - "queue": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Queue key (max 255)." - }, - "subject": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Issue summary." - }, - "type": { - "const": "tracker", - "default": "tracker", - "description": "Discriminator: tracker.", - "type": "string" - }, - "variables": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A variable configured on a subscription and referenced from its texts by ``id``.", - "properties": { - "filters": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Filters applied to the value: md5, base64, lower, upper, …." - }, - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable id, referenced from the texts." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable display name." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render only answered questions." - }, - "question": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Question slug the variable reads (single-question types)." - }, - "questions": { - "anyOf": [ - { - "additionalProperties": true, - "description": "Which questions a variable covers (``all``, or the listed slugs).", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cover every question of the form." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the covered questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Questions the variable reads (multi-question types)." - }, - "renderer": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "How the value renders: txt, formatted, yfm, json, …." - }, - "secret": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Secret value (write only)." - }, - "show_filenames": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render file answers as file names." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable type, e.g. form.name or form.question_answer." - }, - "version": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable format version (write only)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variables referenced from the subscription's texts." - } - }, - "required": [ - "type" - ], - "type": "object" - }, - { - "additionalProperties": true, - "description": "Comment on a Tracker issue.", - "properties": { - "active": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Whether the integration runs." - }, - "attachments": { - "anyOf": [ - { - "additionalProperties": true, - "description": "What a subscription attaches: answer files and fixed files.", - "properties": { - "question": { - "anyOf": [ - { - "additionalProperties": true, - "description": "File questions whose uploads a subscription attaches.", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Attach the files of every question." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the file questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "File questions whose uploads are attached." - }, - "static": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A fixed file attached to every run (sent by ``path``; read back with ``id`` and links).", - "properties": { - "check_status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Scan status: check, ready, infected, error, deleted." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Attachment id (read only)." - }, - "links": { - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Download links (read only)." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "File name (read only)." - }, - "path": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Uploaded file path (from `subscriptions attach`)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Fixed files attached to every run." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Files to attach." - }, - "body": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Comment text." - }, - "fields": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "One Tracker issue field a tracker subscription fills.", - "properties": { - "key": { - "anyOf": [ - { - "type": "string" - }, - { - "additionalProperties": true, - "description": "A Tracker issue field addressed by slug.", - "properties": { - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Field display name." - }, - "slug": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Tracker field key, e.g. tags." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Field type (default string)." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Field key: a slug, or an object with slug/name/type." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Set the field only when the value is not empty." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Field value; may embed variables." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Issue fields to set." - }, - "follow": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Notify the form's followers about the run." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Subscription id (integer, read only)." - }, - "issue": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Issue key to comment on." - }, - "type": { - "const": "tracker_comment", - "default": "tracker_comment", - "description": "Discriminator: tracker_comment.", - "type": "string" - }, - "variables": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A variable configured on a subscription and referenced from its texts by ``id``.", - "properties": { - "filters": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Filters applied to the value: md5, base64, lower, upper, …." - }, - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable id, referenced from the texts." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable display name." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render only answered questions." - }, - "question": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Question slug the variable reads (single-question types)." - }, - "questions": { - "anyOf": [ - { - "additionalProperties": true, - "description": "Which questions a variable covers (``all``, or the listed slugs).", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cover every question of the form." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the covered questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Questions the variable reads (multi-question types)." - }, - "renderer": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "How the value renders: txt, formatted, yfm, json, …." - }, - "secret": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Secret value (write only)." - }, - "show_filenames": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render file answers as file names." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable type, e.g. form.name or form.question_answer." - }, - "version": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable format version (write only)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variables referenced from the subscription's texts." - } - }, - "required": [ - "type" - ], - "type": "object" - }, - { - "additionalProperties": true, - "description": "Write to a Wiki page (text, or a row of a grid).", - "properties": { - "active": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Whether the integration runs." - }, - "body": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Text to write." - }, - "follow": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Notify the form's followers about the run." - }, - "grid_data": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "One Wiki grid cell a wiki subscription fills.", - "properties": { - "key": { - "anyOf": [ - { - "additionalProperties": true, - "description": "A Wiki grid column addressed by slug and type.", - "properties": { - "slug": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Column slug." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Column type." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The grid column." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cell value; may embed variables." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "additionalProperties": true, - "description": "A Wiki grid a wiki subscription appends rows to.", - "properties": { - "cols": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "One Wiki grid cell a wiki subscription fills.", - "properties": { - "key": { - "anyOf": [ - { - "additionalProperties": true, - "description": "A Wiki grid column addressed by slug and type.", - "properties": { - "slug": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Column slug." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Column type." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The grid column." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cell value; may embed variables." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The cells of a new row." - }, - "grid_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Grid id." - }, - "title": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Grid title." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Grid row to add: a list of cells, or a grid with its cells." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Subscription id (integer, read only)." - }, - "insert_to_begin": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Insert at the top of the page instead of the bottom." - }, - "supertag": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Wiki page slug (max 255)." - }, - "type": { - "const": "wiki", - "default": "wiki", - "description": "Discriminator: wiki.", - "type": "string" - }, - "variables": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A variable configured on a subscription and referenced from its texts by ``id``.", - "properties": { - "filters": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Filters applied to the value: md5, base64, lower, upper, …." - }, - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable id, referenced from the texts." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable display name." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render only answered questions." - }, - "question": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Question slug the variable reads (single-question types)." - }, - "questions": { - "anyOf": [ - { - "additionalProperties": true, - "description": "Which questions a variable covers (``all``, or the listed slugs).", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cover every question of the form." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the covered questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Questions the variable reads (multi-question types)." - }, - "renderer": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "How the value renders: txt, formatted, yfm, json, …." - }, - "secret": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Secret value (write only)." - }, - "show_filenames": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render file answers as file names." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable type, e.g. form.name or form.question_answer." - }, - "version": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable format version (write only)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variables referenced from the subscription's texts." - } - }, - "required": [ - "type" - ], - "type": "object" - }, - { - "additionalProperties": true, - "description": "Call a JSON-RPC method.", - "properties": { - "active": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Whether the integration runs." - }, - "follow": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Notify the form's followers about the run." - }, - "headers": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A name/value pair: an e-mail or HTTP header, a JSON-RPC or function parameter.", - "properties": { - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Header or parameter name (max 255)." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Send it only when the value is not empty." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Value; may embed variables such as {form.name} (max 500)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "HTTP headers." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Subscription id (integer, read only)." - }, - "method": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "JSON-RPC method name (max 255)." - }, - "params": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A name/value pair: an e-mail or HTTP header, a JSON-RPC or function parameter.", - "properties": { - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Header or parameter name (max 255)." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Send it only when the value is not empty." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Value; may embed variables such as {form.name} (max 500)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Call parameters." - }, - "type": { - "const": "jsonrpc", - "default": "jsonrpc", - "description": "Discriminator: jsonrpc.", - "type": "string" - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Endpoint URL (max 255)." - }, - "variables": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A variable configured on a subscription and referenced from its texts by ``id``.", - "properties": { - "filters": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Filters applied to the value: md5, base64, lower, upper, …." - }, - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable id, referenced from the texts." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable display name." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render only answered questions." - }, - "question": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Question slug the variable reads (single-question types)." - }, - "questions": { - "anyOf": [ - { - "additionalProperties": true, - "description": "Which questions a variable covers (``all``, or the listed slugs).", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cover every question of the form." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the covered questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Questions the variable reads (multi-question types)." - }, - "renderer": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "How the value renders: txt, formatted, yfm, json, …." - }, - "secret": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Secret value (write only)." - }, - "show_filenames": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render file answers as file names." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable type, e.g. form.name or form.question_answer." - }, - "version": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable format version (write only)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variables referenced from the subscription's texts." - } - }, - "required": [ - "type" - ], - "type": "object" - }, - { - "additionalProperties": true, - "description": "Send an HTTP request.", - "properties": { - "active": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Whether the integration runs." - }, - "body": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Request body; may embed variables." - }, - "follow": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Notify the form's followers about the run." - }, - "headers": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A name/value pair: an e-mail or HTTP header, a JSON-RPC or function parameter.", - "properties": { - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Header or parameter name (max 255)." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Send it only when the value is not empty." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Value; may embed variables such as {form.name} (max 500)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "HTTP headers." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Subscription id (integer, read only)." - }, - "method": { - "anyOf": [ - { - "enum": [ - "get", - "post", - "patch", - "put", - "delete" - ], - "type": "string" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "HTTP method: get, post, patch, put or delete." - }, - "type": { - "const": "http", - "default": "http", - "description": "Discriminator: http.", - "type": "string" - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Request URL (max 255)." - }, - "variables": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A variable configured on a subscription and referenced from its texts by ``id``.", - "properties": { - "filters": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Filters applied to the value: md5, base64, lower, upper, …." - }, - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable id, referenced from the texts." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable display name." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render only answered questions." - }, - "question": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Question slug the variable reads (single-question types)." - }, - "questions": { - "anyOf": [ - { - "additionalProperties": true, - "description": "Which questions a variable covers (``all``, or the listed slugs).", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cover every question of the form." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the covered questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Questions the variable reads (multi-question types)." - }, - "renderer": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "How the value renders: txt, formatted, yfm, json, …." - }, - "secret": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Secret value (write only)." - }, - "show_filenames": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render file answers as file names." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable type, e.g. form.name or form.question_answer." - }, - "version": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable format version (write only)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variables referenced from the subscription's texts." - } - }, - "required": [ - "type" - ], - "type": "object" - }, - { - "additionalProperties": true, - "description": "Call a Yandex Cloud function.", - "properties": { - "active": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Whether the integration runs." - }, - "follow": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Notify the form's followers about the run." - }, - "function_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cloud function id (max 255)." - }, - "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Subscription id (integer, read only)." - }, - "params": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A name/value pair: an e-mail or HTTP header, a JSON-RPC or function parameter.", - "properties": { - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Header or parameter name (max 255)." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Send it only when the value is not empty." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Value; may embed variables such as {form.name} (max 500)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Function parameters." - }, - "type": { - "const": "function", - "default": "function", - "description": "Discriminator: function.", - "type": "string" - }, - "variables": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "description": "A variable configured on a subscription and referenced from its texts by ``id``.", - "properties": { - "filters": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Filters applied to the value: md5, base64, lower, upper, …." - }, - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable id, referenced from the texts." - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable display name." - }, - "only_with_value": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render only answered questions." - }, - "question": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Question slug the variable reads (single-question types)." - }, - "questions": { - "anyOf": [ - { - "additionalProperties": true, - "description": "Which questions a variable covers (``all``, or the listed slugs).", - "properties": { - "all": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Cover every question of the form." - }, - "items": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Slugs of the covered questions." - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Questions the variable reads (multi-question types)." - }, - "renderer": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "How the value renders: txt, formatted, yfm, json, …." - }, - "secret": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Secret value (write only)." - }, - "show_filenames": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Render file answers as file names." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable type, e.g. form.name or form.question_answer." - }, - "version": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variable format version (write only)." - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Variables referenced from the subscription's texts." - } - }, - "required": [ - "type" - ], - "type": "object" - } -] - added
Input schema / properties / body / typeAdded value: +"object" - added
Input schema / properties / body / x-ycli-schemaAdded value: +"ycli.yandex.forms.subscriptions.models:Subscription"
- Changed
forms_surveys_create2 fields changed- changed
Input schema / properties / body / descriptionPrevious value: -"Typed request body for creating a form (``POST /surveys``).\n\nEvery setting the API publishes is a field. The CLI has an option for the common ones and\ntakes the rest through its repeatable ``--field key=value`` JSON escape, merged onto this\nbody. Unset (``None``) fields are dropped before the request is sent. ``language``,\n``is_published`` and ``is_public`` are accepted and ignored by the API (checked live on\n2026-10-04): they stay for callers that send them, and setting one logs a warning."New value: +"Typed request body for creating a form (``POST /surveys``).\n\nEvery setting the API publishes is a field. The CLI has an option for the common ones; the\nrest are set with its common ``-F key=value`` and ``--body-file``. Unset (``None``) fields\nare dropped before the request is sent. ``language``, ``is_published`` and ``is_public``\nare accepted and ignored by the API (checked live on 2026-10-04): they stay for callers\nthat send them, and setting one logs a warning." - changed
Input schema / properties / body / properties / api_keys / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": false, - "description": "An API key a form's integrations use (``api_keys`` item of a request).", - "properties": { - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Id of an existing key." - }, - "name": { - "description": "Name of the key.", - "type": "string" - }, - "secure": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Whether the value is stored encrypted (the API's default)." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Value of the key." - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": false, + "description": "An API key a form's integrations use (``api_keys`` item of a request).", + "properties": { + "id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Id of an existing key." + }, + "name": { + "description": "Name of the key.", + "type": "string" + }, + "secure": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whether the value is stored encrypted (the API's default)." + }, + "value": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value of the key: a secret, sent and never printed." + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
forms_surveys_list3 fields changed- added
Input schema / properties / show_all / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / show_all / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / show_all / typeRemoved value: -"boolean"
- Changed
forms_surveys_update1 field changed- changed
Input schema / properties / body / properties / api_keys / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": false, - "description": "An API key a form's integrations use (``api_keys`` item of a request).", - "properties": { - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Id of an existing key." - }, - "name": { - "description": "Name of the key.", - "type": "string" - }, - "secure": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Whether the value is stored encrypted (the API's default)." - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Value of the key." - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": false, + "description": "An API key a form's integrations use (``api_keys`` item of a request).", + "properties": { + "id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Id of an existing key." + }, + "name": { + "description": "Name of the key.", + "type": "string" + }, + "secure": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whether the value is stored encrypted (the API's default)." + }, + "value": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value of the key: a secret, sent and never printed." + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Added
schema_get - Added
tracker_attachments_import - Changed
tracker_attachments_upload4 fields changed- removed
Input schema / properties / file_nameRemoved value: -{ - "description": "Name of the file being uploaded.", - "type": "string" -} - added
Input schema / properties / filenameAdded value: +{ + "description": "Name of the file being uploaded.", + "type": "string" +} - changed
Input schema / properties / rename_to / descriptionPrevious value: -"Store the file under this name instead of ``file_name``."New value: +"Store the file under this name instead of ``filename``." - changed
Input schema / requiredPrevious value: -[ - "issue_key", - "file_name", - "data" -]New value: +[ + "issue_key", + "filename", + "data" +]
- Changed
tracker_attachments_upload_temp4 fields changed- removed
Input schema / properties / file_nameRemoved value: -{ - "description": "Name of the file being uploaded.", - "type": "string" -} - added
Input schema / properties / filenameAdded value: +{ + "description": "Name of the file being uploaded.", + "type": "string" +} - changed
Input schema / properties / rename_to / descriptionPrevious value: -"Store the file under this name instead of ``file_name``."New value: +"Store the file under this name instead of ``filename``." - changed
Input schema / requiredPrevious value: -[ - "file_name", - "data" -]New value: +[ + "filename", + "data" +]
- Removed
tracker_bulk_move - Removed
tracker_bulk_transition - Removed
tracker_bulk_update - Changed
tracker_changelog_list3 fields changed- added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key" -]New value: +[ + "issue_key" +]
- Changed
tracker_checklists_clear3 fields changed- added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key" -]New value: +[ + "issue_key" +]
- Changed
tracker_checklists_create4 fields changed- changed
Input schema / properties / body / properties / deadline / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Typed ``deadline`` block for a checklist item or key result write body.", - "properties": { - "date": { - "description": "Deadline date, YYYY-MM-DDThh:mm:ss.sss±hhmm.", - "type": "string" - }, - "deadlineType": { - "default": "date", - "description": "Deadline kind: 'date' or 'quarter'.", - "type": "string" - } - }, - "required": [ - "date" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Typed ``deadline`` block for a checklist item or key result write body.", + "properties": { + "date": { + "description": "Deadline date, YYYY-MM-DDThh:mm:ss.sss±hhmm.", + "type": "string" + }, + "deadlineType": { + "description": "Deadline kind: 'date' or 'quarter'.", + "type": "string" + } + }, + "required": [ + "date", + "deadlineType" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key", - "body" -]New value: +[ + "issue_key", + "body" +]
- Changed
tracker_checklists_delete4 fields changed- added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - changed
Input schema / properties / item_id / descriptionPrevious value: -"Checklist item id, from ``checklists_get``."New value: +"Checklist item id, from ``checklists_list``." - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key", - "item_id" -]New value: +[ + "issue_key", + "item_id" +]
- Removed
tracker_checklists_get - Added
tracker_checklists_list - Changed
tracker_checklists_update5 fields changed- changed
Input schema / properties / body / properties / deadline / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Typed ``deadline`` block for a checklist item or key result write body.", - "properties": { - "date": { - "description": "Deadline date, YYYY-MM-DDThh:mm:ss.sss±hhmm.", - "type": "string" - }, - "deadlineType": { - "default": "date", - "description": "Deadline kind: 'date' or 'quarter'.", - "type": "string" - } - }, - "required": [ - "date" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Typed ``deadline`` block for a checklist item or key result write body.", + "properties": { + "date": { + "description": "Deadline date, YYYY-MM-DDThh:mm:ss.sss±hhmm.", + "type": "string" + }, + "deadlineType": { + "description": "Deadline kind: 'date' or 'quarter'.", + "type": "string" + } + }, + "required": [ + "date", + "deadlineType" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - changed
Input schema / properties / item_id / descriptionPrevious value: -"Checklist item id, from ``checklists_get``."New value: +"Checklist item id, from ``checklists_list``." - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key", - "item_id", - "body" -]New value: +[ + "issue_key", + "item_id", + "body" +]
- Removed
tracker_comments_add - Added
tracker_comments_create - Changed
tracker_comments_delete5 fields changed- added
Input schema / properties / comment_id / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "string" + } +] - removed
Input schema / properties / comment_id / typeRemoved value: -"string" - added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key", - "comment_id" -]New value: +[ + "issue_key", + "comment_id" +]
- Changed
tracker_comments_get5 fields changed- added
Input schema / properties / comment_id / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "string" + } +] - removed
Input schema / properties / comment_id / typeRemoved value: -"string" - added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key", - "comment_id" -]New value: +[ + "issue_key", + "comment_id" +]
- Added
tracker_comments_import - Changed
tracker_comments_list3 fields changed- added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key" -]New value: +[ + "issue_key" +]
- Removed
tracker_comments_react - Added
tracker_comments_reactions_create - Changed
tracker_comments_update5 fields changed- added
Input schema / properties / comment_id / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "string" + } +] - removed
Input schema / properties / comment_id / typeRemoved value: -"string" - added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key", - "comment_id", - "body" -]New value: +[ + "issue_key", + "comment_id", + "body" +]
- Removed
tracker_dashboards_add_cycle_time_widget - Added
tracker_dashboards_widgets_create_cycle_time - Added
tracker_entities_bulk_get - Removed
tracker_entities_bulk_status_get - Removed
tracker_entities_bulk_update - Changed
tracker_entities_checklists_create1 field changed- changed
Input schema / properties / body / items / properties / deadline / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Typed ``deadline`` block for a checklist item or key result write body.", - "properties": { - "date": { - "description": "Deadline date, YYYY-MM-DDThh:mm:ss.sss±hhmm.", - "type": "string" - }, - "deadlineType": { - "default": "date", - "description": "Deadline kind: 'date' or 'quarter'.", - "type": "string" - } - }, - "required": [ - "date" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Typed ``deadline`` block for a checklist item or key result write body.", + "properties": { + "date": { + "description": "Deadline date, YYYY-MM-DDThh:mm:ss.sss±hhmm.", + "type": "string" + }, + "deadlineType": { + "description": "Deadline kind: 'date' or 'quarter'.", + "type": "string" + } + }, + "required": [ + "date", + "deadlineType" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Removed
tracker_entities_checklists_delete_item - Added
tracker_entities_checklists_items_delete - Added
tracker_entities_checklists_items_update - Changed
tracker_entities_checklists_update1 field changed- changed
Input schema / properties / body / items / properties / deadline / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Typed ``deadline`` block for a checklist item or key result write body.", - "properties": { - "date": { - "description": "Deadline date, YYYY-MM-DDThh:mm:ss.sss±hhmm.", - "type": "string" - }, - "deadlineType": { - "default": "date", - "description": "Deadline kind: 'date' or 'quarter'.", - "type": "string" - } - }, - "required": [ - "date" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Typed ``deadline`` block for a checklist item or key result write body.", + "properties": { + "date": { + "description": "Deadline date, YYYY-MM-DDThh:mm:ss.sss±hhmm.", + "type": "string" + }, + "deadlineType": { + "description": "Deadline kind: 'date' or 'quarter'.", + "type": "string" + } + }, + "required": [ + "date", + "deadlineType" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Removed
tracker_entities_checklists_update_item - Changed
tracker_entities_comments_get1 field changed- added
Input schema / properties / expandAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Extra blocks to include in the reply." +}
- Changed
tracker_entities_comments_list1 field changed- added
Input schema / properties / expandAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Extra blocks to include in the reply." +}
- Added
tracker_entities_comments_list_relative - Removed
tracker_entities_comments_relative_list - Removed
tracker_entities_create_report - Removed
tracker_entities_direct_permissions_get - Changed
tracker_entities_links_list1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Comma-separated fields to include in the reply." +}
- Added
tracker_entities_permissions_get_direct - Added
tracker_entities_permissions_update - Added
tracker_entities_permissions_update_direct - Added
tracker_entities_reports_create - Changed
tracker_entities_search3 fields changed- added
Input schema / properties / bodyAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Typed request body for ``POST /entities/{type}/_search``.", + "properties": { + "filter": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Field name → value the entities must have." + }, + "input": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Substring to find in the entity name." + }, + "orderAsc": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Sort ascending; needs ``order_by``." + }, + "orderBy": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Key of the field to sort by." + }, + "rootOnly": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Only entities with no parent." + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "What to find: name substring, filter, sort order; omit for all." +} - removed
Input schema / properties / input_textRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Substring to match in the entity name." -} - removed
Input schema / properties / order_byRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Field key to sort the results by." -}
- Removed
tracker_entities_set_direct_permissions - Removed
tracker_entities_set_permissions - Added
tracker_entities_update_bulk - Added
tracker_fields_categories_create - Added
tracker_fields_categories_update - Removed
tracker_fields_category_create - Removed
tracker_fields_category_update - Removed
tracker_import_comment - Removed
tracker_import_file - Removed
tracker_import_link - Removed
tracker_import_task - Removed
tracker_import_worklog - Changed
tracker_issues_count5 fields changed- added
Input schema / properties / bodyAdded value: +{ + "additionalProperties": true, + "description": "Typed request body for ``POST /issues/_search`` and ``POST /issues/_count``.\n\nGive ``query`` (the query language) or ``filter`` (field name → value); a body with neither\nmatches every issue the caller can see. ``extra=\"allow\"`` passes the API's other keys\n(``keys``, ``queue``, ``order``) through.", + "properties": { + "filter": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Field name → value the issues must have." + }, + "query": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A query-language string." + } + }, + "type": "object" +} - removed
Input schema / properties / queryRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "TQL query; takes precedence over ``queue`` / ``status``." -} - removed
Input schema / properties / queueRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Queue key to count issues in." -} - removed
Input schema / properties / statusRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Status key to count issues in." -} - added
Input schema / requiredAdded value: +[ + "body" +]
- Changed
tracker_issues_create1 field changed- changed
Input schema / properties / body / descriptionPrevious value: -"Typed request body for ``POST /issues/`` (create an issue).\n\nCovers the common fields; ``extra=\"allow\"`` lets any custom (global or queue-local) field\nkey=value pair pass through unvalidated, matching the CLI's ``-F key=value`` escape hatch.\n``type``/``priority`` accept either a bare key string or a ``{\"key\": ...}`` object (both are\nvalid per the Tracker API); the CLI sends the object form."New value: +"Typed request body for ``POST /issues/`` (create an issue).\n\nCovers the common fields; ``extra=\"allow\"`` lets any custom (global or queue-local) field\npass through unvalidated.\n``type``/``priority`` accept either a bare key string or a ``{\"key\": ...}`` object (both are\nvalid per the Tracker API); the CLI sends the object form."
- Changed
tracker_issues_get3 fields changed- added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key" -]New value: +[ + "issue_key" +]
- Added
tracker_issues_import - Changed
tracker_issues_move3 fields changed- added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key", - "queue" -]New value: +[ + "issue_key", + "queue" +]
- Added
tracker_issues_move_bulk - Changed
tracker_issues_search3 fields changed- added
Input schema / properties / bodyAdded value: +{ + "additionalProperties": true, + "description": "Typed request body for ``POST /issues/_search`` and ``POST /issues/_count``.\n\nGive ``query`` (the query language) or ``filter`` (field name → value); a body with neither\nmatches every issue the caller can see. ``extra=\"allow\"`` passes the API's other keys\n(``keys``, ``queue``, ``order``) through.", + "properties": { + "filter": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Field name → value the issues must have." + }, + "query": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A query-language string." + } + }, + "type": "object" +} - removed
Input schema / properties / queryRemoved value: -{ - "description": "TQL query, e.g. ``Queue: QUEUE Status: open``.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[ + "body" +]
- Added
tracker_issues_transition_bulk - Changed
tracker_issues_update4 fields changed- changed
Input schema / properties / body / descriptionPrevious value: -"Typed request body for ``PATCH /issues/{key}`` (update an issue; only sent fields change).\n\n``extra=\"allow\"`` lets any custom field key=value pair pass through, matching the CLI's\n``-F key=value`` escape hatch. Status is NOT changed here — use ``transitions_execute``."New value: +"Typed request body for ``PATCH /issues/{key}`` (update an issue; only sent fields change).\n\n``extra=\"allow\"`` lets any custom field pass through unvalidated. Status is NOT changed\nhere — use ``transitions_execute``." - added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key", - "body" -]New value: +[ + "issue_key", + "body" +]
- Added
tracker_issues_update_bulk - Removed
tracker_links_add - Added
tracker_links_create - Changed
tracker_links_delete3 fields changed- added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key", - "link_id" -]New value: +[ + "issue_key", + "link_id" +]
- Added
tracker_links_import - Changed
tracker_links_list3 fields changed- added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key" -]New value: +[ + "issue_key" +]
- Added
tracker_links_list_filtered - Removed
tracker_links_search - Removed
tracker_projects_queues - Added
tracker_projects_queues_list - Added
tracker_queues_permissions_update - Removed
tracker_queues_set_permissions - Removed
tracker_queues_tag_remove - Added
tracker_queues_tags_delete - Removed
tracker_queues_version_create - Removed
tracker_queues_version_delete - Removed
tracker_queues_version_get - Removed
tracker_queues_version_update - Added
tracker_queues_versions_create - Added
tracker_queues_versions_delete - Added
tracker_queues_versions_get - Added
tracker_queues_versions_update - Changed
tracker_remotelinks_create4 fields changed- changed
Input schema / properties / backlink / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / backlink / descriptionPrevious value: -"``\"true\"`` to also create the mirror link in the external application."New value: +"Also create the mirror link in the external application." - removed
Input schema / properties / body / properties / relationship / defaultRemoved value: -"RELATES" - changed
Input schema / properties / body / requiredPrevious value: -[ - "key", - "origin" -]New value: +[ + "relationship", + "key", + "origin" +]
- Changed
tracker_transitions_execute4 fields changed- changed
Input schema / properties / body / descriptionPrevious value: -"Typed request body for ``POST /issues/{key}/transitions/{id}/_execute``.\n\nOpen-ended: any issue field can be set on transition (e.g. a resolution when closing), so\n``extra=\"allow\"`` lets arbitrary field key=value pairs (from the CLI's ``-F``) pass through\nunvalidated while the common fields below still document themselves in the MCP schema."New value: +"Typed request body for ``POST /issues/{key}/transitions/{id}/_execute``.\n\nOpen-ended: any issue field can be set on transition (e.g. a resolution when closing), so\n``extra=\"allow\"`` lets arbitrary fields pass through\nunvalidated while the common fields below still document themselves in the MCP schema." - added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key", - "transition_id", - "body" -]New value: +[ + "issue_key", + "transition_id", + "body" +]
- Changed
tracker_transitions_list3 fields changed- added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key" -]New value: +[ + "issue_key" +]
- Changed
tracker_triggers_webhook_log_list2 fields changed- added
Input schema / properties / date_fromAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Range start, YYYY-MM-DDThh:mm:ss.sss±hhmm." +} - added
Input schema / properties / date_toAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Range end, YYYY-MM-DDThh:mm:ss.sss±hhmm." +}
- Added
tracker_workflows_actions_update - Removed
tracker_workflows_for_queue - Added
tracker_workflows_list_for_queue - Removed
tracker_workflows_update_action - Changed
tracker_worklog_create5 fields changed- changed
Input schema / properties / body / properties / start / descriptionPrevious value: -"Work start time, YYYY-MM-DDThh:mm:ss.sss±hhmm; now when omitted."New value: +"Work start time, YYYY-MM-DDThh:mm:ss.sss±hhmm." - changed
Input schema / properties / body / requiredPrevious value: -[ - "duration" -]New value: +[ + "duration", + "start" +] - added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key", - "body" -]New value: +[ + "issue_key", + "body" +]
- Changed
tracker_worklog_delete3 fields changed- added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key", - "record_id" -]New value: +[ + "issue_key", + "record_id" +]
- Removed
tracker_worklog_global_list - Added
tracker_worklog_import - Changed
tracker_worklog_list3 fields changed- added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key" -]New value: +[ + "issue_key" +]
- Added
tracker_worklog_list_global - Changed
tracker_worklog_search5 fields changed- added
Input schema / properties / bodyAdded value: +{ + "additionalProperties": false, + "description": "Typed request body for ``POST /worklog/_search``: by author, by creation time, or both.", + "properties": { + "createdAt": { + "anyOf": [ + { + "additionalProperties": false, + "description": "A range of creation times (``createdAt`` of a worklog search).", + "properties": { + "from": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Start of the range, ``YYYY-MM-DDThh:mm:ss``." + }, + "to": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "End of the range, ``YYYY-MM-DDThh:mm:ss``." + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "When the records were created." + }, + "createdBy": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Login or id of the author of the records." + } + }, + "type": "object" +} - removed
Input schema / properties / created_byRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Login or id of the record author to filter by." -} - removed
Input schema / properties / created_fromRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Start of the creation-time range (``YYYY-MM-DDThh:mm:ss``)." -} - removed
Input schema / properties / created_toRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "End of the creation-time range (``YYYY-MM-DDThh:mm:ss``)." -} - added
Input schema / requiredAdded value: +[ + "body" +]
- Changed
tracker_worklog_update3 fields changed- added
Input schema / properties / issue_keyAdded value: +{ + "description": "Issue key, e.g. QUEUE-123.", + "type": "string" +} - removed
Input schema / properties / keyRemoved value: -{ - "description": "Issue key, e.g. QUEUE-123.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "key", - "record_id", - "body" -]New value: +[ + "issue_key", + "record_id", + "body" +]
- Changed
wiki_access_clear3 fields changed- added
Input schema / properties / prevent_selflock / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / prevent_selflock / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / prevent_selflock / typeRemoved value: -"boolean"
- Changed
wiki_access_delete3 fields changed- added
Input schema / properties / prevent_selflock / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / prevent_selflock / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / prevent_selflock / typeRemoved value: -"boolean"
- Changed
wiki_access_update3 fields changed- added
Input schema / properties / prevent_selflock / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / prevent_selflock / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / prevent_selflock / typeRemoved value: -"boolean"
- Changed
wiki_attachments_list1 field changed- changed
Input schema / properties / page_id / descriptionPrevious value: -"Numeric page id, from ``pages_meta`` or a page ref."New value: +"Numeric page id, from ``pages_get_meta`` or a page ref."
- Changed
wiki_comments_list1 field changed- changed
Input schema / properties / page_id / descriptionPrevious value: -"Numeric page id, from ``pages_meta`` or a page ref."New value: +"Numeric page id, from ``pages_get_meta`` or a page ref."
- Changed
wiki_grids_cells_update8 fields changed- removed
Input schema / properties / body / properties / cells / items / properties / value / defaultRemoved value: -null - removed
Input schema / properties / body / properties / cells / items / properties / value / titleRemoved value: -"Value" - changed
Input schema / properties / body / properties / cells / items / requiredPrevious value: -[ - "row_id", - "column_slug" -]New value: +[ + "row_id", + "column_slug", + "value" +] - added
Input schema / properties / body / properties / revision / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / body / properties / revision / defaultAdded value: +null - changed
Input schema / properties / body / properties / revision / descriptionPrevious value: -"Current grid revision (optimistic lock)."New value: +"Grid revision the edit is based on." - removed
Input schema / properties / body / properties / revision / typeRemoved value: -"string" - changed
Input schema / properties / body / requiredPrevious value: -[ - "revision", - "cells" -]New value: +[ + "cells" +]
- Changed
wiki_grids_clone3 fields changed- added
Input schema / properties / body / properties / with_data / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / body / properties / with_data / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / body / properties / with_data / typeRemoved value: -"boolean"
- Removed
wiki_grids_columns_add - Added
wiki_grids_columns_create - Added
wiki_grids_columns_delete - Changed
wiki_grids_columns_move11 fields changed- removed
Input schema / properties / body / properties / column_slug / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / body / properties / column_slug / defaultRemoved value: -null - added
Input schema / properties / body / properties / column_slug / typeAdded value: +"string" - removed
Input schema / properties / body / properties / position / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - removed
Input schema / properties / body / properties / position / defaultRemoved value: -null - added
Input schema / properties / body / properties / position / typeAdded value: +"integer" - added
Input schema / properties / body / properties / revision / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / body / properties / revision / defaultAdded value: +null - changed
Input schema / properties / body / properties / revision / descriptionPrevious value: -"Current grid revision (optimistic lock)."New value: +"Grid revision the edit is based on." - removed
Input schema / properties / body / properties / revision / typeRemoved value: -"string" - changed
Input schema / properties / body / requiredPrevious value: -[ - "revision" -]New value: +[ + "column_slug", + "position" +]
- Removed
wiki_grids_columns_remove - Changed
wiki_grids_get1 field changed- added
Input schema / properties / revisionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Load this past revision instead of the current one." +}
- Removed
wiki_grids_rows_add - Added
wiki_grids_rows_create - Added
wiki_grids_rows_delete - Changed
wiki_grids_rows_move8 fields changed- added
Input schema / properties / body / properties / revision / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / body / properties / revision / defaultAdded value: +null - changed
Input schema / properties / body / properties / revision / descriptionPrevious value: -"Current grid revision (optimistic lock)."New value: +"Grid revision the edit is based on." - removed
Input schema / properties / body / properties / revision / typeRemoved value: -"string" - removed
Input schema / properties / body / properties / row_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / body / properties / row_id / defaultRemoved value: -null - added
Input schema / properties / body / properties / row_id / typeAdded value: +"string" - changed
Input schema / properties / body / requiredPrevious value: -[ - "revision" -]New value: +[ + "row_id" +]
- Removed
wiki_grids_rows_remove - Changed
wiki_grids_update6 fields changed- changed
Input schema / properties / body / descriptionPrevious value: -"Editable fields (``title``, ``default_sort``) plus the required ``revision`` (optimistic lock)."New value: +"Editable fields (``title``, ``default_sort``) plus the required ``revision``." - added
Input schema / properties / body / properties / revision / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / body / properties / revision / defaultAdded value: +null - changed
Input schema / properties / body / properties / revision / descriptionPrevious value: -"Current grid revision (optimistic lock)."New value: +"Grid revision the edit is based on." - removed
Input schema / properties / body / properties / revision / typeRemoved value: -"string" - removed
Input schema / properties / body / requiredRemoved value: -[ - "revision" -]
- Added
wiki_operations_clone_inline_grid_get - Removed
wiki_operations_gridclone_get - Changed
wiki_pages_append4 fields changed- changed
Input schema / properties / body / properties / anchor / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Append relative to a named text anchor (``append-content`` ``anchor``).", - "properties": { - "fallback": { - "default": false, - "description": "Fall back to the body end if the anchor is not found.", - "type": "boolean" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Anchor text to append next to." - }, - "regex": { - "default": false, - "description": "Treat ``name`` as a regular expression.", - "type": "boolean" - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Append relative to a named text anchor (``append-content`` ``anchor``).", + "properties": { + "fallback": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Fall back to the body end if the anchor is not found." + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Anchor text to append next to." + }, + "regex": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Treat ``name`` as a regular expression." + } + }, + "type": "object" + }, + { + "type": "null" + } +] - added
Input schema / properties / is_silent / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / is_silent / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / is_silent / typeRemoved value: -"boolean"
- Changed
wiki_pages_backlinks_list6 fields changed- added
Input schema / properties / for_cluster / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / for_cluster / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / for_cluster / typeRemoved value: -"boolean" - added
Input schema / properties / show_all / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / show_all / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / show_all / typeRemoved value: -"boolean"
- Changed
wiki_pages_clone3 fields changed- added
Input schema / properties / body / properties / subscribe_me / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / body / properties / subscribe_me / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / body / properties / subscribe_me / typeRemoved value: -"boolean"
- Changed
wiki_pages_create8 fields changed- added
Input schema / properties / bodyAdded value: +{ + "additionalProperties": false, + "description": "Typed request body for ``POST /pages``: a new page at ``slug``.", + "properties": { + "access_policy": { + "anyOf": [ + { + "additionalProperties": false, + "description": "Who may open a page, in a create or update body (``access_policy``).", + "properties": { + "access_type": { + "anyOf": [ + { + "enum": [ + "inherited", + "all_staff", + "custom" + ], + "type": "string" + }, + { + "type": "string" + } + ], + "description": "``inherited`` (as the parent), ``all_staff`` or ``custom``." + }, + "all_staff_role": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Role every employee gets under ``all_staff``, e.g. editor." + } + }, + "required": [ + "access_type" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Who may open the page." + }, + "content": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Body of the page in YFM markdown." + }, + "slug": { + "description": "Address of the page, e.g. ``data/x``.", + "type": "string" + }, + "title": { + "description": "Title of the page.", + "type": "string" + } + }, + "required": [ + "slug", + "title" + ], + "type": "object" +} - removed
Input schema / properties / contentRemoved value: -{ - "description": "Page body in YFM markdown.", - "type": "string" -} - added
Input schema / properties / is_silent / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / is_silent / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / is_silent / typeRemoved value: -"boolean" - removed
Input schema / properties / slugRemoved value: -{ - "description": "Target slug, e.g. ``data/x``. Treat it as permanent (a move breaks links).", - "type": "string" -} - removed
Input schema / properties / titleRemoved value: -{ - "description": "Page title.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "slug", - "title", - "content" -]New value: +[ + "body" +]
- Changed
wiki_pages_delete3 fields changed- added
Input schema / properties / recursive / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / recursive / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / recursive / typeRemoved value: -"boolean"
- Removed
wiki_pages_descendants - Removed
wiki_pages_descendants_by_id - Added
wiki_pages_descendants_list - Added
wiki_pages_descendants_list_by_id - Changed
wiki_pages_get3 fields changed- added
Input schema / properties / raise_on_redirect / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / raise_on_redirect / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / raise_on_redirect / typeRemoved value: -"boolean"
- Changed
wiki_pages_get_by_id3 fields changed- added
Input schema / properties / raise_on_redirect / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / raise_on_redirect / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / raise_on_redirect / typeRemoved value: -"boolean"
- Added
wiki_pages_get_meta - Removed
wiki_pages_meta - Changed
wiki_pages_move6 fields changed- added
Input schema / properties / body / properties / copy_inherited_access / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / body / properties / copy_inherited_access / defaultPrevious value: -falseNew value: +null - changed
Input schema / properties / body / properties / copy_inherited_access / descriptionPrevious value: -"Copy the accesses a page inherited from its old parent when it moves. The API refuses a move that leaves this unset (400 INHERITANCE_BEHAVIOR_IS_NOT_SPECIFIED), so it is always sent, ``false`` by default."New value: +"Copy the accesses a page inherited from its old parent when it moves. The API can refuse a move that leaves this unset (400 INHERITANCE_BEHAVIOR_IS_NOT_SPECIFIED)." - removed
Input schema / properties / body / properties / copy_inherited_access / typeRemoved value: -"boolean" - removed
Input schema / properties / dry_runRemoved value: -{ - "default": false, - "description": "Validate the move without applying it.", - "type": "boolean" -} - added
Input schema / properties / validate_onlyAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Validate the move without applying it." +}
- Added
wiki_pages_search - Changed
wiki_pages_update10 fields changed- added
Input schema / properties / allow_merge / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / allow_merge / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / allow_merge / typeRemoved value: -"boolean" - added
Input schema / properties / bodyAdded value: +{ + "additionalProperties": false, + "description": "Typed request body for ``POST /pages/{id}``: only the fields set are changed.\n\nA page's address is not among them: :class:`PageMove` renames or relocates a page.", + "properties": { + "access_policy": { + "anyOf": [ + { + "additionalProperties": false, + "description": "Who may open a page, in a create or update body (``access_policy``).", + "properties": { + "access_type": { + "anyOf": [ + { + "enum": [ + "inherited", + "all_staff", + "custom" + ], + "type": "string" + }, + { + "type": "string" + } + ], + "description": "``inherited`` (as the parent), ``all_staff`` or ``custom``." + }, + "all_staff_role": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Role every employee gets under ``all_staff``, e.g. editor." + } + }, + "required": [ + "access_type" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Who may open the page." + }, + "actuality": { + "anyOf": [ + { + "additionalProperties": false, + "description": "Whether a page is up to date (``actuality`` of an update body).", + "properties": { + "comment": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Note left with the mark." + }, + "is_actual": { + "description": "``True`` marks the page up to date, ``False`` obsolete.", + "type": "boolean" + }, + "links": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Links to the up-to-date material." + } + }, + "required": [ + "is_actual" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Mark the page up to date or obsolete." + }, + "content": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "New body, replacing the whole one." + }, + "owner": { + "anyOf": [ + { + "additionalProperties": false, + "description": "The new owner of a page (``owner`` of an update body).", + "properties": { + "user": { + "anyOf": [ + { + "additionalProperties": true, + "description": "A user by passport ``uid`` or ``cloud_uid``.", + "properties": { + "cloud_uid": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Cloud uid of the user." + }, + "uid": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Passport uid of the user." + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The user who becomes the owner." + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The new owner of the page." + }, + "redirect": { + "anyOf": [ + { + "additionalProperties": false, + "description": "Where a page should redirect to (``redirect`` of an update body).\n\n``page`` has no default: ``None`` is sent as ``null`` and removes the redirect.", + "properties": { + "page": { + "anyOf": [ + { + "additionalProperties": true, + "description": "A page by its numeric ``id`` and its ``slug``.\n\nIn a request either one addresses the page, and ``id`` takes priority when both are given.", + "properties": { + "id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Numeric id of the page." + }, + "slug": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Slug of the page, e.g. ``data/x``." + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "The page to redirect to, by id or slug; ``None`` removes the redirect." + } + }, + "required": [ + "page" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Make the page a redirect, or remove its redirect." + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "New title of the page." + } + }, + "type": "object" +} - removed
Input schema / properties / contentRemoved value: -{ - "description": "New page body in YFM markdown (full replace).", - "type": "string" -} - added
Input schema / properties / is_silent / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / is_silent / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / is_silent / typeRemoved value: -"boolean" - removed
Input schema / properties / titleRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "New title (unchanged when omitted)." -} - changed
Input schema / requiredPrevious value: -[ - "page_id", - "content" -]New value: +[ + "page_id", + "body" +]
- Added
wiki_recovery_recover - Removed
wiki_recovery_restore - Removed
wiki_search_query - Added
wiki_uploadsessions_parts_upload - Removed
wiki_uploadsessions_upload_part
322 tool updates
v0.67.0- First observed
forms_access_get - First observed
forms_access_grant - First observed
forms_access_revoke - First observed
forms_access_set - First observed
forms_answers_delete - First observed
forms_answers_export - First observed
forms_answers_get - First observed
forms_answers_integrations_list - First observed
forms_answers_list - First observed
forms_answers_restore - First observed
forms_conditions_hook_create - First observed
forms_conditions_hook_delete - First observed
forms_conditions_hook_get - First observed
forms_conditions_hook_list - First observed
forms_conditions_hook_set_operator - First observed
forms_conditions_hook_update - First observed
forms_conditions_page_create - First observed
forms_conditions_page_delete - First observed
forms_conditions_page_get - First observed
forms_conditions_page_list - First observed
forms_conditions_page_set_operator - First observed
forms_conditions_page_update - First observed
forms_conditions_question_create - First observed
forms_conditions_question_delete - First observed
forms_conditions_question_get - First observed
forms_conditions_question_list - First observed
forms_conditions_question_set_operator - First observed
forms_conditions_question_update - First observed
forms_conditions_submit_create - First observed
forms_conditions_submit_delete - First observed
forms_conditions_submit_get - First observed
forms_conditions_submit_list - First observed
forms_conditions_submit_set_operator - First observed
forms_conditions_submit_update - First observed
forms_files_delete - First observed
forms_files_verify - First observed
forms_filling_get - First observed
forms_filling_submit - First observed
forms_filling_suggest - First observed
forms_history_list - First observed
forms_hooks_create - First observed
forms_hooks_delete - First observed
forms_hooks_get - First observed
forms_hooks_list - First observed
forms_hooks_update - First observed
forms_images_clone - First observed
forms_keysets_create - First observed
forms_keysets_delete - First observed
forms_keysets_get - First observed
forms_keysets_list - First observed
forms_keysets_update - First observed
forms_me_get - First observed
forms_notifications_cancel - First observed
forms_notifications_errors_list - First observed
forms_notifications_get - First observed
forms_notifications_list - First observed
forms_notifications_restart - First observed
forms_notifications_status_get - First observed
forms_operations_get - First observed
forms_questions_create - First observed
forms_questions_delete - First observed
forms_questions_get - First observed
forms_questions_list - First observed
forms_questions_move - First observed
forms_questions_update - First observed
forms_subscriptions_create - First observed
forms_subscriptions_delete - First observed
forms_subscriptions_get - First observed
forms_subscriptions_list - First observed
forms_subscriptions_update - First observed
forms_surveys_create - First observed
forms_surveys_delete - First observed
forms_surveys_get - First observed
forms_surveys_list - First observed
forms_surveys_publish - First observed
forms_surveys_unpublish - First observed
forms_surveys_update - First observed
forms_variables_list - First observed
status_get - First observed
tracker_applications_list - First observed
tracker_attachments_delete - First observed
tracker_attachments_get - First observed
tracker_attachments_list - First observed
tracker_attachments_upload - First observed
tracker_attachments_upload_temp - First observed
tracker_autoactions_create - First observed
tracker_autoactions_get - First observed
tracker_autoactions_logs_get - First observed
tracker_autoactions_logs_list - First observed
tracker_boards_create - First observed
tracker_boards_delete - First observed
tracker_boards_get - First observed
tracker_boards_list - First observed
tracker_boards_update - First observed
tracker_bulk_get - First observed
tracker_bulk_issues_list - First observed
tracker_bulk_move - First observed
tracker_bulk_transition - First observed
tracker_bulk_update - First observed
tracker_changelog_list - First observed
tracker_checklists_clear - First observed
tracker_checklists_create - First observed
tracker_checklists_delete - First observed
tracker_checklists_get - First observed
tracker_checklists_update - First observed
tracker_columns_create - First observed
tracker_columns_delete - First observed
tracker_columns_get - First observed
tracker_columns_list - First observed
tracker_columns_update - First observed
tracker_comments_add - First observed
tracker_comments_delete - First observed
tracker_comments_get - First observed
tracker_comments_list - First observed
tracker_comments_react - First observed
tracker_comments_update - First observed
tracker_components_create - First observed
tracker_components_delete - First observed
tracker_components_get - First observed
tracker_components_group_permissions_get - First observed
tracker_components_list - First observed
tracker_components_list_for_queue - First observed
tracker_components_update - First observed
tracker_components_user_permissions_get - First observed
tracker_dashboards_add_cycle_time_widget - First observed
tracker_dashboards_create - First observed
tracker_entities_attachments_attach - First observed
tracker_entities_attachments_delete - First observed
tracker_entities_attachments_get - First observed
tracker_entities_attachments_list - First observed
tracker_entities_bulk_status_get - First observed
tracker_entities_bulk_update - First observed
tracker_entities_checklists_create - First observed
tracker_entities_checklists_delete - First observed
tracker_entities_checklists_delete_item - First observed
tracker_entities_checklists_move - First observed
tracker_entities_checklists_update - First observed
tracker_entities_checklists_update_item - First observed
tracker_entities_comments_create - First observed
tracker_entities_comments_delete - First observed
tracker_entities_comments_get - First observed
tracker_entities_comments_list - First observed
tracker_entities_comments_relative_list - First observed
tracker_entities_comments_update - First observed
tracker_entities_create - First observed
tracker_entities_create_report - First observed
tracker_entities_delete - First observed
tracker_entities_direct_permissions_get - First observed
tracker_entities_events_list - First observed
tracker_entities_get - First observed
tracker_entities_links_create - First observed
tracker_entities_links_delete - First observed
tracker_entities_links_list - First observed
tracker_entities_permissions_get - First observed
tracker_entities_search - First observed
tracker_entities_set_direct_permissions - First observed
tracker_entities_set_permissions - First observed
tracker_entities_update - First observed
tracker_fields_category_create - First observed
tracker_fields_category_update - First observed
tracker_fields_create - First observed
tracker_fields_get - First observed
tracker_fields_list - First observed
tracker_fields_update - First observed
tracker_filters_create - First observed
tracker_filters_delete - First observed
tracker_filters_get - First observed
tracker_filters_update - First observed
tracker_gaps_create - First observed
tracker_gaps_delete - First observed
tracker_gaps_search - First observed
tracker_import_comment - First observed
tracker_import_file - First observed
tracker_import_link - First observed
tracker_import_task - First observed
tracker_import_worklog - First observed
tracker_issues_count - First observed
tracker_issues_create - First observed
tracker_issues_get - First observed
tracker_issues_list - First observed
tracker_issues_move - First observed
tracker_issues_scroll_clear - First observed
tracker_issues_search - First observed
tracker_issues_suggest - First observed
tracker_issues_update - First observed
tracker_issuetypes_create - First observed
tracker_issuetypes_list - First observed
tracker_issuetypes_update - First observed
tracker_links_add - First observed
tracker_links_delete - First observed
tracker_links_list - First observed
tracker_links_search - First observed
tracker_linktypes_list - First observed
tracker_localfields_create - First observed
tracker_localfields_get - First observed
tracker_localfields_list - First observed
tracker_localfields_update - First observed
tracker_macros_create - First observed
tracker_macros_delete - First observed
tracker_macros_get - First observed
tracker_macros_list - First observed
tracker_macros_update - First observed
tracker_me_get - First observed
tracker_priorities_create - First observed
tracker_priorities_list - First observed
tracker_priorities_update - First observed
tracker_projects_create - First observed
tracker_projects_delete - First observed
tracker_projects_get - First observed
tracker_projects_list - First observed
tracker_projects_queues - First observed
tracker_projects_update - First observed
tracker_queues_create - First observed
tracker_queues_delete - First observed
tracker_queues_fields_list - First observed
tracker_queues_get - First observed
tracker_queues_group_permissions_get - First observed
tracker_queues_list - First observed
tracker_queues_restore - First observed
tracker_queues_set_permissions - First observed
tracker_queues_tag_remove - First observed
tracker_queues_tags_list - First observed
tracker_queues_user_permissions_get - First observed
tracker_queues_version_create - First observed
tracker_queues_version_delete - First observed
tracker_queues_version_get - First observed
tracker_queues_version_update - First observed
tracker_queues_versions_list - First observed
tracker_remotelinks_create - First observed
tracker_remotelinks_delete - First observed
tracker_remotelinks_list - First observed
tracker_resolutions_create - First observed
tracker_resolutions_list - First observed
tracker_resolutions_update - First observed
tracker_sprints_archive - First observed
tracker_sprints_create - First observed
tracker_sprints_delete - First observed
tracker_sprints_get - First observed
tracker_sprints_list - First observed
tracker_sprints_start - First observed
tracker_sprints_update - First observed
tracker_statuses_create - First observed
tracker_statuses_list - First observed
tracker_statuses_update - First observed
tracker_transitions_execute - First observed
tracker_transitions_list - First observed
tracker_triggers_create - First observed
tracker_triggers_get - First observed
tracker_triggers_list - First observed
tracker_triggers_update - First observed
tracker_triggers_webhook_log_list - First observed
tracker_users_get - First observed
tracker_users_list - First observed
tracker_workflows_create - First observed
tracker_workflows_delete - First observed
tracker_workflows_for_queue - First observed
tracker_workflows_get - First observed
tracker_workflows_list - First observed
tracker_workflows_update - First observed
tracker_workflows_update_action - First observed
tracker_worklog_create - First observed
tracker_worklog_delete - First observed
tracker_worklog_global_list - First observed
tracker_worklog_list - First observed
tracker_worklog_search - First observed
tracker_worklog_update - First observed
wiki_access_clear - First observed
wiki_access_create - First observed
wiki_access_delete - First observed
wiki_access_update - First observed
wiki_attachments_attach - First observed
wiki_attachments_delete - First observed
wiki_attachments_get - First observed
wiki_attachments_list - First observed
wiki_attachments_upload - First observed
wiki_comments_create - First observed
wiki_comments_delete - First observed
wiki_comments_list - First observed
wiki_comments_thread_get - First observed
wiki_comments_thread_list - First observed
wiki_grids_cells_update - First observed
wiki_grids_clone - First observed
wiki_grids_columns_add - First observed
wiki_grids_columns_move - First observed
wiki_grids_columns_remove - First observed
wiki_grids_columns_suggest - First observed
wiki_grids_columns_update - First observed
wiki_grids_create - First observed
wiki_grids_delete - First observed
wiki_grids_get - First observed
wiki_grids_rows_add - First observed
wiki_grids_rows_move - First observed
wiki_grids_rows_remove - First observed
wiki_grids_rows_update - First observed
wiki_grids_update - First observed
wiki_me_get - First observed
wiki_operations_clone_get - First observed
wiki_operations_gridclone_get - First observed
wiki_operations_move_get - First observed
wiki_pages_append - First observed
wiki_pages_backlinks_list - First observed
wiki_pages_clone - First observed
wiki_pages_create - First observed
wiki_pages_delete - First observed
wiki_pages_descendants - First observed
wiki_pages_descendants_by_id - First observed
wiki_pages_get - First observed
wiki_pages_get_by_id - First observed
wiki_pages_grids_list - First observed
wiki_pages_meta - First observed
wiki_pages_move - First observed
wiki_pages_revisions_list - First observed
wiki_pages_update - First observed
wiki_recovery_restore - First observed
wiki_resources_list - First observed
wiki_search_query - First observed
wiki_uploadsessions_abort - First observed
wiki_uploadsessions_abort_all - First observed
wiki_uploadsessions_create - First observed
wiki_uploadsessions_finish - First observed
wiki_uploadsessions_get - First observed
wiki_uploadsessions_upload_part
TDQS
Scored across 457 tools
Many tools overlap heavily: issue list/search/count/suggest, worklog list/search/global, wiki comment list/thread variants, multiple DataLens chart get/update/delete tools split by chart type, and direct vs inherited permission tools. Detailed descriptions often label siblings, but with 457 tools the boundaries blur and misselection is likely.
Most names follow a snake_case service_resource_action pattern, but there are notable deviations such as tracker_me_get, status_get, schema_get, tracker_bulk_issues_list versus tracker_issues_update_bulk, and inconsistent noun/verb ordering. The pattern is still mostly readable, but not uniformly applied.
457 tools is an extreme mismatch for any server, far beyond the 3-15 well-scoped range and well past the 25+ threshold. The surface spans Tracker, Wiki, Forms, and DataLens with many experimental and rarely used operations, making the set unwieldy.
Core CRUD coverage exists for many resources, but there are conspicuous gaps: dashboards have create and one widget tool but no list/get/delete, several org-global objects have no delete endpoint, and some binary download operations are CLI-only. Agents can work around some gaps, but notable dead ends remain.
Maintenance
Related MCP Connectors
Exposes FEDLIN's public security scanners as agent-callable tools over Streamable HTTP.
A read-only verified record of agent-operable GTM tools: search, fetch, compare, track changes.
Anonymous public tools for FlightSweeper. See the published agent boundary before use.
Operate smplkit from your agent: feature flags, config, logging, audit, and scheduled jobs.
Related MCP Servers
- FlicenseAqualityDmaintenanceExposes Yandex Tracker's REST API v3 as tools for LLM clients, enabling issue management and queue operations via natural language.21-
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to manage Yandex Tracker tasks with tools for creating, reading, updating, and transitioning issues via a Streamable HTTP endpoint.-
- AlicenseNot gradedqualityAmaintenanceExposes selected operations of an existing REST/OpenAPI app as MCP tools with generated schemas, permission annotations, and a risk class, requiring explicit opt-in before anything is listed and a second flag for destructive calls. Enforces security-first guardrails such as environment-injected auth, a single confined base URL, timeouts, response caps, rate limiting, and a local test console for trying tools.MIT
- AlicenseNot gradedqualityCmaintenanceEnables read-only MCP access to Yandex Tracker for retrieving issues with comments and attachment metadata, searching issues, reading issue history, downloading attachments, and finding users. It also supports connection status checks and token configuration without exposing secrets.27 npmMIT