Skip to main content
Glama

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 · Русский

CI Coverage PyPI Python License Docs DeepWiki

  • A command line that scripts well. JSON when piped, ready for jq, --dry-run for 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 pipx

The 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

mcp

the MCP server, ycli mcp start

uv tool install 'yandex-cli[mcp]'

service-account

the SDK's ServiceAccountAuth for a Yandex Cloud service-account key

uv add 'yandex-cli[service-account]'

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

/plugin marketplace add bim-ba/ycli, then /plugin install yandex-360@ycli

Claude Desktop

open the .mcpb bundle from the latest release

Cursor

one-click install

VS Code

one-click install

Windsurf (Devin Desktop)

config file

Zed

config file

Codex

config file

Gemini CLI

config file

opencode

config file

Any other MCP client

three values to copy

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 wrap

More: 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 server

More: 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@ycli

It 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 fix

ycli 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 id

Timeouts, 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), and ycli mcp start --read-only serves 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 by scripts/gen_coverage.py; do not edit by hand.

Tracker

Issues & work items

Agile boards

Resource

Operations

CLI

MCP

boards

list · get · create · update · delete

✅

✅

sprints

list · get · create · update · delete · start · archive

✅

✅

columns

list · get · create · update · delete

✅

✅

Dictionaries

Resource

Operations

CLI

MCP

priorities

list · create · update

✅

✅

statuses

list · create · update

✅

✅

resolutions

list · create · update

✅

✅

issuetypes

list · create · update

✅

✅

linktypes

list

✅

✅

Fields, queues & structure

Automation & bulk

Entities, users & search

Not covered (2)

  • ○ GET /boards: boards list reads the paginated GET /boards/_paginate

  • ○ GET /users: users list reads the paginated GET /users/_relative

Wiki

Pages

Collaboration

Grids (dynamic tables)

Async & uploads

Identity

Resource

Operations

CLI

MCP

me

get

✅

✅

Forms

Surveys & questions

Responses & export

Integrations

Resource

Operations

CLI

MCP

hooks

list · get · create · update · delete

✅

✅

subscriptions

list · get · create ◐ · update ◐ · delete · attach

✅

✅

variables

list

✅

✅

notifications

list · get · status_get · restart · cancel · errors_list

✅

✅

Distribution

Resource

Operations

CLI

MCP

keysets

list · get · create · update · delete · download

✅

✅

filling

get · submit · suggest

✅

✅

Media

Resource

Operations

CLI

MCP

files

upload · verify · download · delete

✅

✅

images

upload · clone

✅

✅

Identity

Resource

Operations

CLI

MCP

me

get

✅

✅

DataLens

Organization

Resource

Operations

CLI

MCP

tenant

details_get

✅

✅

members

list

✅

✅

licensing

licenses_list · licenses_assign · limit_get · limit_set

✅

✅

Collections & workbooks

Entries

Data

Resource

Operations

CLI

MCP

connections

get · create · update · delete

✅

✅

datasets

get · create · update · delete · validate · data_get

✅

✅

Charts, dashboards, reports & pages

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

embeds

list · create · update · delete

✅

✅

embeddingsecrets

get · list · create · delete

✅

✅

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

—

API reference

Wiki

56

56

0

0

24 of 24

OpenAPI

Forms

84

84

0

8

26 of 30

OpenAPI

DataLens

143

134

0 (+9 on purpose)

0

131 of 131

OpenAPI

Not wrapped on purpose

Operation

Why

GET /boards

boards list reads the paginated GET /boards/_paginate

GET /users

users list reads the paginated GET /users/_relative

Sent by ycli, not published

ycli

Its request

entities.attachments_download

GET /attachments/{file_id}/{filename}

linktypes.list

GET /linktypes

Parameters and fields

Operation

ycli

Difference

Why it stays

POST /surveys

surveys.create

body fields ycli sends that are not published: is_public, is_published, languagemodel fields that are not published: modified

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

GET /surveys/{survey_id}

surveys.get

model fields that are not published: modified

the API returns it (checked live on 2026-10-04), the published schema omits it

PATCH /surveys/{survey_id}

surveys.update

body fields ycli sends that are not published: is_public, is_published, languagemodel fields that are not published: modified

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

POST /surveys/{survey_id}/hooks/{hook_id}/subscriptions

subscriptions.create

body fields ycli sends that are not published: id

one model builds the body and reads the reply, which carries id

PATCH /surveys/{survey_id}/hooks/{hook_id}/subscriptions/{subscription_id}

subscriptions.update

body fields ycli sends that are not published: id

one model builds the body and reads the reply, which carries id

POST /surveys/{survey_id}/questions

questions.create

body fields ycli sends that are not published: id

the API accepts it and ignores it (checked live on 2026-10-04)

DELETE /surveys/{survey_id}/questions/{question_id}

questions.delete

query parameters ycli sends that are not published: force

the API accepts it and ignores it (checked live on 2026-10-04)

PATCH /surveys/{survey_id}/questions/{question_id}

questions.update

body fields ycli sends that are not published: id

the API accepts it and ignores it (checked live on 2026-10-04)

Not wrapped on purpose

Operation

Why

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)

Development

uv sync --all-extras   # the tests use every extra
uv run pytest          # 100% coverage gate; HTTP is stubbed, no live network

The 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 tools
datalens_audit_entries_updates_listList DataLens entries changed in a periodA
Read-onlyIdempotent

The entries changed in a period, auto-paginated: what, when and by whom.

A deleted entry is listed too, with isDeleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoThe end of the period.
from_YesThe start of the period: an ISO-8601 time with its zone.
limitNoMax entries to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 entriesB
Read-onlyIdempotent

What one user may do with each entry: execute, read, edit, admin, by entry id.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesThe user's id, as ``createdBy`` of an entry gives it.
entry_idsYesThe ids of the entries to ask about.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 chartA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoValues for the chart's parameters, by name: one value or several.
chart_idYesChart id.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entryYesThe new chart: where it lies, its kind (`type`) and its code.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 chartA
Destructive

Delete a chart; the dashboards that show it lose it.

ParametersJSON Schema
NameRequiredDescriptionDefault
chart_idYesChart id.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 chartB
Read-onlyIdempotent

One chart written in the editor: its kind (entry.type) and its tabs of code.

ParametersJSON Schema
NameRequiredDescriptionDefault
branchNoThe version to read when no revision is named: `saved` or `published`. A save writes the saved one: read `saved` before changing a chart.
rev_idNoOne revision to read, as it is; give it or `branch`, not both.
chart_idYesChart id.
workbook_idNoThe workbook the chart lies in.
include_linksNoAlso say what it is linked to.
include_favoriteNoAlso say whether it is a favourite of the caller.
include_permissionsNoAlso say what the caller may do with it.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 chartA
Idempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYes`save` keeps a draft; `publish` makes it the version shown.
entryYesThe chart to save: its `entryId`, its kind (`type`) and its code.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoThe entry's key, in a folder.
dataYesWhat the chart holds: its query and how it is shown.
nameNoThe chart's name.
templateYesThe template of the chart; the API takes only `ql` today.
annotationNoA description of the chart.
workbook_idNoThe workbook to create it in.

TDQS

C2.9/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 chartA
Destructive

Delete a chart; the dashboards that show it lose it.

ParametersJSON Schema
NameRequiredDescriptionDefault
chart_idYesChart id.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 chartB
Read-onlyIdempotent

One QL chart. Unlike a chart of the wizard it comes flat, with no entry around it.

ParametersJSON Schema
NameRequiredDescriptionDefault
branchNoThe version to read when no revision is named: `saved` or `published`. A save writes the saved one: read `saved` before changing a chart.
rev_idNoOne revision to read, as it is; give it or `branch`, not both.
chart_idYesChart id.
workbook_idNoThe workbook the chart lies in.
include_linksNoAlso say what it is linked to.
include_favoriteNoAlso say whether it is a favourite of the caller.
include_permissionsNoAlso say what the caller may do with it.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 chartA
Idempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesWhat the chart holds; it replaces the whole of it.
modeYes`save` keeps a draft; `publish` makes it the version shown.
entry_idYesChart id.
templateYesThe template of the chart; the API takes only `ql` today.
annotationNoA description of the chart.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoThe entry's key, in a folder.
dataYesWhat 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.
nameNoThe chart's name.
annotationNoA description of the chart.
workbook_idNoThe workbook to create it in.

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 chartB
Destructive

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
chart_idYesChart id.

TDQS

B3.3/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 chartA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
branchNoThe version to read when no revision is named: `saved` or `published`. A save writes the saved one: read `saved` before changing a chart.
rev_idNoOne revision to read, as it is; give it or `branch`, not both.
chart_idYesChart id.
workbook_idNoThe workbook the chart lies in.
include_linksNoAlso say what it is linked to.
include_favoriteNoAlso say whether it is a favourite of the caller.
include_permissionsNoAlso say what the caller may do with it.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 chartA
Idempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesWhat 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.
modeYes`save` keeps a draft; `publish` makes it the version shown.
rev_idNoThe revision the change is made on; DataLens does not check it (measured).
chart_idYesChart id.
annotationNoA description of the chart.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe environment's name.
storageNoThe settings of its storage bucket; no bucket when left out.
cloud_idYesThe cloud to make it in.
subnet_idYesThe subnet it uses.
descriptionNoA description.
security_group_idsNoThe security groups the environment uses.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 environmentB
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId of the cloud environment.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 environmentA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId of the cloud environment.
include_permissionsNoAlso say what the caller may do with it.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 environmentsA
Read-onlyIdempotent

The cloud environments of the DataLens instance, auto-paginated.

Experimental in the DataLens API. An instance with none answers an empty list.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax environments to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
filterNoConditions, all of which must hold; each is ``field="value"`` over ``name``, ``cloud_id``, ``status`` or ``created_by_id``.
include_permissionsNoAlso say what the caller may do with it.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 objectA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe path of the object in the bucket.
cloud_environment_idYesId of the cloud environment the bucket belongs to.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 objectA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe path of the object in the bucket.
cloud_environment_idYesId of the cloud environment the bucket belongs to.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 bucketA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax paths to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
prefixNoOnly the paths that start with this.
cloud_environment_idYesId of the cloud environment the bucket belongs to.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe path of the object in the bucket.
sizeYesThe size of the object in bytes, as a string.
content_md5YesThe MD5 digest of the content: 16 bytes, base64-encoded.
cloud_environment_idYesId of the cloud environment the bucket belongs to.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 environmentB
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId of the cloud environment.
nameNoA new name.
storageNoNew settings of its storage bucket.
descriptionNoA new description; an empty one clears it.
security_group_idsNoThe security groups the environment uses.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 collectionB
Read-onlyIdempotent

Who has which role on a collection, auto-paginated.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax subjects to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
collection_idYesCollection id.
get_inherited_bindingsNoAlso list the roles inherited from above.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
deltasYesThe roles to add (`ADD`) and remove.
collection_idYesCollection id.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 collectionC
Read-onlyIdempotent

The collections from the root down to this one.

ParametersJSON Schema
NameRequiredDescriptionDefault
collection_idYesCollection id.
include_permissions_infoNoAlso say what the caller may do with it.

TDQS

C2.8/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 collectionA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoWhich kinds of items to list.
limitNoMax items to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
only_myNoKeep only what the caller created.
order_fieldNoWhat to sort by.
collection_idNoCollection id; `null` lists the root.
filter_stringNoKeep the items whose title has this text.
order_directionNoSort direction.
include_permissions_infoNoAlso say what the caller may do with it.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTitle of the collection.
parent_idNoThe collection to put it in; the root when left out.
descriptionNoDescription of the collection.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 collectionA
Destructive

Delete a collection with everything it holds: nested collections, workbooks, entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
collection_idYesCollection id.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 collectionsB
Destructive

Delete several collections with everything they hold.

ParametersJSON Schema
NameRequiredDescriptionDefault
collection_idsYesCollection ids.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 collectionB
Read-onlyIdempotent

One collection by id: its title, description and parent.

ParametersJSON Schema
NameRequiredDescriptionDefault
collection_idYesCollection id.
include_permissions_infoNoAlso say what the caller may do with it.

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 idB
Read-onlyIdempotent

The collections with these ids; an id the caller cannot see is left out.

ParametersJSON Schema
NameRequiredDescriptionDefault
collection_idsYesCollection ids.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew title to give it on the way.
parent_idNoThe collection to put it in; the root when left out.
collection_idYesCollection id.

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
parent_idNoThe collection to put it in; the root when left out.
collection_idsYesCollection ids.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 permissionsB
Read-onlyIdempotent

Whether the caller may create a collection and a workbook in the root.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 collectionB
Idempotent

Change a collection's title or description; what is not given stays as it is.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew title.
descriptionNoNew description.
collection_idYesCollection id.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
connectionYesThe 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

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 connectionA
Destructive

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_idYesConnection id.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 connectionA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
rev_idNoThe revision to read; the current one when left out.
workbook_idNoThe workbook the connection lies in.
connection_idYesConnection id.
binded_dataset_idNoA dataset bound to the connection, to read it through.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 connectionB
Idempotent

Change the fields given of a connection; returns an acknowledgement.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe 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_idYesConnection id.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entryYesThe 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

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 dashboardC
Destructive

Delete a dashboard.

ParametersJSON Schema
NameRequiredDescriptionDefault
lock_tokenNoThe token of the lock held on the dashboard, when it is locked.
dashboard_idYesDashboard id.

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose2/5

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.

Usage Guidelines2/5

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 dashboardA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
branchNoThe version to read when no revision is named: `saved` or `published`. A save writes the saved one: read `saved` before changing a dashboard.
rev_idNoOne revision to read, as it is; give it or `branch`, not both.
workbook_idNoThe workbook the dashboard lies in.
dashboard_idYesDashboard id.
include_linksNoAlso say what the dashboard is linked to.
include_favoriteNoAlso say whether the dashboard is a favourite.
include_permissionsNoAlso say what the caller may do with it.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 dashboardA
Idempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYes`save` keeps the dashboard as a draft; `publish` shows it to all.
entryYesThe 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_tokenNoThe token of the lock held on the dashboard, when it is locked.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe dataset's name.
rev_idNoThe revision.
datasetYesWhat 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.
optionsNoWhat the editor may do with it.
previewNoWhether it is a preview.
dir_pathNoThe folder to create it in (old placement model).
saved_idNoThe saved revision.
created_viaNoHow it is created: `user` or `workbook_copy`.
workbook_idNoThe workbook to create it in.
published_idNoThe published revision.
collection_idNoThe collection to create it in.

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 datasetA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoThe order of the rows: a field's guid and `asc` or `desc`.
limitNoThe most rows to return; 100 when left out.
offsetNoHow many rows to skip; above zero it needs `sort`.
paramsNoValues for the dataset's parameters.
columnsYesThe guids of the fields to return (`dataset.result_schema[].guid`).
filtersNoThe rows to keep: a field's guid, an operation and its values.
dataset_idYesDataset id.
workbook_idNoThe workbook the dataset lies in.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds 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.

Purpose4/5

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.

Usage Guidelines3/5

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 datasetA
Destructive

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesDataset id.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 datasetA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
rev_idNoThe revision to read; the current one when left out.
dataset_idYesDataset id.
workbook_idNoThe workbook the dataset lies in.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 datasetA
Idempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe 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_idYesDataset id.
workbook_idNoThe workbook the dataset lies in.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 datasetA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe 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_idYesDataset id.
workbook_idNoThe workbook the dataset lies in.
binded_dataset_idNoA dataset bound to this one.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesThe name of the key.
workbook_idYesThe workbook the key belongs to.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 embeddingB
Destructive

Delete a key for embedding. Deleting again answers 404.

ParametersJSON Schema
NameRequiredDescriptionDefault
embedding_secret_idYesId of the key for embedding.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 embeddingA
Read-onlyIdempotent

One key for embedding: its name, its workbook, who made it. Never its private key.

ParametersJSON Schema
NameRequiredDescriptionDefault
embedding_secret_idYesId of the key for embedding.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 embeddingB
Read-onlyIdempotent

The keys for embedding of a workbook, without their private keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
workbook_idYesWorkbook id.

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesThe name of the embed.
deps_idsNoThe entries the embedded one depends on.
entry_idYesThe entry to embed.
settingsYesThe settings of the embed; an empty object is valid.
private_paramsNoThe parameters that go signed, inside the token.
unsigned_paramsNoThe parameters a link may carry unsigned.
public_params_modeYesWhether the default mode of parameters is on.
embedding_secret_idYesThe key for embedding that signs its links.

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 embedA
Destructive

Delete an embed; its links stop working. Deleting again answers 404.

ParametersJSON Schema
NameRequiredDescriptionDefault
embed_idYesEmbed id, from ``embeds_list``.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 embedsB
Read-onlyIdempotent

The embeds of one entry: where a chart or a dashboard is shown on another site.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYesThe id of the entry that is embedded.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 embedA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesThe name of the embed.
deps_idsNoThe entries the embedded one depends on.
embed_idYesEmbed id, from ``embeds_list``.
settingsYesThe settings of the embed; an empty object is valid.
private_paramsNoThe parameters that go signed, inside the token.
unsigned_paramsNoThe parameters a link may carry unsigned.
public_params_modeYesWhether the default mode of parameters is on.
embedding_secret_idYesThe key for embedding that signs its links.

TDQS

A3.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose3/5

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.

Usage Guidelines3/5

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 entriesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoKeep the entries with these ids.
typeNoKeep these types of entries.
limitNoMax entries to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
scopeNoKeep one kind of entry.
scopesNoKeep several kinds of entries.
filtersNoKeep the entries whose name has a text.
order_byNoWhat to sort by and in which direction.
created_byNoKeep what these users created.
include_dataNoAlso give the content of each entry (large).
include_linksNoAlso say what each entry is linked to.
exclude_lockedNoLeave out the entries the caller may not read.
ignore_shared_entriesNoLeave out the shared entries.
ignore_workbook_entriesNoLeave out the entries that lie in workbooks.
include_permissions_infoNoAlso say what the caller may do with it.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 entriesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idsYesEntry ids.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 byA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax relations to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
scopeNoKeep one kind of related entry.
entry_idsYesEntry ids.
link_directionNo`from`: what the entries use; `to`: what uses them.
include_permissions_infoNoAlso say what the caller may do with it.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 entryA
Idempotent

Give an entry another name; its id and what refers to it stay.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe new name.
entry_idYesEntry id.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 revisionsA
Read-onlyIdempotent

The revisions of an entry: who saved it and when. Auto-paginated.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax revisions to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
rev_idsNoKeep only these revisions.
entry_idYesEntry id.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesHow long to hold the lock, in milliseconds.
entry_idYesEntry id.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 entryA
Destructive

Release a lock; with force it releases a lock another editor holds.

An entry that is not locked answers 404.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesThe token of the lock, or `force` for another's lock.
entry_idYesEntry id.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 entryB
Idempotent

Hold a lock longer; the reply says when it expires now.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe token of the lock and its new terms.
entry_idYesEntry id.

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoThe page's key, in a folder.
nameNoThe page's name, in a workbook.
contentYesThe HTML of the page.
annotationNoA description of the page.
workbook_idNoThe workbook to create the page in.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 pageC
Destructive

Delete an HTML page.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYesEntry id.

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 pageA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
branchNoThe version to read when no revision is named: `saved` or `published`.
rev_idNoOne revision, as it is; give it or `branch`, not both.
entry_idYesEntry id.
include_favoriteNoAlso say whether the page is a favourite.
include_permissionsNoAlso say what the caller may do with it.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines5/5

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 pageC
Read-onlyIdempotent

A temporary signed link that shows the page; it stops working after a while.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage of the preview: `en` or `ru`.
themeNoTheme of the preview.
branchNoThe version to read when no revision is named: `saved` or `published`.
rev_idNoOne revision, as it is; give it or `branch`, not both.
entry_idYesEntry id.

TDQS

C2.9/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 pageA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesEither new HTML, `{entryId, content, mode}`, or a revision to make current, `{entryId, revId, mode}`: one of the two, not both.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description 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.

Purpose4/5

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.

Usage Guidelines4/5

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 operationA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
operation_idYesOperation id, from making a cloud environment or a REST catalog.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idsYesThe users to give a licence to.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 licencesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax licences to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
orderNoThe order of the sort.
statusNoOnly the licences in this state.
sort_byNoThe field to sort by.
user_idsNoOnly the licences of these users.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 limitA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 limitA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesThe most licences the instance may hold.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 membersA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax members to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
filterNoA filter expression of the API.
searchNoKeep the members whose name or address has this text.
tab_idNoKeep one kind of subject.
languageNoLanguage of the names.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 objectsA
Read-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".

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idsNoIds of entries.
workbook_idsNoIds of workbooks.
collection_idsNoIds of collections.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoThe report's key, in a folder.
dataYesWhat 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.
metaYesMetadata of the entry; null for none. Required.
nameNoThe report's name.
annotationNoA description of the report.
workbook_idNoThe workbook to create the report in.
include_permissionsNoAlso say what the caller may do with the new report.

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds 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.

Purpose5/5

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.

Usage Guidelines3/5

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 reportB
Destructive

Delete a report.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYesReport id.

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 reportA
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
rev_idNoThe revision of the report to read; the current when left out.
entry_idYesReport id.
include_favoriteNoAlso say whether the report is a favourite.
include_permissionsNoAlso say what the caller may do with it.

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 reportA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesWhat 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.
metaYesMetadata of the entry; null for none. Required.
modeYes`save` keeps the report as a draft; `publish` shows it to all.
rev_idNoThe revision of the report the change is made on.
entry_idYesReport id.
annotationNoA description of the report.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe catalog's name.
labelsNoLabels, a name to a value.
descriptionNoA description.
bucket_settingsYesThe settings of its bucket; an empty object is valid.
cloud_environment_idYesThe cloud environment to make it in.

TDQS

A4.1/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 catalogsA
Read-onlyIdempotent

The REST catalogs of the DataLens instance, auto-paginated.

Experimental in the DataLens API. An instance with none answers an empty list.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax catalogs to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
filterNoConditions such as ``name="…"``; only matching catalogs are kept.
sort_byNoThe field to sort by.
reverse_orderNoSort the other way round.
include_permissionsNoAlso say what the caller may do with it.
cloud_environment_idNoOnly the catalogs of this cloud environment.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_sharedentries_access_bindings_listList the roles on a DataLens shared entryA
Read-onlyIdempotent

Who has which role on a shared entry, auto-paginated.

An entry that lies in a workbook, or an id nothing knows, answers an empty list.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax subjects to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
entry_idYesId of a shared entry: one that lies in a collection.
get_inherited_bindingsNoAlso list the roles inherited from above.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld, so the description's job is supplementary. It does add real behavior: results are auto-paginated, and non-shared or unknown entry ids return an empty list rather than an error, which is valuable edge-case disclosure 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.

Conciseness5/5

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

Two short sentences with no filler; the core purpose is front-loaded and the edge-case caveat follows. Every clause earns its place.

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

Completeness4/5

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 idempotent/readOnly annotations, this covers what an agent needs, including the empty-list behavior. No output schema exists, but as a straightforward list result that is acceptable.

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

Parameters3/5

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 get_inherited_bindings are all documented in the schema. The description only loosely gestures at parameters ('auto-paginated' relates to limit) and adds no format or syntax 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific outcome ('who has which role') on a specific resource ('a shared entry'), so an agent knows it is the access-bindings lister for shared entries. It only implicitly distinguishes itself from sibling listers like datalens_workbooks_access_bindings_list and datalens_collections_access_bindings_list via the qualifier 'shared entry'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied by the 'who has which role' framing, and it adds a useful edge-case note about workbook-resident or unknown ids. But it never states when to prefer this over the workbooks/collections variants nor any prerequisites, 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.

datalens_sharedentries_access_bindings_updateChange the roles on a DataLens shared entryB

Give or take away roles on a shared entry; the roles not named stay as they are.

The roles are datalens.sharedEntries.* (viewer, admin, …).

ParametersJSON Schema
NameRequiredDescriptionDefault
deltasYesThe roles to add (`ADD`) and remove.
entry_idYesId of a shared entry: one that lies in a collection.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare the safety profile (readOnly=false, destructive=false, openWorld=true, idempotent=false). The description adds genuine value beyond them by explaining the delta/partial-update semantics: 'the roles not named stay as they are'. It still omits permission requirements and rate/behavioral caveats, so 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.

Conciseness4/5

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

Two short, front-loaded sentences with the core action stated first and no filler. It is efficient, though the '…' in the role enumeration leaves a small ambiguity that a slightly longer list could have resolved.

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

Completeness3/5

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 no output schema, the description is mostly adequate, covering the delta semantics. It lacks the permission/authorization context an agent would want before attempting a role change, leaving a real gap for a write tool.

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

Parameters4/5

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

Schema coverage is 100%, so the fields are documented, but the description goes beyond the schema by naming the role-id format (``datalens.sharedEntries.*`` with viewer/admin examples), which the schema's generic 'ID of the role assigned to the subject' does not provide. This meaningfully aids filling roleId.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb ('give or take away') and resource ('roles on a shared entry'), so an agent understands it mutates role bindings. However, it does not distinguish itself from close siblings like datalens_collections_access_bindings_update or datalens_workbooks_access_bindings_update, which target the same kind of operation on different resource types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 (e.g. admin rights needed to change bindings), and no alternative named (such as the companion datalens_sharedentries_access_bindings_list for reading current roles). Usage must be inferred 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_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_idYesId of the Spark cluster.
application_idYesId of the Spark application.

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe application to make: ``clusterId``, a ``name``, the ``catalogs`` to attach, and exactly one of ``sparkApplication`` (a JAR), ``pysparkApplication`` (a Python file) or ``sparkConnectApplication``.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 applicationA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_idYesId of the Spark cluster.
application_idYesId of the Spark application.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 applicationsB
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax applications to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
filterNoConditions, all of which must hold; each is ``field="value"`` over ``name``, ``created_by``, ``application_type`` or ``catalog_id``.
cluster_idYesId of the Spark cluster.

TDQS

B3.3/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 applicationB
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNoThe most characters the fragment may hold.
cluster_idYesId of the Spark cluster.
page_tokenNoThe token of the fragment to read; the first when left out.
application_idYesId of the Spark application.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe cluster's name.
configYesThe Spark version and the pools of the driver and executors.
labelsNoLabels of the cluster.
descriptionNoA description of the cluster.
collection_idYesThe collection to create the cluster in.
cloud_environment_idYesThe cloud environment the cluster runs in.

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 clusterA
Destructive

Delete a Spark cluster and return the operation; lakehouseoperations_get reads it.

Experimental API, not measured.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSpark cluster id.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 clusterA
Read-onlyIdempotent

One Spark cluster: its settings, health and status. Experimental API, not measured.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSpark cluster id.

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 clustersA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax clusters to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
filterNoFilter expressions of the API.
collection_idNoKeep the clusters of one collection.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 presetB
Read-onlyIdempotent

One resource preset: its cores and its memory. Experimental API, not measured.

ParametersJSON Schema
NameRequiredDescriptionDefault
resource_preset_idYesResource preset id.
cloud_environment_idYesThe cloud environment the presets are for.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 presetsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax presets to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
cloud_environment_idYesThe cloud environment the presets are for.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_idYesSpark cluster id.

TDQS

A4.1/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_idYesSpark cluster id.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe query's name in the workbook.
queryYesThe text of the query.
paramsNoThe parameters the text takes: a name, a type and a default each.
descriptionNoA description.
workbook_idYesThe workbook to keep it in.
connection_idYesThe connection it runs over: PostgreSQL, ClickHouse, MySQL, Greenplum, Trino.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 queryB
Destructive

Delete a saved SQL query.

Experimental in the DataLens API and written from its document: not measured.

ParametersJSON Schema
NameRequiredDescriptionDefault
sql_query_idYesSQL query id.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 queryA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
rev_idNoThe revision to read; the current one when left out.
sql_query_idYesSQL query id.
include_favoriteNoAlso say whether it is a favourite.
include_permissionsNoAlso say what the caller may do with it.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoThe values of the parameters, by name; one left out takes its default.
sql_query_idYesSQL query id.

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 queryB
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe text of the query.
paramsNoThe parameters the text takes.
descriptionNoA description.
sql_query_idYesSQL query id.
connection_idYesThe connection it runs over: PostgreSQL, ClickHouse, MySQL, Greenplum, Trino.

TDQS

B3.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 instanceA
Read-onlyIdempotent

The DataLens instance the credentials reach (a safe auth probe).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
catalogYesThe REST catalog to attach, by its id.
cluster_idYesId of the Trino cluster.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 clusterA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
catalog_idYesThe id of the REST catalog to detach.
cluster_idYesId of the Trino cluster.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe cluster's name.
labelsNoLabels, a name to a value.
descriptionNoA description.
collection_idYesThe DataLens collection to make it in.
trino_versionNoThe version of Trino; the service's own when left out.
worker_configYesThe workers: their resource preset and how many there may be.
catalogs_configNoThe REST catalogs to attach.
cloud_environment_idYesThe cloud environment to make it in.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 clusterB
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId of the Trino cluster.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 clusterA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId of the Trino cluster.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 clustersA
Read-onlyIdempotent

The Trino clusters of the DataLens instance, auto-paginated.

Experimental in the DataLens API. An instance with none answers an empty list.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax clusters to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
filterNoConditions the clusters must meet.
catalog_idNoOnly the clusters this REST catalog is attached to.
collection_idNoOnly the clusters of this collection.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 presetC
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
resource_preset_idYesId of the resource preset.
cloud_environment_idYesThe cloud environment the presets are of.

TDQS

C2.9/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 presetsB
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax presets to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
cloud_environment_idYesThe cloud environment the presets are of.

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_idYesId of the Trino cluster.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_idYesId of the Trino cluster.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 exportA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
export_idYesExport id, from ``workbookexports_start``.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 resultA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
export_idYesExport id, from ``workbookexports_start``.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
workbook_idYesWorkbook id.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 statusA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
export_idYesExport id, from ``workbookexports_start``.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe ``data`` of ``workbookexports_result_get``: ``export``, ``hash``.
titleYesThe title of the new workbook.
descriptionNoThe description of the new workbook.
collection_idNoThe collection to make it in; the root when left out.

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 statusA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
import_idYesImport id, from ``workbookimports_start``.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 workbookB
Read-onlyIdempotent

Who has which role on a workbook, auto-paginated.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax subjects to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
workbook_idYesWorkbook id.
get_inherited_bindingsNoAlso list the roles inherited from above.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
deltasYesThe roles to add (`ADD`) and remove.
workbook_idYesWorkbook id.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTitle of the workbook.
descriptionNoDescription of the workbook.
collection_idNoThe collection to put the workbook in; the root when left out.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 workbookA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
workbook_idYesWorkbook id.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 workbooksB
Destructive

Delete several workbooks with everything they hold.

ParametersJSON Schema
NameRequiredDescriptionDefault
workbook_idsYesWorkbook ids.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 workbookA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax entries to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
scopeNoKeep only these kinds of entries.
filtersNoKeep the entries whose name has a text.
only_myNoKeep only what the caller created.
order_byNoWhat to sort by and in which direction.
created_byNoKeep only what this user created.
workbook_idYesWorkbook id.
include_permissions_infoNoAlso say what the caller may do with it.

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 workbookB
Read-onlyIdempotent

One workbook by id: its title, description and collection.

ParametersJSON Schema
NameRequiredDescriptionDefault
workbook_idYesWorkbook id.
include_permissions_infoNoAlso say what the caller may do with it.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 workbooksA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax workbooks to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
only_myNoKeep only what the caller created.
order_fieldNoWhat to sort by.
collection_idNoCollection to list; the root when left out.
filter_stringNoKeep the workbooks whose title has this text.
order_directionNoSort direction.
include_permissions_infoNoAlso say what the caller may do with it.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 idA
Read-onlyIdempotent

The workbooks with these ids; an id the caller cannot see is left out.

ParametersJSON Schema
NameRequiredDescriptionDefault
workbook_idsYesWorkbook ids.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew title to give it on the way.
workbook_idYesWorkbook id.
collection_idNoThe collection to put the workbook in; the root when left out.

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
workbook_idsYesWorkbook ids.
collection_idNoThe collection to put the workbook in; the root when left out.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 workbookA
Idempotent

Change a workbook's title or description; what is not given stays as it is.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew title.
descriptionNoNew description.
workbook_idYesWorkbook id.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 accessB
Idempotent

Let a user or a group perform an action on a form; returns every permission.

Granting someone who already has the action changes nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe action and the user or group to add.
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 accessA
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 accessB
Destructive

Stop a user or a group performing an action on a form; returns every permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe action and the user or group to remove.
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 levelB
Idempotent

Set the access level of one action (change or submit); returns every permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe action and its new access level.
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 answerA
Destructive

Delete one answer of a form; answers_restore brings it back.

ParametersJSON Schema
NameRequiredDescriptionDefault
answer_idYesAnswer id (integer) from answers_list.
survey_idYesForm id (24-char hex).

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 answerA
Read-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, …}).

ParametersJSON Schema
NameRequiredDescriptionDefault
answer_idNoNumeric answer id (from ``answers_list``; needs form-edit access).
answer_keyNoAnswer key hash — works without form-edit access.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 integrationsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
answer_idNoNumeric answer id (from ``answers_list``; needs form-edit access).
answer_keyNoAnswer key hash — works without form-edit access.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds 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.

Purpose4/5

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.

Usage Guidelines3/5

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 answersA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax answers to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
date_toNoISO-8601: answers given at or before.
orderingNo``asc`` is oldest first; the default is ``desc``.
date_fromNoISO-8601: answers given at or after.
page_sizeNoAnswers per request (the API's default is 25).
questionsNoComma-separated question ids to return answers for.
survey_idYesForm id (24-char hex), from ``surveys_list``.
use_slugsNoName questions and options by slug instead of id.
answer_formatNo``default`` (cells aligned to ``columns``) or ``raw`` (each answer's data as stored, with no ``columns``).

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
answer_idYesId of the deleted answer (integer).
survey_idYesForm id (24-char hex).

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe new group: operator + at least one clause.
hook_idYesIntegration group id (integer) from hooks_list.
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 conditionB
Destructive

Delete one condition group from an integration group; the others stay untouched.

ParametersJSON Schema
NameRequiredDescriptionDefault
hook_idYesIntegration group id (integer) from hooks_list.
survey_idYesForm id (24-char hex), from ``surveys_list``.
condition_idYesCondition group id (integer) from the matching *_list tool.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 conditionA
Read-onlyIdempotent

One condition group of an integration group by id — its operator and clauses.

ParametersJSON Schema
NameRequiredDescriptionDefault
hook_idYesIntegration group id (integer) from hooks_list.
survey_idYesForm id (24-char hex), from ``surveys_list``.
condition_idYesCondition group id (integer) from the matching *_list tool.

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 conditionsB
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
hook_idYesIntegration group id (integer) from hooks_list.
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 conditionA
Idempotent

Replace an integration group's condition group — a FULL replacement.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesFULL replacement (PATCH validates the complete group).
hook_idYesIntegration group id (integer) from hooks_list.
survey_idYesForm id (24-char hex), from ``surveys_list``.
condition_idYesCondition group id (integer) from the matching *_list tool.

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 operatorB
Idempotent

Set the boolean operator BETWEEN an integration group's condition groups.

ParametersJSON Schema
NameRequiredDescriptionDefault
hook_idYesIntegration group id (integer) from hooks_list.
operatorYesBoolean operator joining the condition groups.
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe new group: operator + at least one clause.
page_idYesPage id (integer) from questions_list pages.
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 conditionB
Destructive

Delete one condition group from a page; the other groups stay untouched.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesPage id (integer) from questions_list pages.
survey_idYesForm id (24-char hex), from ``surveys_list``.
condition_idYesCondition group id (integer) from the matching *_list tool.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 conditionB
Read-onlyIdempotent

One condition group of a page by id — its operator and clause items.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesPage id (integer) from questions_list pages.
survey_idYesForm id (24-char hex), from ``surveys_list``.
condition_idYesCondition group id (integer) from the matching *_list tool.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 conditionsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesPage id (integer) from questions_list pages.
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 conditionA
Idempotent

Replace a page's condition group — a FULL replacement, not a partial update.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesFULL replacement (PATCH validates the complete group).
page_idYesPage id (integer) from questions_list pages.
survey_idYesForm id (24-char hex), from ``surveys_list``.
condition_idYesCondition group id (integer) from the matching *_list tool.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 operatorB
Idempotent

Set the boolean operator BETWEEN a page's condition groups; returns the envelope.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesPage id (integer) from questions_list pages.
operatorYesBoolean operator joining the condition groups.
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe new group: operator + at least one clause.
survey_idYesForm id (24-char hex), from ``surveys_list``.
question_idYesQuestion id (integer) from questions_list.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 conditionA
Destructive

Delete one condition group from a question; the other groups stay untouched.

ParametersJSON Schema
NameRequiredDescriptionDefault
survey_idYesForm id (24-char hex), from ``surveys_list``.
question_idYesQuestion id (integer) from questions_list.
condition_idYesCondition group id (integer) from the matching *_list tool.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 conditionA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
survey_idYesForm id (24-char hex), from ``surveys_list``.
question_idYesQuestion id (integer) from questions_list.
condition_idYesCondition group id (integer) from the matching *_list tool.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 conditionsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
survey_idYesForm id (24-char hex), from ``surveys_list``.
question_idYesQuestion id (integer) from questions_list.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 conditionA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesFULL replacement (PATCH validates the complete group).
survey_idYesForm id (24-char hex), from ``surveys_list``.
question_idYesQuestion id (integer) from questions_list.
condition_idYesCondition group id (integer) from the matching *_list tool.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 operatorA
Idempotent

Set the boolean operator BETWEEN a question's condition groups; returns the envelope.

Group-internal operators are untouched — change those via conditions_question_update.

ParametersJSON Schema
NameRequiredDescriptionDefault
operatorYesBoolean operator joining the condition groups.
survey_idYesForm id (24-char hex), from ``surveys_list``.
question_idYesQuestion id (integer) from questions_list.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe new group: operator + at least one clause.
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 conditionB
Destructive

Delete one condition group from the submit button; the other groups stay untouched.

ParametersJSON Schema
NameRequiredDescriptionDefault
survey_idYesForm id (24-char hex), from ``surveys_list``.
condition_idYesCondition group id (integer) from the matching *_list tool.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 conditionA
Read-onlyIdempotent

One condition group of the submit button by id — its operator and clauses.

ParametersJSON Schema
NameRequiredDescriptionDefault
survey_idYesForm id (24-char hex), from ``surveys_list``.
condition_idYesCondition group id (integer) from the matching *_list tool.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 conditionsB
Read-onlyIdempotent

The submit button's show conditions: the {operator, items} envelope of groups.

These hang directly on the survey (GET /surveys/{id}/conditions).

ParametersJSON Schema
NameRequiredDescriptionDefault
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 conditionA
Idempotent

Replace a submit-button condition group — a FULL replacement, not a partial update.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesFULL replacement (PATCH validates the complete group).
survey_idYesForm id (24-char hex), from ``surveys_list``.
condition_idYesCondition group id (integer) from the matching *_list tool.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 operatorA
Idempotent

Set the boolean operator BETWEEN the submit button's condition groups.

ParametersJSON Schema
NameRequiredDescriptionDefault
operatorYesBoolean operator joining the condition groups.
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 fileA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoFile download URL.
pathNoFile download path (from the upload response).

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 filesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesFile references to check — each a ``{path, url}`` from an upload.
survey_idYesForm id (24-char hex) the files belong to.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 formA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoPersonal-link fill key, when the form uses one.
survey_idYesForm id, its slug, or an id+verification-key combination.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoPersonal-link fill key, when the form uses one.
bodyYesAnswer map keyed by question slug (see ``filling_get`` for the slugs).
survey_idYesForm id or slug of a published form.
validate_onlyNoValidate only — saves nothing and fires no integrations.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 suggestionsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoSearch text typed so far.
questionNoQuestion slug to suggest for.
parent_idNoParent object id scoping a Master/Detail lookup.
survey_idYesForm id or slug.
suggest_idNoComma-separated suggestion-object ids to resolve (the API's ``id``).

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 logA
Read-onlyIdempotent

The changes made to a form — who changed which part, when — across pages.

Capped at the configured item cap unless limit is given.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMost events to return (omitted: the configured cap).
orderingNodesc (newest first, the API default) or asc.
survey_idYesForm id (24-char hex).

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesGroup name and active flag (both optional).
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 groupA
Destructive

Delete an integration group together with its integrations and conditions.

ParametersJSON Schema
NameRequiredDescriptionDefault
hook_idYesIntegration group id (integer) from hooks_list.
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 groupA
Read-onlyIdempotent

One integration group by id, with its conditions and integrations.

ParametersJSON Schema
NameRequiredDescriptionDefault
hook_idYesIntegration group id (integer) from hooks_list.
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 groupsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 groupA
Idempotent

Rename an integration group or switch it on or off; only the fields set change.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesFields to change; unset ones stay.
hook_idYesIntegration group id (integer) from hooks_list.
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe image to copy and the clone's name.
survey_idYesForm id (24-char hex).

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesKey set settings; the API requires ``is_enabled`` on create.
survey_idYesForm id (24-char hex) to add the key set to.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds 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.

Purpose5/5

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.

Usage Guidelines4/5

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 setA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyset_idYesKey set id (integer) to delete.
survey_idYesForm id (24-char hex) the key set belongs to.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 setA
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyset_idYesKey set id (integer) from ``keysets_list``.
survey_idYesForm id (24-char hex) the key set belongs to.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 setsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
survey_idYesForm id (24-char hex), e.g. 6818ceffe010db4f59d11329.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 setA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesFull key set record — name, total and is_enabled are all required.
keyset_idYesKey set id (integer) from ``keysets_list``.
survey_idYesForm id (24-char hex) the key set belongs to.

TDQS

A4.2/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 userA
Read-onlyIdempotent

The authenticated Yandex Forms user (a safe auth probe).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notification_idYesNotification id (integer) from notifications_list.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 runsA
Read-onlyIdempotent

Ids of a form's failed integration runs that are still shown.

Read each with notifications_get.

ParametersJSON Schema
NameRequiredDescriptionDefault
survey_idYesForm id (24-char hex).

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 runC
Read-onlyIdempotent

One integration run with what the integration was given, answered and failed with.

ParametersJSON Schema
NameRequiredDescriptionDefault
notification_idYesNotification id (integer) from notifications_list.

TDQS

C2.8/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 runsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMost runs to return (omitted: the configured cap).
statusNoOnly runs in these states.
hook_idNoOnly this integration group.
visibleNoTrue: only shown runs; false: only hidden ones.
orderingNoasc (oldest first, the API default) or desc.
answer_idNoOnly runs for this answer.
survey_idNoThe form whose runs to list (24-char hex); without it, 404.
created_sinceNoISO-8601: queued at or after.
created_untilNoISO-8601: queued at or before.
finished_sinceNoISO-8601: ended at or after.
finished_untilNoISO-8601: ended at or before.
subscription_idNoOnly this integration.
integration_typeNoOnly runs of this integration type.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notification_idYesNotification id (integer) from notifications_list.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 stateB
Read-onlyIdempotent

The state of one integration run: pending, success, error or canceled.

ParametersJSON Schema
NameRequiredDescriptionDefault
notification_idYesNotification id (integer) from notifications_list.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 operationA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
operation_idYesOperation id returned by an async trigger (e.g. an answers export).

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped question body; the ``type`` tag selects the question schema.
survey_idYesForm id (hex ObjectId) to add the question to.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 questionA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoIgnored by the API: a question that a display condition refers to is refused all the same.
survey_idYesForm id (hex ObjectId) the question belongs to.
question_idYesQuestion id (integer) to delete.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 questionA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
survey_idYesForm id (hex ObjectId) the question belongs to.
with_slugsNoRefer to other questions by slug instead of id.
question_idYesQuestion id (integer) to fetch.

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 questionsB
Read-onlyIdempotent

A form's questions, grouped into pages (the {pages} envelope).

ParametersJSON Schema
NameRequiredDescriptionDefault
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTarget placement: page / page_id / create_page and position.
survey_idYesForm id (hex ObjectId) the question belongs to.
question_idYesQuestion id (integer) to reposition.

TDQS

A3.9/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 questionA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped question body; ``type`` must match the existing question.
survey_idYesForm id (hex ObjectId) the question belongs to.
question_idYesQuestion id (integer) to modify.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe 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_idYesIntegration group id (integer) from hooks_list.
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 integrationA
Destructive

Delete one integration from a hook; the hook's other integrations stay.

ParametersJSON Schema
NameRequiredDescriptionDefault
hook_idYesIntegration group id (integer) from hooks_list.
survey_idYesForm id (24-char hex), from ``surveys_list``.
subscription_idYesIntegration id (integer) from subscriptions_list.

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 integrationB
Read-onlyIdempotent

One integration of a hook by id, with its type-specific settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
hook_idYesIntegration group id (integer) from hooks_list.
survey_idYesForm id (24-char hex), from ``surveys_list``.
subscription_idYesIntegration id (integer) from subscriptions_list.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 integrationsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
hook_idYesIntegration group id (integer) from hooks_list.
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 integrationB
Idempotent

Change an integration: only the fields set in body change.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesFields 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_idYesIntegration group id (integer) from hooks_list.
survey_idYesForm id (24-char hex), from ``surveys_list``.
subscription_idYesIntegration id (integer) from subscriptions_list.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 surveyA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 surveyC
Read-onlyIdempotent

One form's settings by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 surveysA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoKeep the forms whose name matches.
groupNoKeep the forms of this group.
limitNoMax forms to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
orderbyNoSort, a comma list such as ``name,-modified,-count``.
show_allNoFor an administrator, every form of the organization.
favouriteNoOnly favourites (true) or only the others (false).
ownershipNo``mine`` (created by the caller) or ``shared`` (open to them).
publishedNoOnly published (true) or only unpublished (false).

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
survey_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 surveyA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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_idYesForm id (24-char hex), from ``surveys_list``.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 variablesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
survey_idYesForm id (24-char hex).

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 bodyA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe definition to read, as the tool's parameter names it.
serviceYesThe service of the tool, e.g. `forms`.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines4/5

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 statusA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 applicationsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 attachmentA
Destructive

Permanently delete one attachment from a Tracker issue (irreversible).

Get file_id from attachments_list. Returns an acknowledgement on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesAttachment file id, from ``attachments_list``.
issue_keyYesIssue key or id, e.g. ``JUNE-2``.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 metadataA
Read-onlyIdempotent

One attachment's metadata (name, size, MIME type, uploader, download URL).

Downloading the bytes is CLI/SDK-only: ycli tracker attachments download.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesAttachment file id, from ``attachments_list``.
issue_keyYesIssue key or id, e.g. ``JUNE-2``.

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe file's bytes, base64-encoded.
filenameYesName the imported file gets on the issue.
issue_keyYesIssue key, e.g. QUEUE-123.
created_atYesOriginal creation time, ``YYYY-MM-DDThh:mm:ss.sss±hhmm``.
created_byYesLogin or id of the user to record as the file's author.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 attachmentsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_keyYesIssue key or id, e.g. ``JUNE-2``.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe file's bytes, base64-encoded.
filenameYesName of the file being uploaded.
issue_keyYesIssue key or id, e.g. ``JUNE-2``.
rename_toNoStore the file under this name instead of ``filename``.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe file's bytes, base64-encoded.
filenameYesName of the file being uploaded.
rename_toNoStore the file under this name instead of ``filename``.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds 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.

Purpose4/5

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.

Usage Guidelines3/5

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 autoactionA
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
queue_idYesQueue key (case-sensitive, e.g. DESIGN) or numeric queue id.
action_idYesNumeric identifier of the autoaction.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 runA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesIdentifier of the autoaction run (from logs_list).
queue_idYesQueue key (case-sensitive, e.g. DESIGN) or numeric queue id.
action_idYesNumeric identifier of the autoaction.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 runsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queue_idYesQueue key (case-sensitive, e.g. DESIGN) or numeric queue id.
action_idYesNumeric identifier of the autoaction.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 boardA
Destructive

Permanently delete an agile board (irreversible; its issues are not affected).

Returns an acknowledgement on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idYesNumeric identifier of the agile board.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 boardA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idYesNumeric identifier of the agile board.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 boardsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax boards to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 boardA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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_idYesNumeric identifier of the agile board.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 statusA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bulk_idYesBulk-change operation id, e.g. ``1ab23cd4e5678901``.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 issuesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bulk_idYesBulk-change operation id to inspect.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 changelogA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoOrder of the changes.
fieldNoKeep the changes of this field, e.g. ``status``.
limitNoMax changes to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
issue_keyYesIssue key, e.g. QUEUE-123.
change_typeNoKeep the changes of this type, e.g. ``IssueWorkflow``.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 checklistA
Destructive

Permanently delete the ENTIRE checklist of a Tracker issue (all items, irreversible).

Returns the issue without its checklist.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_keyYesIssue key, e.g. QUEUE-123.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``POST /issues/{key}/checklistItems`` (add an item).
issue_keyYesIssue key, e.g. QUEUE-123.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 itemA
Destructive

Permanently remove one item from a Tracker issue's checklist (irreversible).

Get item_id from checklists_list. Returns the issue with its remaining checklist.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYesChecklist item id, from ``checklists_list``.
issue_keyYesIssue key, e.g. QUEUE-123.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 checklistA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_keyYesIssue key, e.g. QUEUE-123.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 itemA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``PATCH /issues/{key}/checklistItems/{item_id}`` (edit an item).
item_idYesChecklist item id, from ``checklists_list``.
issue_keyYesIssue key, e.g. QUEUE-123.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``columns.create`` (``POST /boards/{board_id}/columns/``).
board_idYesNumeric identifier of the agile board.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 columnA
Destructive

Permanently remove a column from an agile board (irreversible).

Returns an acknowledgement on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idYesNumeric identifier of the agile board.
column_idYesNumeric identifier of the board column.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 columnA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idYesNumeric identifier of the board.
column_idYesNumeric identifier of the column.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 columnsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idYesNumeric identifier of the board whose columns to list.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 columnA
Idempotent

Edit a board column; only the fields set in body are changed.

Get column_id from columns_list. Returns the updated column.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``columns.edit`` (``PATCH /boards/{board_id}/columns/{column_id}``). Every field is optional; only the fields you set are sent.
board_idYesNumeric identifier of the agile board.
column_idYesNumeric identifier of the board column.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for adding a comment to an issue or an entity.
issue_keyYesIssue key, e.g. QUEUE-123.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 commentA
Destructive

Permanently delete one comment from a Tracker issue (irreversible).

Get comment_id from comments_list. Returns an acknowledgement on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_keyYesIssue key, e.g. QUEUE-123.
comment_idYesComment id (numeric ``id`` or ``longId``), from ``comments_list``.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 commentB
Read-onlyIdempotent

One comment of a Tracker issue: text, author, edit history and, on request, attachments.

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoExtra fields: ``attachments``, ``html`` or ``all`` (comma-separated).
issue_keyYesIssue key, e.g. QUEUE-123.
comment_idYesComment id (numeric ``id`` or ``longId``), from ``comments_list``.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped body for ``POST /issues/{key}/comments/_import`` — import one comment with history.
issue_keyYesIssue key, e.g. QUEUE-123.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 commentsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax comments to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
expandNoExtra blocks to include in the reply.
issue_keyYesIssue key, e.g. QUEUE-123.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesReaction name, e.g. ``like``, ``dislike`` or ``fire``.
issue_keyYesIssue key, e.g. QUEUE-123.
comment_idYesComment id (numeric ``id`` or ``longId``), from ``comments_list``.

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 commentA
Idempotent

Replace the text of an existing comment on a Tracker issue.

Get comment_id from comments_list. Returns the updated comment.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``PATCH /issues/{key}/comments/{id}`` (edit a comment).
issue_keyYesIssue key, e.g. QUEUE-123.
comment_idYesComment id (numeric ``id`` or ``longId``), from ``comments_list``.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``POST /components`` (create a component).

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 componentB
Destructive

Permanently delete a component (irreversible). Returns an acknowledgement.

ParametersJSON Schema
NameRequiredDescriptionDefault
component_idYesNumeric id of the component, from ``components_list``.

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 componentB
Read-onlyIdempotent

One component with its queue, owner, description and auto-assign flag.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return, e.g. ``name,description,lead``.
component_idYesNumeric id of the component, from ``components_list``.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 componentB
Read-onlyIdempotent

What one group may do on a component (create, read, write, deny).

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYesNumeric id of the group.
component_idYesNumeric id of the component.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 componentsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 queueA
Read-onlyIdempotent

The components of one queue, so you need not filter components_list by queue.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoComma-separated extra fields: ``version,description,lead,assignAuto``.
queue_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 componentA
Idempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``PATCH /components/{id}?version=`` (edit a component). Only the fields that are set are sent, so omitted fields stay unchanged.
versionNoCurrent version of the object (optimistic lock), from its get/list tool.
component_idYesNumeric id of the component, from ``components_list``.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 componentA
Read-onlyIdempotent

What one user may do on a component (create, read, write, deny) and who grants it.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesLogin or numeric uid of the user.
component_idYesNumeric id of the component.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``POST /dashboards/`` (create a dashboard).

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``POST /dashboards/{id}/widgets/cycleTime`` (add a cycle-time chart).
dashboard_idYesId of the dashboard to add the widget to.

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoExtra blocks to include in the reply.
fieldsNoComma-separated fields to include in the reply.
notifyNoNotify the users in the fields of the object; omitted, the API notifies.
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.
temp_file_idYesTemporary file id from a prior POST /attachments upload.
notify_authorNoNotify the author of the change; omitted, the API does not.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 attachmentA
Destructive

Permanently delete an attachment from a Tracker entity (irreversible).

The API answers with an empty body; returns an acknowledgement on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesAttachment file id (from entities_attachments_list).
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 attachmentA
Read-onlyIdempotent

One attachment's metadata (name, size, MIME type, download URL).

Downloading the raw bytes is CLI/SDK-only (tracker entities attachments download).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesAttachment file id.
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 attachmentsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 statusA
Read-onlyIdempotent

Current status of an async entity bulk-change operation started by entities_update_bulk.

status runs CREATED → COMPLETE / FAILED; poll until it settles.

ParametersJSON Schema
NameRequiredDescriptionDefault
bulk_idYesOperation id returned by entities_update_bulk.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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": "…"}].

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesA bare array of checklist items.
expandNoExtra blocks to include in the reply.
fieldsNoComma-separated fields to include in the reply.
notifyNoNotify the users in the fields of the object; omitted, the API notifies.
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.
notify_authorNoNotify the author of the change; omitted, the API does not.

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 checklistA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoExtra blocks to include in the reply.
fieldsNoComma-separated fields to include in the reply.
notifyNoNotify the users in the fields of the object; omitted, the API notifies.
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.
notify_authorNoNotify the author of the change; omitted, the API does not.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 itemA
Destructive

Permanently remove one item from a Tracker entity's checklist (irreversible).

Returns the entity with its remaining checklist.

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoExtra blocks to include in the reply.
fieldsNoComma-separated fields to include in the reply.
notifyNoNotify the users in the fields of the object; omitted, the API notifies.
item_idYesChecklist item id.
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.
notify_authorNoNotify the author of the change; omitted, the API does not.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 itemB
Idempotent

Edit one checklist item on a Tracker entity (text, checked state, assignee, deadline).

Returns the entity with its updated checklist.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesA checklist item in a create (``[{text}]``) or edit-all (``[{id, text}]``) body.
expandNoExtra blocks to include in the reply.
fieldsNoComma-separated fields to include in the reply.
notifyNoNotify the users in the fields of the object; omitted, the API notifies.
item_idYesChecklist item id.
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.
notify_authorNoNotify the author of the change; omitted, the API does not.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``POST …/checklistItems/{id}/_move`` (reorder an item).
expandNoExtra blocks to include in the reply.
fieldsNoComma-separated fields to include in the reply.
notifyNoNotify the users in the fields of the object; omitted, the API notifies.
item_idYesChecklist item id to move.
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.
notify_authorNoNotify the author of the change; omitted, the API does not.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 checklistA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesA bare array of checklist items.
expandNoExtra blocks to include in the reply.
fieldsNoComma-separated fields to include in the reply.
notifyNoNotify the users in the fields of the object; omitted, the API notifies.
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.
notify_authorNoNotify the author of the change; omitted, the API does not.

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for adding a comment to an issue or an entity.
expandNoExtra blocks to include in the reply.
notifyNoNotify the users in the fields of the object; omitted, the API notifies.
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.
notify_authorNoNotify the author of the change; omitted, the API does not.
is_add_to_followersNoAdd the comment's author to the followers; omitted, the API adds.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 commentB
Destructive

Permanently delete one comment from a Tracker entity (irreversible).

Returns an acknowledgement on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
notifyNoNotify the users in the fields of the object; omitted, the API notifies.
entity_idYesEntity id (or shortId).
comment_idYesComment id (from entities_comments_list).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.
notify_authorNoNotify the author of the change; omitted, the API does not.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 commentC
Read-onlyIdempotent

A single comment on an entity by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoExtra blocks to include in the reply.
entity_idYesEntity id (or shortId).
comment_idYesComment id (numeric id or longId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.

TDQS

C2.5/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 commentsB
Read-onlyIdempotent

All comments on an entity — author, text, timestamps and summoned users.

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoExtra blocks to include in the reply.
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)A
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax comments (omitted: the configured cap).
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 commentA
Idempotent

Edit a comment on a Tracker entity; returns the updated comment.

comment_id addresses the comment (get it from entities_comments_list).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``PATCH …/comments/{comment_id}`` (the id travels in the path).
expandNoExtra blocks to include in the reply.
notifyNoNotify the users in the fields of the object; omitted, the API notifies.
entity_idYesEntity id (or shortId).
comment_idYesComment id (from entities_comments_list).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.
notify_authorNoNotify the author of the change; omitted, the API does not.
is_add_to_followersNoAdd the comment's author to the followers; omitted, the API adds.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``POST /entities/{type}`` — a ``{fields: {...}}`` envelope.
fieldsNoComma-separated fields to include in the reply.
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 entityA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYesEntity id (or shortId).
with_boardNoAlso delete the project's linked board.
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 historyA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax events (omitted: the configured cap).
selectedNoEvent id to build the list around, instead of from the start.
directionNo``forward`` (the default) or ``backward``.
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.
new_events_on_topNoNewest events first.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 entityA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoExtra info, e.g. ``attachments``.
fieldsNoComma-separated extra fields, e.g. ``keyResultItems,checklistItems``.
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_permissions_getGet Tracker entity permissionsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 permissionsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 permissionsA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``PATCH …/extendedPermissions``: rights to grant and to revoke.
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 permissionsA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``POST /entities/report/`` — a ``{fields: {...}}`` envelope.

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_updateEdit Tracker entityA
Idempotent

Edit a Tracker entity; only the fields keys present in body are changed.

Returns the updated entity.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``PATCH /entities/{type}/{id}`` (edit fields, comment, links).
expandNoExtra blocks to include in the reply.
fieldsNoComma-separated fields to include in the reply.
entity_idYesEntity id (or shortId).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``POST …/bulkchange/_update`` (mass-edit entities).
entity_typeYesEntity type: ``project``, ``portfolio`` or ``goal``.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``POST /fields/categories`` (create a field category).

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 categoryA
Idempotent

Edit a field category; only the fields set in body are changed.

Pass version to guard against concurrent edits (optimistic locking).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``PATCH /fields/categories/{id}?version=`` (edit a category). Only the fields that are set are sent, so omitted fields stay unchanged.
versionNoCurrent version of the object (optimistic lock), from its get/list tool.
category_idYesIdentifier of the field category.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for creating an issue field, global or local to a queue.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 fieldA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
field_idYesIdentifier of the issue field, e.g. summary or a custom-field key.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines5/5

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 fieldsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 fieldA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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.
versionNoCurrent version of the object (optimistic lock), from its get/list tool.
field_idYesIdentifier of the issue field, from ``fields_list``.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 filterA
Destructive

Permanently delete a saved issue filter (irreversible).

Returns an acknowledgement on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
filter_idYesNumeric identifier of the saved filter, e.g. 12345.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 filterA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filter_idYesNumeric identifier of the saved filter, e.g. 12345.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 filterA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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_idYesIdentifier of the saved filter, from ``filters_get``.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``gaps.create`` (``POST /gaps``): up to 100 absences.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 absencesA
Destructive

Delete employee absences by id (irreversible); ids the API does not know are ignored.

Needs Tracker administrator rights. Returns an acknowledgement.

ParametersJSON Schema
NameRequiredDescriptionDefault
gap_idsYesIds of the absences to delete (up to 100), from a search.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_issues_countCount Tracker issuesA
Read-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"}}}.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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.
notifyNoNotify the users in the fields of the object; omitted, the API notifies.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 issueC
Read-onlyIdempotent

A single Tracker issue by key.

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoExtra blocks to include in the reply.
fieldsNoComma-separated fields to include in the reply.
issue_keyYesIssue key, e.g. QUEUE-123.

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped body for ``POST /issues/_import`` — import one issue, preserving its history.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 issuesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
epicNoEpic issue key.
limitNoMax issues to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
queueNoQueue key, e.g. QUEUE.
statusNoStatus key, e.g. open.
assigneeNoAssignee login or id.
issue_typeNoIssue type key, e.g. bug or task.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queueYesTarget queue key, e.g. NEW.
expandNoExtra blocks to include in the reply.
notifyNoNotify the users in the fields of the object; omitted, the API notifies.
issue_keyYesIssue key, e.g. QUEUE-123.
notify_authorNoNotify the author of the change; omitted, the API does not.
initial_statusNoReset the status to the new queue's initial one.
move_all_fieldsNoKeep the versions, components and projects the new queue also has.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``POST /bulkchange/_move`` (mass-move issues to another queue).
notifyNoNotify the users in the fields of the object; omitted, the API notifies.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 scrollA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesA bare ``{scrollId: scrollToken}`` mapping — body for ``POST …/scroll/_clear``. Each entry releases the server resources of one scrolled ``issues.search`` response.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds 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.

Purpose4/5

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.

Usage Guidelines3/5

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_suggestSuggest Tracker issues by titleA
Read-onlyIdempotent

Typeahead over visible issues — issues whose summary contains text.

A lightweight title match; for full TQL search use issues_search.

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNoReturn each issue in full; needed for ``fields``, ``expand``, ``embed``.
textYesText fragment to match in issue summaries.
embedNoBlocks of ``expand`` to return in more detail.
queueNoKey of the queue to search in.
expandNoExtra blocks to include in the reply.
fieldsNoComma-separated fields to include in the reply.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``POST /bulkchange/_transition`` (mass status transition).
notifyNoNotify the users in the fields of the object; omitted, the API notifies.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 issueA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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_keyYesIssue key, e.g. QUEUE-123.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``POST /bulkchange/_update`` (mass-edit issues).
notifyNoNotify the users in the fields of the object; omitted, the API notifies.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``POST /issuetypes/`` (create an issue type).

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 typesA
Read-onlyIdempotent

All available issue types (e.g. task, bug, epic).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 typeA
Idempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``PATCH /issuetypes/{id}?version=`` (edit an issue type). Only the fields that are set are sent, so omitted fields stay unchanged.
versionNoCurrent version of the object (optimistic lock), from its get/list tool.
issue_type_idYesIssue type id or key, from ``issuetypes_list``.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description 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.

Purpose4/5

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.

Usage Guidelines3/5

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_linktypes_listList Tracker link typesA
Read-onlyIdempotent

All available link types (e.g. relates, depends on, blocks).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for creating an issue field, global or local to a queue.
queue_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. 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.

Purpose5/5

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.

Usage Guidelines3/5

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 fieldA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queue_idYesQueue key (case-sensitive, e.g. ORG) or numeric queue id.
field_keyYesLocal field key, as returned by localfields_list.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 fieldsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queue_idYesQueue key (case-sensitive, e.g. ORG) or numeric queue id.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 fieldA
Idempotent

Edit a queue-local field; only the fields set in body are changed.

Get field_key from localfields_list. Returns the updated field definition.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.
field_keyYesKey of the queue-local field, from ``localfields_list``.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 macroA
Destructive

Permanently delete a macro from a queue (irreversible).

Returns an acknowledgement on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
macro_idYesNumeric identifier of the macro, from ``macros_list``.
queue_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 macroA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
macro_idYesNumeric identifier of the macro.
queue_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 macrosA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queue_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 macroA
Idempotent

Edit a queue macro; only the fields set in body are changed.

Get macro_id from macros_list. Returns the updated macro.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``macros.edit`` (``PATCH /queues/{id}/macros/{macro_id}``). Every field is optional; only the fields you set are sent.
macro_idYesNumeric identifier of the macro, from ``macros_list``.
queue_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 userA
Read-onlyIdempotent

The authenticated Yandex Tracker user (a safe auth probe).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``POST /priorities/`` (create a priority).

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 prioritiesB
Read-onlyIdempotent

All available issue priorities in the organisation.

ParametersJSON Schema
NameRequiredDescriptionDefault
localizedNo``false`` returns the names in every language.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 priorityA
Idempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``PATCH /priorities/{id}?version=`` (edit a priority). Only the fields that are set are sent, so omitted fields stay unchanged.
versionNoCurrent version of the object (optimistic lock), from its get/list tool.
priority_idYesPriority id or key, from ``priorities_list``.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``projects.create`` (``POST /projects``).

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 projectB
Destructive

Delete a project (irreversible). Returns an acknowledgement.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesNumeric id of the project, from ``projects_list``.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 projectA
Read-onlyIdempotent

One project: name, lead, stage, dates and version (needed to edit it).

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoExtra blocks to include, e.g. ``queues``.
project_idYesNumeric id of the project, from ``projects_list``.

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 projectsA
Read-onlyIdempotent

Every project of the organization (the legacy Projects API).

entities_search is the newer way to find projects and portfolios.

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoExtra blocks to include, e.g. ``queues``.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 projectC
Read-onlyIdempotent

The queues whose issues belong to a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoExtra queue blocks, e.g. ``all`` or ``components,versions``.
project_idYesNumeric id of the project, from ``projects_list``.

TDQS

C2.5/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 projectA
Idempotent

Edit a project; queues is required on every edit, other fields change when set.

Returns the project with its incremented version.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``projects.edit`` (``PUT /projects/{id}?version=``). ``queues`` is required by the API on every edit; the rest change when set.
expandNoExtra blocks to include, e.g. ``queues``.
versionYesCurrent version of the project, from ``projects_get``.
project_idYesNumeric id of the project, from ``projects_list``.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``queues.create`` (``POST /queues/``).

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 queueA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queue_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 fieldsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queue_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 queueA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoExtra blocks to include, e.g. 'all' or a comma list of projects,components,versions,types,team,workflows,fields,issueTypesConfig.
queue_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. 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.

Purpose5/5

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.

Usage Guidelines5/5

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 queueB
Read-onlyIdempotent

What one group may do in a queue (create, read, write, grant, deny).

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYesNumeric id of the group.
queue_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 queuesA
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax queues to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
expandNoExtra blocks to include in the reply.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 permissionsA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queue_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 tagA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``queues.tags_delete`` (``POST /queues/{id}/tags/_remove``).
queue_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 tagsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queue_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 queueA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesLogin or numeric uid of the user.
queue_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``queues.versions_create`` (``POST /versions/``).

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 versionB
Destructive

Permanently delete a queue version (irreversible). Returns an acknowledgement.

ParametersJSON Schema
NameRequiredDescriptionDefault
version_idYesNumeric id of the version, from ``queues_versions_list``.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 versionB
Read-onlyIdempotent

One queue version: name, description, dates and its released/archived flags.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return, e.g. ``name,dueDate,released``.
version_idYesNumeric id of the version, from ``queues_versions_list``.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 versionsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queue_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 versionB
Idempotent

Edit a queue version; only the fields set in body change. Returns the version.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``queues.version_edit`` (``PATCH /versions/{id}``). Only the fields that are set are sent, so omitted fields stay unchanged.
fieldsNoComma-separated fields to return in the reply.
version_idYesNumeric id of the version, from ``queues_versions_list``.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``POST /resolutions/`` (create a resolution).

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 resolutionsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 resolutionA
Idempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``PATCH /resolutions/{id}?version=`` (edit a resolution). Only the fields that are set are sent, so omitted fields stay unchanged.
versionNoCurrent version of the object (optimistic lock), from its get/list tool.
resolution_idYesResolution id or key, from ``resolutions_list``.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
versionNoCurrent version of the object (optimistic lock), from its get/list tool.
sprint_idYesNumeric identifier of the sprint.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``sprints.create`` (``POST /sprints``).

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 sprintA
Destructive

Permanently delete a sprint (irreversible; its issues are not affected).

Returns an acknowledgement on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
sprint_idYesNumeric identifier of the sprint.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 sprintA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sprint_idYesNumeric identifier of the sprint.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 sprintsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idYesNumeric identifier of the board whose sprints to list.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
versionNoCurrent version of the object (optimistic lock), from its get/list tool.
sprint_idYesNumeric identifier of the sprint.

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 sprintA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``sprints.edit`` (``PATCH /sprints/{sprint_id}``). Every field is optional; only the fields you set are sent.
versionNoCurrent version of the object (optimistic lock), from its get/list tool.
sprint_idYesNumeric identifier of the sprint.

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds 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.

Purpose4/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``POST /statuses/`` (create an issue status).

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 statusesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 statusA
Idempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``PATCH /statuses/{id}?version=`` (edit a status). Only the fields that are set are sent, so omitted fields stay unchanged.
versionNoCurrent version of the object (optimistic lock), from its get/list tool.
status_idYesStatus id or key, from ``statuses_list``.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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_keyYesIssue key, e.g. QUEUE-123.
transition_idYesTransition id, from ``transitions_list``.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 transitionsC
Read-onlyIdempotent

Available workflow transitions for a Tracker issue.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_keyYesIssue key, e.g. QUEUE-123.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTrigger name, actions and optional conditions.
queue_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 triggerA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queue_idYesQueue key (case-sensitive, e.g. DESIGN) or numeric queue id.
trigger_idYesNumeric identifier of the trigger.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 triggersA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax triggers to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
queue_idYesQueue key (case-sensitive, e.g. DESIGN) or numeric queue id.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 triggerA
Idempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesFields to change; unset ones stay.
versionNoCurrent version of the object (optimistic lock), from its get/list tool.
queue_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.
trigger_idYesNumeric trigger id, from ``triggers_list``.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. 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.

Purpose4/5

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.

Usage Guidelines4/5

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 logsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax records (the API's default is 10, its maximum 100).
date_toNoRange end, YYYY-MM-DDThh:mm:ss.sss±hhmm.
issue_idNoOptional issue key/id to scope the logs to one issue.
queue_idYesQueue key (case-sensitive, e.g. DEV) or numeric queue id.
date_fromNoRange start, YYYY-MM-DDThh:mm:ss.sss±hhmm.
trigger_idYesNumeric identifier of the trigger.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 userA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoExtra data to include in the response, e.g. groups.
login_or_idYesUser login or numeric uid; for a digits-only login use login:<digits>.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 usersA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax users to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
expandNoExtra data to include per user, e.g. groups.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 actionA
Idempotent

Edit one action (transition) of a workflow step; only the fields set in body change.

Returns the whole workflow with its incremented version.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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.
statusYesKey of the step (status) the action leaves.
versionYesCurrent version of the workflow (optimistic lock), from ``workflows_get``.
action_idYesId of the action within that step.
workflow_idYesWorkflow id, from ``workflows_list``.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``workflows.create`` (``POST /workflows``).

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds 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.

Purpose4/5

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.

Usage Guidelines3/5

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 workflowB
Destructive

Delete a workflow (irreversible). Returns an acknowledgement.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYesWorkflow id, from ``workflows_list``.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 workflowA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYesWorkflow id, from ``workflows_list``.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 workflowsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 queueB
Read-onlyIdempotent

The workflows a queue uses: a map from workflow id to the issue types that follow it.

ParametersJSON Schema
NameRequiredDescriptionDefault
queue_idYesQueue key (case-sensitive, e.g. TEST) or numeric queue id.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 workflowA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``workflows.edit`` (``PATCH /workflows/{id}``). Only the fields that are set change; a given ``steps`` list replaces the whole step list.
versionYesCurrent version of the workflow (optimistic lock), from ``workflows_get``.
workflow_idYesWorkflow id, from ``workflows_list``.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. 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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``POST /issues/{key}/worklog`` (log time spent).
issue_keyYesIssue key, e.g. QUEUE-123.

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 recordA
Destructive

Permanently delete a worklog record from a Tracker issue (irreversible).

Get record_id from worklog_list. Returns an acknowledgement on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_keyYesIssue key, e.g. QUEUE-123.
record_idYesWorklog record id, from ``worklog_list``.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped body for ``POST /issues/{key}/worklogs/_import`` — import one worklog with history.
issue_keyYesIssue key, e.g. QUEUE-123.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 worklogA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax records to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
issue_keyYesIssue key, e.g. QUEUE-123.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 worklogA
Read-onlyIdempotent

Org-wide worklog entries via GET /worklog query filters (author, creation time).

A lighter sibling of worklog_search; every filter is optional.

ParametersJSON Schema
NameRequiredDescriptionDefault
created_byNoLogin or id of the record author to filter by.
created_toNoEnd of the creation-time range (``YYYY-MM-DDThh:mm:ss``).
created_fromNoStart of the creation-time range (``YYYY-MM-DDThh:mm:ss``).

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_updateEdit Tracker worklog recordA
Idempotent

Edit a worklog record on a Tracker issue (duration and/or comment).

Get record_id from worklog_list. Returns the updated record.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``PATCH /issues/{key}/worklog/{record_id}`` (edit an entry).
issue_keyYesIssue key, e.g. QUEUE-123.
record_idYesWorklog record id, from ``worklog_list``.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 accessesA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesNumeric id of the page.
prevent_selflockNoRefuse 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

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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".

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe grant: exactly one of ``user`` (uid / cloud_uid) and ``group`` (src + id), the ``role``, and optionally ``inheritance``.
page_idYesNumeric id of the page.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 accessA
Destructive

Revoke one access entry on a wiki page — the holder loses that grant at once.

The page owner's own entry cannot be revoked.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesNumeric id of the page.
access_idYesId of the access entry, from the page's ``access_lists``.
prevent_selflockNoRefuse 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

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 accessA
Idempotent

Change the role or reach of one access entry on a wiki page.

The page owner's own entry cannot be changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe new ``role`` and/or ``inheritance`` (one at least).
page_idYesNumeric id of the page.
access_idYesId of the access entry, from the page's ``access_lists``.
prevent_selflockNoRefuse 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

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesNumeric id of the page to attach to.
session_idsYes``session_id`` of each FINISHED upload session to attach.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 attachmentA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesNumeric id of the attachment to delete.
page_idYesNumeric id of the page the file is attached to.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 attachmentA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesNumeric id of the attachment.
page_idYesNumeric id of the page the file is attached to.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 attachmentsA
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax attachments to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
page_idYesNumeric page id, from ``pages_get_meta`` or a page ref.
order_byNoSort field.
order_directionNoSort direction for ``order_by``.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe file's bytes, base64-encoded.
page_idYesNumeric id of the page to attach the file to.
file_nameYesName to give the uploaded file.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe comment: required ``body`` text plus optional placement — ``inline_text`` (pin to a page fragment), ``parent_id`` (reply), ``thread_id``.
page_idYesNumeric id of the page to comment on.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 commentA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesNumeric id of the page the comment lives on.
comment_idYesNumeric id of the comment to delete.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 commentsA
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax comments to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
page_idYesNumeric page id, from ``pages_get_meta`` or a page ref.
order_byNoSort field: ``created_at``.
status_filterNoKeep only the comments in this state.
order_directionNoSort direction for ``order_by``.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 serverA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax comments (omitted: the configured cap).
page_idYesNumeric page id the comment lives on.
comment_idYesComment id whose server-side thread to fetch.

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines5/5

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 threadA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax replies (omitted: the configured cap).
page_idYesNumeric page id the comment lives on.
comment_idYesRoot comment id whose reply thread to fetch.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 cellsA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes``cells`` (each: ``row_id`` + ``column_slug`` + ``value``) + the current ``revision``.
grid_idYesThe grid's permanent UUID4 id.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesClone spec: ``target`` page slug (created if absent) + optional ``title`` and ``with_data`` (copy rows too).
grid_idYesThe grid's permanent UUID4 id.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes``columns`` (each needs ``title`` + ``type``) + the current ``revision``; optional ``position``.
grid_idYesThe grid's permanent UUID4 id.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 columnsA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes``column_slugs`` to delete + the current ``revision``.
grid_idYesThe grid's permanent UUID4 id.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes``column_slug`` (first column to move) + ``position`` + optional ``columns_count`` + the current ``revision``.
grid_idYesThe grid's permanent UUID4 id.

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 slugA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes``slug`` to check, or a ``title`` to turn into a slug and check.
grid_idYesThe grid's permanent UUID4 id.

TDQS

A4.2/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 columnA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe fields to change (``title``, ``description``, ``required``, ``width``, ``color``, ``pinned``, ``select_options``, …); ``revision`` is optional.
grid_idYesThe grid's permanent UUID4 id.
column_slugYesSlug of the column to edit.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesGrid spec: ``title`` plus the ``page`` (by id or slug) to live on.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 gridA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
grid_idYesThe grid's permanent UUID4 id.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 gridA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoRow sort, e.g. ``slug,-slug2``.
fieldsNoExtra blocks to include (CSV), e.g. ``attributes,user_permissions``.
grid_idYesThe grid's permanent UUID4 id.
revisionNoLoad this past revision instead of the current one.
only_colsNoReturn only these column slugs (CSV).
only_rowsNoReturn only these row ids (CSV).
row_filterNoServer-side row filter, e.g. ``[slug] ~ wiki``.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes``rows`` (each maps column slug → cell value) + ``revision``; optional ``position`` / ``after_row_id`` placement.
grid_idYesThe grid's permanent UUID4 id.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 rowsA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes``row_ids`` to delete (at least one) + the current ``revision``.
grid_idYesThe grid's permanent UUID4 id.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes``row_id`` (first row to move) + destination (``position`` or ``after_row_id``) + optional ``rows_count`` + the current ``revision``.
grid_idYesThe grid's permanent UUID4 id.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 rowA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes``pinned`` and/or ``color`` to set; ``revision`` is optional.
row_idYesId of the row to pin or colour.
grid_idYesThe grid's permanent UUID4 id.

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. 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.

Purpose5/5

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.

Usage Guidelines4/5

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 gridA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesEditable fields (``title``, ``default_sort``) plus the required ``revision``.
grid_idYesThe grid's permanent UUID4 id.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 userA
Read-onlyIdempotent

The authenticated Yandex Wiki user (a safe auth probe).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 statusA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask id from a page-clone trigger (operation.id).

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 statusA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask id from a grid-clone trigger (operation.id).

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 statusA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask id from a page-move trigger (operation.id).

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesWhat to append and where: required ``content`` (YFM fragment) plus optional ``body`` (top/bottom), ``section`` or ``anchor`` placement.
fieldsNoExtra blocks to include in the reply (CSV), e.g. ``content,attributes``.
page_idYesNumeric id of the page to append to.
is_silentNoDo not notify the page's subscribers.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesClone spec: required ``target`` (destination slug) plus optional ``title`` and ``subscribe_me``.
page_idYesNumeric id of the page to copy.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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"}}.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped request body for ``POST /pages``: a new page at ``slug``.
fieldsNoExtra blocks to include in the reply (CSV), e.g. ``content,attributes``.
is_silentNoDo not notify the page's subscribers.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds 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.

Purpose5/5

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.

Usage Guidelines4/5

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 pageA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesNumeric id of the page to delete.
recursiveNoAlso delete every page under it.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 descendantsA
Read-onlyIdempotent

All descendant refs under SLUG, auto-paginated.

Capped at the configured item cap unless limit is given; narrow by SLUG for large trees.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesWiki page slug (its path), e.g. ``users/something/abc``.
limitNoMax descendant refs to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS).
show_allNoThe API's ``show_all`` flag.
actualityNoOnly the pages in this state: `actual` or `obsolete`.
include_selfNoAlso return the ancestor page itself.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 idA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax refs (omitted: the configured cap).
page_idYesNumeric page id whose subtree to list.
show_allNoThe API's ``show_all`` flag.
actualityNoOnly the pages in this state: `actual` or `obsolete`.
include_selfNoAlso return the ancestor page itself.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 pageB
Read-onlyIdempotent

The page's markdown body for SLUG.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesWiki page slug (its path), e.g. ``users/something/abc``.
revision_idNoShow this past revision (an id from ``pages_revisions_list``).
raise_on_redirectNoFail if the page is a redirect instead of following it.

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 idA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoExtra blocks (CSV), e.g. ``content,attributes,breadcrumbs``. Omitted = id/slug/title only.
page_idYesNumeric page id to fetch.
revision_idNoShow this past revision (an id from ``pages_revisions_list``).
raise_on_redirectNoFail if the page is a redirect instead of following it.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 metadataC
Read-onlyIdempotent

Page metadata for SLUG (attributes + owner).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesWiki page slug (its path), e.g. ``users/something/abc``.

TDQS

C2.9/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 gridsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax grids (omitted: the configured cap).
page_idYesNumeric page id whose grids to list.
order_byNoSort field.
order_directionNoSort direction for ``order_by``.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesMove spec: ``operations`` (each ``source`` slug and new ``target`` slug, optionally ``next_to_slug`` with ``position`` before/after) and optional ``copy_inherited_access``.
validate_onlyNoValidate the move without applying it.

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 revisionsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoOnly these revision ids (comma separated).
limitNoMax revisions (omitted: the configured cap).
page_idYesNumeric page id whose revisions to list.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_updateUpdate Wiki pageA
Idempotent

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"}}.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesTyped 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.
fieldsNoExtra blocks to include in the reply (CSV), e.g. ``content,attributes``.
page_idYesNumeric id of the page to update.
is_silentNoDo not notify the page's subscribers.
allow_mergeNoMerge with a concurrent edit (3-way merge) instead of failing.

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYesUUID4 ``recovery_token`` returned by ``pages_delete``.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 resourcesA
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoOptional title search filter.
limitNoMax resources (omitted: the configured cap).
typesNoComma-separated kinds to include: ``attachment,grid``.
page_idYesNumeric page id whose resources to list.
order_byNoSort field.
order_directionNoSort direction for ``order_by``.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 sessionA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesUUID4 of the upload session.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 sessionsA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes``file_name`` + total ``file_size`` in bytes (sum of every part).

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesUUID4 of the upload session.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 sessionA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesUUID4 of the upload session to inspect.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 partA
Idempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThis part's bytes, base64-encoded.
session_idYesUUID4 of the upload session.
part_numberYes1-based part index (1 for the first part, +1 for each next).

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 306 tool updatesv0.122.1
    • Addeddatalens_audit_entries_updates_list
    • Addeddatalens_audit_entry_permissions_get
    • Addeddatalens_charts_data_get
    • Addeddatalens_charts_editor_create
    • Addeddatalens_charts_editor_delete
    • Addeddatalens_charts_editor_get
    • Addeddatalens_charts_editor_update
    • Addeddatalens_charts_ql_create
    • Addeddatalens_charts_ql_delete
    • Addeddatalens_charts_ql_get
    • Addeddatalens_charts_ql_update
    • Addeddatalens_charts_wizard_create
    • Addeddatalens_charts_wizard_delete
    • Addeddatalens_charts_wizard_get
    • Addeddatalens_charts_wizard_update
    • Addeddatalens_cloudenvironments_create
    • Addeddatalens_cloudenvironments_delete
    • Addeddatalens_cloudenvironments_get
    • Addeddatalens_cloudenvironments_list
    • Addeddatalens_cloudenvironments_update
    • Addeddatalens_cloudenvironmentstorage_bucket_download_url_create
    • Addeddatalens_cloudenvironmentstorage_bucket_object_metadata_get
    • Addeddatalens_cloudenvironmentstorage_bucket_objects_list
    • Addeddatalens_cloudenvironmentstorage_bucket_upload_url_create
    • Addeddatalens_collections_access_bindings_list
    • Addeddatalens_collections_access_bindings_update
    • Addeddatalens_collections_breadcrumbs_list
    • Addeddatalens_collections_content_list
    • Addeddatalens_collections_create
    • Addeddatalens_collections_delete
    • Addeddatalens_collections_delete_bulk
    • Addeddatalens_collections_get
    • Addeddatalens_collections_list_by_ids
    • Addeddatalens_collections_move
    • Addeddatalens_collections_move_bulk
    • Addeddatalens_collections_permissions_get_root
    • Addeddatalens_collections_update
    • Addeddatalens_connections_create
    • Addeddatalens_connections_delete
    • Addeddatalens_connections_get
    • Addeddatalens_connections_update
    • Addeddatalens_dashboards_create
    • Addeddatalens_dashboards_delete
    • Addeddatalens_dashboards_get
    • Addeddatalens_dashboards_update
    • Addeddatalens_datasets_create
    • Addeddatalens_datasets_data_get
    • Addeddatalens_datasets_delete
    • Addeddatalens_datasets_get
    • Addeddatalens_datasets_update
    • Addeddatalens_datasets_validate
    • Addeddatalens_embeddingsecrets_create
    • Addeddatalens_embeddingsecrets_delete
    • Addeddatalens_embeddingsecrets_get
    • Addeddatalens_embeddingsecrets_list
    • Addeddatalens_embeds_create
    • Addeddatalens_embeds_delete
    • Addeddatalens_embeds_list
    • Addeddatalens_embeds_update
    • Addeddatalens_entries_list
    • Addeddatalens_entries_permissions_get
    • Addeddatalens_entries_relations_list
    • Addeddatalens_entries_rename
    • Addeddatalens_entries_revisions_list
    • Addeddatalens_entrylocks_create
    • Addeddatalens_entrylocks_delete
    • Addeddatalens_entrylocks_extend
    • Addeddatalens_htmlpages_create
    • Addeddatalens_htmlpages_delete
    • Addeddatalens_htmlpages_get
    • Addeddatalens_htmlpages_preview_url_get
    • Addeddatalens_htmlpages_update
    • Addeddatalens_lakehouseoperations_get
    • Addeddatalens_licensing_licenses_assign
    • Addeddatalens_licensing_licenses_list
    • Addeddatalens_licensing_limit_get
    • Addeddatalens_licensing_limit_set
    • Addeddatalens_members_list
    • Addeddatalens_permissions_get_bulk
    • Addeddatalens_reports_create
    • Addeddatalens_reports_delete
    • Addeddatalens_reports_get
    • Addeddatalens_reports_update
    • Addeddatalens_restcatalogs_create
    • Addeddatalens_restcatalogs_list
    • Addeddatalens_sharedentries_access_bindings_list
    • Addeddatalens_sharedentries_access_bindings_update
    • Addeddatalens_sparkapplications_cancel
    • Addeddatalens_sparkapplications_create
    • Addeddatalens_sparkapplications_get
    • Addeddatalens_sparkapplications_list
    • Addeddatalens_sparkapplications_log_list
    • Addeddatalens_sparkclusters_create
    • Addeddatalens_sparkclusters_delete
    • Addeddatalens_sparkclusters_get
    • Addeddatalens_sparkclusters_list
    • Addeddatalens_sparkclusters_resource_presets_get
    • Addeddatalens_sparkclusters_resource_presets_list
    • Addeddatalens_sparkclusters_start
    • Addeddatalens_sparkclusters_stop
    • Addeddatalens_sqlqueries_create
    • Addeddatalens_sqlqueries_delete
    • Addeddatalens_sqlqueries_get
    • Addeddatalens_sqlqueries_run
    • Addeddatalens_sqlqueries_update
    • Addeddatalens_tenant_details_get
    • Addeddatalens_trinoclusters_catalog_create
    • Addeddatalens_trinoclusters_catalog_delete
    • Addeddatalens_trinoclusters_create
    • Addeddatalens_trinoclusters_delete
    • Addeddatalens_trinoclusters_get
    • Addeddatalens_trinoclusters_list
    • Addeddatalens_trinoclusters_resource_preset_get
    • Addeddatalens_trinoclusters_resource_presets_list
    • Addeddatalens_trinoclusters_start
    • Addeddatalens_trinoclusters_stop
    • Addeddatalens_workbookexports_cancel
    • Addeddatalens_workbookexports_result_get
    • Addeddatalens_workbookexports_start
    • Addeddatalens_workbookexports_status_get
    • Addeddatalens_workbookimports_start
    • Addeddatalens_workbookimports_status_get
    • Addeddatalens_workbooks_access_bindings_list
    • Addeddatalens_workbooks_access_bindings_update
    • Addeddatalens_workbooks_create
    • Addeddatalens_workbooks_delete
    • Addeddatalens_workbooks_delete_bulk
    • Addeddatalens_workbooks_entries_list
    • Addeddatalens_workbooks_get
    • Addeddatalens_workbooks_list
    • Addeddatalens_workbooks_list_by_ids
    • Addeddatalens_workbooks_move
    • Addeddatalens_workbooks_move_bulk
    • Addeddatalens_workbooks_update
    • Removedforms_access_get
    • Addedforms_access_list
    • Removedforms_access_set
    • Addedforms_access_update
    • Changedforms_answers_list4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Max answers to return; omitted means the configured cap (YCLI__HTTP__MAX_ITEMS)."
        +}
      • addedInput schema / properties / use_slugs / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / use_slugs / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / use_slugs / type
        Removed value: -"boolean"
    • Removedforms_conditions_hook_set_operator
    • Addedforms_conditions_hook_update_operator
    • Removedforms_conditions_page_set_operator
    • Addedforms_conditions_page_update_operator
    • Removedforms_conditions_question_set_operator
    • Addedforms_conditions_question_update_operator
    • Removedforms_conditions_submit_set_operator
    • Addedforms_conditions_submit_update_operator
    • Changedforms_filling_get3 fields changed
      • removedInput schema / properties / survey
        Removed value: -{
        -  "description": "Form id, its slug, or an id+verification-key combination.",
        -  "type": "string"
        -}
      • addedInput schema / properties / survey_id
        Added value: +{
        +  "description": "Form id, its slug, or an id+verification-key combination.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "survey"
        -]New value: +[
        +  "survey_id"
        +]
    • Changedforms_filling_submit5 fields changed
      • removedInput schema / properties / dry_run
        Removed value: -{
        -  "default": false,
        -  "description": "Validate only — saves nothing and fires no integrations.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / survey
        Removed value: -{
        -  "description": "Form id or slug of a published form.",
        -  "type": "string"
        -}
      • addedInput schema / properties / survey_id
        Added value: +{
        +  "description": "Form id or slug of a published form.",
        +  "type": "string"
        +}
      • addedInput schema / properties / validate_only
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Validate only — saves nothing and fires no integrations."
        +}
      • changedInput schema / required
        Previous value: -[
        -  "survey",
        -  "body"
        -]New value: +[
        +  "survey_id",
        +  "body"
        +]
    • Changedforms_filling_suggest3 fields changed
      • removedInput schema / properties / survey
        Removed value: -{
        -  "description": "Form id or slug.",
        -  "type": "string"
        -}
      • addedInput schema / properties / survey_id
        Added value: +{
        +  "description": "Form id or slug.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "survey"
        -]New value: +[
        +  "survey_id"
        +]
    • Changedforms_images_clone1 field changed
      • changedInput schema / properties / body / properties / name / description
        Previous value: -"File name for the clone."New value: +"Ignored by the API: the clone keeps the file name of the original."
    • Changedforms_notifications_list1 field changed
      • changedInput schema / properties / survey_id / description
        Previous value: -"Only this form's runs (24-char hex)."New value: +"The form whose runs to list (24-char hex); without it, 404."
    • Changedforms_questions_delete3 fields changed
      • addedInput schema / properties / force / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / force / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / force / type
        Removed value: -"boolean"
    • Changedforms_questions_get3 fields changed
      • addedInput schema / properties / with_slugs / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / with_slugs / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / with_slugs / type
        Removed value: -"boolean"
    • Changedforms_subscriptions_create4 fields changed
      • changedInput schema / properties / body / description
        Previous 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."
      • removedInput schema / properties / body / oneOf
        Removed 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"
        -  }
        -]
      • addedInput schema / properties / body / type
        Added value: +"object"
      • addedInput schema / properties / body / x-ycli-schema
        Added value: +"ycli.yandex.forms.subscriptions.models:Subscription"
    • Changedforms_subscriptions_update4 fields changed
      • changedInput schema / properties / body / description
        Previous 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."
      • removedInput schema / properties / body / oneOf
        Removed 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"
        -  }
        -]
      • addedInput schema / properties / body / type
        Added value: +"object"
      • addedInput schema / properties / body / x-ycli-schema
        Added value: +"ycli.yandex.forms.subscriptions.models:Subscription"
    • Changedforms_surveys_create2 fields changed
      • changedInput schema / properties / body / description
        Previous 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."
      • changedInput schema / properties / body / properties / api_keys / anyOf
        Previous 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"
        +  }
        +]
    • Changedforms_surveys_list3 fields changed
      • addedInput schema / properties / show_all / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / show_all / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / show_all / type
        Removed value: -"boolean"
    • Changedforms_surveys_update1 field changed
      • changedInput schema / properties / body / properties / api_keys / anyOf
        Previous 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"
        +  }
        +]
    • Addedschema_get
    • Addedtracker_attachments_import
    • Changedtracker_attachments_upload4 fields changed
      • removedInput schema / properties / file_name
        Removed value: -{
        -  "description": "Name of the file being uploaded.",
        -  "type": "string"
        -}
      • addedInput schema / properties / filename
        Added value: +{
        +  "description": "Name of the file being uploaded.",
        +  "type": "string"
        +}
      • changedInput schema / properties / rename_to / description
        Previous value: -"Store the file under this name instead of ``file_name``."New value: +"Store the file under this name instead of ``filename``."
      • changedInput schema / required
        Previous value: -[
        -  "issue_key",
        -  "file_name",
        -  "data"
        -]New value: +[
        +  "issue_key",
        +  "filename",
        +  "data"
        +]
    • Changedtracker_attachments_upload_temp4 fields changed
      • removedInput schema / properties / file_name
        Removed value: -{
        -  "description": "Name of the file being uploaded.",
        -  "type": "string"
        -}
      • addedInput schema / properties / filename
        Added value: +{
        +  "description": "Name of the file being uploaded.",
        +  "type": "string"
        +}
      • changedInput schema / properties / rename_to / description
        Previous value: -"Store the file under this name instead of ``file_name``."New value: +"Store the file under this name instead of ``filename``."
      • changedInput schema / required
        Previous value: -[
        -  "file_name",
        -  "data"
        -]New value: +[
        +  "filename",
        +  "data"
        +]
    • Removedtracker_bulk_move
    • Removedtracker_bulk_transition
    • Removedtracker_bulk_update
    • Changedtracker_changelog_list3 fields changed
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key"
        -]New value: +[
        +  "issue_key"
        +]
    • Changedtracker_checklists_clear3 fields changed
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key"
        -]New value: +[
        +  "issue_key"
        +]
    • Changedtracker_checklists_create4 fields changed
      • changedInput schema / properties / body / properties / deadline / anyOf
        Previous 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"
        +  }
        +]
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key",
        -  "body"
        -]New value: +[
        +  "issue_key",
        +  "body"
        +]
    • Changedtracker_checklists_delete4 fields changed
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • changedInput schema / properties / item_id / description
        Previous value: -"Checklist item id, from ``checklists_get``."New value: +"Checklist item id, from ``checklists_list``."
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key",
        -  "item_id"
        -]New value: +[
        +  "issue_key",
        +  "item_id"
        +]
    • Removedtracker_checklists_get
    • Addedtracker_checklists_list
    • Changedtracker_checklists_update5 fields changed
      • changedInput schema / properties / body / properties / deadline / anyOf
        Previous 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"
        +  }
        +]
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • changedInput schema / properties / item_id / description
        Previous value: -"Checklist item id, from ``checklists_get``."New value: +"Checklist item id, from ``checklists_list``."
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key",
        -  "item_id",
        -  "body"
        -]New value: +[
        +  "issue_key",
        +  "item_id",
        +  "body"
        +]
    • Removedtracker_comments_add
    • Addedtracker_comments_create
    • Changedtracker_comments_delete5 fields changed
      • addedInput schema / properties / comment_id / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / comment_id / type
        Removed value: -"string"
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key",
        -  "comment_id"
        -]New value: +[
        +  "issue_key",
        +  "comment_id"
        +]
    • Changedtracker_comments_get5 fields changed
      • addedInput schema / properties / comment_id / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / comment_id / type
        Removed value: -"string"
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key",
        -  "comment_id"
        -]New value: +[
        +  "issue_key",
        +  "comment_id"
        +]
    • Addedtracker_comments_import
    • Changedtracker_comments_list3 fields changed
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key"
        -]New value: +[
        +  "issue_key"
        +]
    • Removedtracker_comments_react
    • Addedtracker_comments_reactions_create
    • Changedtracker_comments_update5 fields changed
      • addedInput schema / properties / comment_id / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / comment_id / type
        Removed value: -"string"
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key",
        -  "comment_id",
        -  "body"
        -]New value: +[
        +  "issue_key",
        +  "comment_id",
        +  "body"
        +]
    • Removedtracker_dashboards_add_cycle_time_widget
    • Addedtracker_dashboards_widgets_create_cycle_time
    • Addedtracker_entities_bulk_get
    • Removedtracker_entities_bulk_status_get
    • Removedtracker_entities_bulk_update
    • Changedtracker_entities_checklists_create1 field changed
      • changedInput schema / properties / body / items / properties / deadline / anyOf
        Previous 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"
        +  }
        +]
    • Removedtracker_entities_checklists_delete_item
    • Addedtracker_entities_checklists_items_delete
    • Addedtracker_entities_checklists_items_update
    • Changedtracker_entities_checklists_update1 field changed
      • changedInput schema / properties / body / items / properties / deadline / anyOf
        Previous 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"
        +  }
        +]
    • Removedtracker_entities_checklists_update_item
    • Changedtracker_entities_comments_get1 field changed
      • addedInput schema / properties / expand
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Extra blocks to include in the reply."
        +}
    • Changedtracker_entities_comments_list1 field changed
      • addedInput schema / properties / expand
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Extra blocks to include in the reply."
        +}
    • Addedtracker_entities_comments_list_relative
    • Removedtracker_entities_comments_relative_list
    • Removedtracker_entities_create_report
    • Removedtracker_entities_direct_permissions_get
    • Changedtracker_entities_links_list1 field changed
      • addedInput schema / properties / fields
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated fields to include in the reply."
        +}
    • Addedtracker_entities_permissions_get_direct
    • Addedtracker_entities_permissions_update
    • Addedtracker_entities_permissions_update_direct
    • Addedtracker_entities_reports_create
    • Changedtracker_entities_search3 fields changed
      • addedInput schema / properties / body
        Added 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."
        +}
      • removedInput schema / properties / input_text
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Substring to match in the entity name."
        -}
      • removedInput schema / properties / order_by
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Field key to sort the results by."
        -}
    • Removedtracker_entities_set_direct_permissions
    • Removedtracker_entities_set_permissions
    • Addedtracker_entities_update_bulk
    • Addedtracker_fields_categories_create
    • Addedtracker_fields_categories_update
    • Removedtracker_fields_category_create
    • Removedtracker_fields_category_update
    • Removedtracker_import_comment
    • Removedtracker_import_file
    • Removedtracker_import_link
    • Removedtracker_import_task
    • Removedtracker_import_worklog
    • Changedtracker_issues_count5 fields changed
      • addedInput schema / properties / body
        Added 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"
        +}
      • removedInput schema / properties / query
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "TQL query; takes precedence over ``queue`` / ``status``."
        -}
      • removedInput schema / properties / queue
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Queue key to count issues in."
        -}
      • removedInput schema / properties / status
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Status key to count issues in."
        -}
      • addedInput schema / required
        Added value: +[
        +  "body"
        +]
    • Changedtracker_issues_create1 field changed
      • changedInput schema / properties / body / description
        Previous 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."
    • Changedtracker_issues_get3 fields changed
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key"
        -]New value: +[
        +  "issue_key"
        +]
    • Addedtracker_issues_import
    • Changedtracker_issues_move3 fields changed
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key",
        -  "queue"
        -]New value: +[
        +  "issue_key",
        +  "queue"
        +]
    • Addedtracker_issues_move_bulk
    • Changedtracker_issues_search3 fields changed
      • addedInput schema / properties / body
        Added 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"
        +}
      • removedInput schema / properties / query
        Removed value: -{
        -  "description": "TQL query, e.g. ``Queue: QUEUE Status: open``.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "body"
        +]
    • Addedtracker_issues_transition_bulk
    • Changedtracker_issues_update4 fields changed
      • changedInput schema / properties / body / description
        Previous 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``."
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key",
        -  "body"
        -]New value: +[
        +  "issue_key",
        +  "body"
        +]
    • Addedtracker_issues_update_bulk
    • Removedtracker_links_add
    • Addedtracker_links_create
    • Changedtracker_links_delete3 fields changed
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key",
        -  "link_id"
        -]New value: +[
        +  "issue_key",
        +  "link_id"
        +]
    • Addedtracker_links_import
    • Changedtracker_links_list3 fields changed
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key"
        -]New value: +[
        +  "issue_key"
        +]
    • Addedtracker_links_list_filtered
    • Removedtracker_links_search
    • Removedtracker_projects_queues
    • Addedtracker_projects_queues_list
    • Addedtracker_queues_permissions_update
    • Removedtracker_queues_set_permissions
    • Removedtracker_queues_tag_remove
    • Addedtracker_queues_tags_delete
    • Removedtracker_queues_version_create
    • Removedtracker_queues_version_delete
    • Removedtracker_queues_version_get
    • Removedtracker_queues_version_update
    • Addedtracker_queues_versions_create
    • Addedtracker_queues_versions_delete
    • Addedtracker_queues_versions_get
    • Addedtracker_queues_versions_update
    • Changedtracker_remotelinks_create4 fields changed
      • changedInput schema / properties / backlink / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / backlink / description
        Previous value: -"``\"true\"`` to also create the mirror link in the external application."New value: +"Also create the mirror link in the external application."
      • removedInput schema / properties / body / properties / relationship / default
        Removed value: -"RELATES"
      • changedInput schema / properties / body / required
        Previous value: -[
        -  "key",
        -  "origin"
        -]New value: +[
        +  "relationship",
        +  "key",
        +  "origin"
        +]
    • Changedtracker_transitions_execute4 fields changed
      • changedInput schema / properties / body / description
        Previous 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."
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key",
        -  "transition_id",
        -  "body"
        -]New value: +[
        +  "issue_key",
        +  "transition_id",
        +  "body"
        +]
    • Changedtracker_transitions_list3 fields changed
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key"
        -]New value: +[
        +  "issue_key"
        +]
    • Changedtracker_triggers_webhook_log_list2 fields changed
      • addedInput schema / properties / date_from
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Range start, YYYY-MM-DDThh:mm:ss.sss±hhmm."
        +}
      • addedInput schema / properties / date_to
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Range end, YYYY-MM-DDThh:mm:ss.sss±hhmm."
        +}
    • Addedtracker_workflows_actions_update
    • Removedtracker_workflows_for_queue
    • Addedtracker_workflows_list_for_queue
    • Removedtracker_workflows_update_action
    • Changedtracker_worklog_create5 fields changed
      • changedInput schema / properties / body / properties / start / description
        Previous 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."
      • changedInput schema / properties / body / required
        Previous value: -[
        -  "duration"
        -]New value: +[
        +  "duration",
        +  "start"
        +]
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key",
        -  "body"
        -]New value: +[
        +  "issue_key",
        +  "body"
        +]
    • Changedtracker_worklog_delete3 fields changed
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key",
        -  "record_id"
        -]New value: +[
        +  "issue_key",
        +  "record_id"
        +]
    • Removedtracker_worklog_global_list
    • Addedtracker_worklog_import
    • Changedtracker_worklog_list3 fields changed
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key"
        -]New value: +[
        +  "issue_key"
        +]
    • Addedtracker_worklog_list_global
    • Changedtracker_worklog_search5 fields changed
      • addedInput schema / properties / body
        Added 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"
        +}
      • removedInput schema / properties / created_by
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Login or id of the record author to filter by."
        -}
      • removedInput schema / properties / created_from
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Start of the creation-time range (``YYYY-MM-DDThh:mm:ss``)."
        -}
      • removedInput schema / properties / created_to
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "End of the creation-time range (``YYYY-MM-DDThh:mm:ss``)."
        -}
      • addedInput schema / required
        Added value: +[
        +  "body"
        +]
    • Changedtracker_worklog_update3 fields changed
      • addedInput schema / properties / issue_key
        Added value: +{
        +  "description": "Issue key, e.g. QUEUE-123.",
        +  "type": "string"
        +}
      • removedInput schema / properties / key
        Removed value: -{
        -  "description": "Issue key, e.g. QUEUE-123.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "key",
        -  "record_id",
        -  "body"
        -]New value: +[
        +  "issue_key",
        +  "record_id",
        +  "body"
        +]
    • Changedwiki_access_clear3 fields changed
      • addedInput schema / properties / prevent_selflock / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / prevent_selflock / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / prevent_selflock / type
        Removed value: -"boolean"
    • Changedwiki_access_delete3 fields changed
      • addedInput schema / properties / prevent_selflock / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / prevent_selflock / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / prevent_selflock / type
        Removed value: -"boolean"
    • Changedwiki_access_update3 fields changed
      • addedInput schema / properties / prevent_selflock / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / prevent_selflock / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / prevent_selflock / type
        Removed value: -"boolean"
    • Changedwiki_attachments_list1 field changed
      • changedInput schema / properties / page_id / description
        Previous value: -"Numeric page id, from ``pages_meta`` or a page ref."New value: +"Numeric page id, from ``pages_get_meta`` or a page ref."
    • Changedwiki_comments_list1 field changed
      • changedInput schema / properties / page_id / description
        Previous value: -"Numeric page id, from ``pages_meta`` or a page ref."New value: +"Numeric page id, from ``pages_get_meta`` or a page ref."
    • Changedwiki_grids_cells_update8 fields changed
      • removedInput schema / properties / body / properties / cells / items / properties / value / default
        Removed value: -null
      • removedInput schema / properties / body / properties / cells / items / properties / value / title
        Removed value: -"Value"
      • changedInput schema / properties / body / properties / cells / items / required
        Previous value: -[
        -  "row_id",
        -  "column_slug"
        -]New value: +[
        +  "row_id",
        +  "column_slug",
        +  "value"
        +]
      • addedInput schema / properties / body / properties / revision / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / body / properties / revision / default
        Added value: +null
      • changedInput schema / properties / body / properties / revision / description
        Previous value: -"Current grid revision (optimistic lock)."New value: +"Grid revision the edit is based on."
      • removedInput schema / properties / body / properties / revision / type
        Removed value: -"string"
      • changedInput schema / properties / body / required
        Previous value: -[
        -  "revision",
        -  "cells"
        -]New value: +[
        +  "cells"
        +]
    • Changedwiki_grids_clone3 fields changed
      • addedInput schema / properties / body / properties / with_data / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / body / properties / with_data / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / body / properties / with_data / type
        Removed value: -"boolean"
    • Removedwiki_grids_columns_add
    • Addedwiki_grids_columns_create
    • Addedwiki_grids_columns_delete
    • Changedwiki_grids_columns_move11 fields changed
      • removedInput schema / properties / body / properties / column_slug / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / body / properties / column_slug / default
        Removed value: -null
      • addedInput schema / properties / body / properties / column_slug / type
        Added value: +"string"
      • removedInput schema / properties / body / properties / position / anyOf
        Removed value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / body / properties / position / default
        Removed value: -null
      • addedInput schema / properties / body / properties / position / type
        Added value: +"integer"
      • addedInput schema / properties / body / properties / revision / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / body / properties / revision / default
        Added value: +null
      • changedInput schema / properties / body / properties / revision / description
        Previous value: -"Current grid revision (optimistic lock)."New value: +"Grid revision the edit is based on."
      • removedInput schema / properties / body / properties / revision / type
        Removed value: -"string"
      • changedInput schema / properties / body / required
        Previous value: -[
        -  "revision"
        -]New value: +[
        +  "column_slug",
        +  "position"
        +]
    • Removedwiki_grids_columns_remove
    • Changedwiki_grids_get1 field changed
      • addedInput schema / properties / revision
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Load this past revision instead of the current one."
        +}
    • Removedwiki_grids_rows_add
    • Addedwiki_grids_rows_create
    • Addedwiki_grids_rows_delete
    • Changedwiki_grids_rows_move8 fields changed
      • addedInput schema / properties / body / properties / revision / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / body / properties / revision / default
        Added value: +null
      • changedInput schema / properties / body / properties / revision / description
        Previous value: -"Current grid revision (optimistic lock)."New value: +"Grid revision the edit is based on."
      • removedInput schema / properties / body / properties / revision / type
        Removed value: -"string"
      • removedInput schema / properties / body / properties / row_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / body / properties / row_id / default
        Removed value: -null
      • addedInput schema / properties / body / properties / row_id / type
        Added value: +"string"
      • changedInput schema / properties / body / required
        Previous value: -[
        -  "revision"
        -]New value: +[
        +  "row_id"
        +]
    • Removedwiki_grids_rows_remove
    • Changedwiki_grids_update6 fields changed
      • changedInput schema / properties / body / description
        Previous value: -"Editable fields (``title``, ``default_sort``) plus the required ``revision`` (optimistic lock)."New value: +"Editable fields (``title``, ``default_sort``) plus the required ``revision``."
      • addedInput schema / properties / body / properties / revision / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / body / properties / revision / default
        Added value: +null
      • changedInput schema / properties / body / properties / revision / description
        Previous value: -"Current grid revision (optimistic lock)."New value: +"Grid revision the edit is based on."
      • removedInput schema / properties / body / properties / revision / type
        Removed value: -"string"
      • removedInput schema / properties / body / required
        Removed value: -[
        -  "revision"
        -]
    • Addedwiki_operations_clone_inline_grid_get
    • Removedwiki_operations_gridclone_get
    • Changedwiki_pages_append4 fields changed
      • changedInput schema / properties / body / properties / anchor / anyOf
        Previous 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"
        +  }
        +]
      • addedInput schema / properties / is_silent / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / is_silent / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / is_silent / type
        Removed value: -"boolean"
    • Changedwiki_pages_backlinks_list6 fields changed
      • addedInput schema / properties / for_cluster / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / for_cluster / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / for_cluster / type
        Removed value: -"boolean"
      • addedInput schema / properties / show_all / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / show_all / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / show_all / type
        Removed value: -"boolean"
    • Changedwiki_pages_clone3 fields changed
      • addedInput schema / properties / body / properties / subscribe_me / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / body / properties / subscribe_me / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / body / properties / subscribe_me / type
        Removed value: -"boolean"
    • Changedwiki_pages_create8 fields changed
      • addedInput schema / properties / body
        Added 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"
        +}
      • removedInput schema / properties / content
        Removed value: -{
        -  "description": "Page body in YFM markdown.",
        -  "type": "string"
        -}
      • addedInput schema / properties / is_silent / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / is_silent / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / is_silent / type
        Removed value: -"boolean"
      • removedInput schema / properties / slug
        Removed value: -{
        -  "description": "Target slug, e.g. ``data/x``. Treat it as permanent (a move breaks links).",
        -  "type": "string"
        -}
      • removedInput schema / properties / title
        Removed value: -{
        -  "description": "Page title.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "slug",
        -  "title",
        -  "content"
        -]New value: +[
        +  "body"
        +]
    • Changedwiki_pages_delete3 fields changed
      • addedInput schema / properties / recursive / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / recursive / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / recursive / type
        Removed value: -"boolean"
    • Removedwiki_pages_descendants
    • Removedwiki_pages_descendants_by_id
    • Addedwiki_pages_descendants_list
    • Addedwiki_pages_descendants_list_by_id
    • Changedwiki_pages_get3 fields changed
      • addedInput schema / properties / raise_on_redirect / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / raise_on_redirect / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / raise_on_redirect / type
        Removed value: -"boolean"
    • Changedwiki_pages_get_by_id3 fields changed
      • addedInput schema / properties / raise_on_redirect / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / raise_on_redirect / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / raise_on_redirect / type
        Removed value: -"boolean"
    • Addedwiki_pages_get_meta
    • Removedwiki_pages_meta
    • Changedwiki_pages_move6 fields changed
      • addedInput schema / properties / body / properties / copy_inherited_access / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / body / properties / copy_inherited_access / default
        Previous value: -falseNew value: +null
      • changedInput schema / properties / body / properties / copy_inherited_access / description
        Previous 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)."
      • removedInput schema / properties / body / properties / copy_inherited_access / type
        Removed value: -"boolean"
      • removedInput schema / properties / dry_run
        Removed value: -{
        -  "default": false,
        -  "description": "Validate the move without applying it.",
        -  "type": "boolean"
        -}
      • addedInput schema / properties / validate_only
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Validate the move without applying it."
        +}
    • Addedwiki_pages_search
    • Changedwiki_pages_update10 fields changed
      • addedInput schema / properties / allow_merge / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / allow_merge / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / allow_merge / type
        Removed value: -"boolean"
      • addedInput schema / properties / body
        Added 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"
        +}
      • removedInput schema / properties / content
        Removed value: -{
        -  "description": "New page body in YFM markdown (full replace).",
        -  "type": "string"
        -}
      • addedInput schema / properties / is_silent / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / is_silent / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / is_silent / type
        Removed value: -"boolean"
      • removedInput schema / properties / title
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "New title (unchanged when omitted)."
        -}
      • changedInput schema / required
        Previous value: -[
        -  "page_id",
        -  "content"
        -]New value: +[
        +  "page_id",
        +  "body"
        +]
    • Addedwiki_recovery_recover
    • Removedwiki_recovery_restore
    • Removedwiki_search_query
    • Addedwiki_uploadsessions_parts_upload
    • Removedwiki_uploadsessions_upload_part
  2. 322 tool updatesv0.67.0
    • First observedforms_access_get
    • First observedforms_access_grant
    • First observedforms_access_revoke
    • First observedforms_access_set
    • First observedforms_answers_delete
    • First observedforms_answers_export
    • First observedforms_answers_get
    • First observedforms_answers_integrations_list
    • First observedforms_answers_list
    • First observedforms_answers_restore
    • First observedforms_conditions_hook_create
    • First observedforms_conditions_hook_delete
    • First observedforms_conditions_hook_get
    • First observedforms_conditions_hook_list
    • First observedforms_conditions_hook_set_operator
    • First observedforms_conditions_hook_update
    • First observedforms_conditions_page_create
    • First observedforms_conditions_page_delete
    • First observedforms_conditions_page_get
    • First observedforms_conditions_page_list
    • First observedforms_conditions_page_set_operator
    • First observedforms_conditions_page_update
    • First observedforms_conditions_question_create
    • First observedforms_conditions_question_delete
    • First observedforms_conditions_question_get
    • First observedforms_conditions_question_list
    • First observedforms_conditions_question_set_operator
    • First observedforms_conditions_question_update
    • First observedforms_conditions_submit_create
    • First observedforms_conditions_submit_delete
    • First observedforms_conditions_submit_get
    • First observedforms_conditions_submit_list
    • First observedforms_conditions_submit_set_operator
    • First observedforms_conditions_submit_update
    • First observedforms_files_delete
    • First observedforms_files_verify
    • First observedforms_filling_get
    • First observedforms_filling_submit
    • First observedforms_filling_suggest
    • First observedforms_history_list
    • First observedforms_hooks_create
    • First observedforms_hooks_delete
    • First observedforms_hooks_get
    • First observedforms_hooks_list
    • First observedforms_hooks_update
    • First observedforms_images_clone
    • First observedforms_keysets_create
    • First observedforms_keysets_delete
    • First observedforms_keysets_get
    • First observedforms_keysets_list
    • First observedforms_keysets_update
    • First observedforms_me_get
    • First observedforms_notifications_cancel
    • First observedforms_notifications_errors_list
    • First observedforms_notifications_get
    • First observedforms_notifications_list
    • First observedforms_notifications_restart
    • First observedforms_notifications_status_get
    • First observedforms_operations_get
    • First observedforms_questions_create
    • First observedforms_questions_delete
    • First observedforms_questions_get
    • First observedforms_questions_list
    • First observedforms_questions_move
    • First observedforms_questions_update
    • First observedforms_subscriptions_create
    • First observedforms_subscriptions_delete
    • First observedforms_subscriptions_get
    • First observedforms_subscriptions_list
    • First observedforms_subscriptions_update
    • First observedforms_surveys_create
    • First observedforms_surveys_delete
    • First observedforms_surveys_get
    • First observedforms_surveys_list
    • First observedforms_surveys_publish
    • First observedforms_surveys_unpublish
    • First observedforms_surveys_update
    • First observedforms_variables_list
    • First observedstatus_get
    • First observedtracker_applications_list
    • First observedtracker_attachments_delete
    • First observedtracker_attachments_get
    • First observedtracker_attachments_list
    • First observedtracker_attachments_upload
    • First observedtracker_attachments_upload_temp
    • First observedtracker_autoactions_create
    • First observedtracker_autoactions_get
    • First observedtracker_autoactions_logs_get
    • First observedtracker_autoactions_logs_list
    • First observedtracker_boards_create
    • First observedtracker_boards_delete
    • First observedtracker_boards_get
    • First observedtracker_boards_list
    • First observedtracker_boards_update
    • First observedtracker_bulk_get
    • First observedtracker_bulk_issues_list
    • First observedtracker_bulk_move
    • First observedtracker_bulk_transition
    • First observedtracker_bulk_update
    • First observedtracker_changelog_list
    • First observedtracker_checklists_clear
    • First observedtracker_checklists_create
    • First observedtracker_checklists_delete
    • First observedtracker_checklists_get
    • First observedtracker_checklists_update
    • First observedtracker_columns_create
    • First observedtracker_columns_delete
    • First observedtracker_columns_get
    • First observedtracker_columns_list
    • First observedtracker_columns_update
    • First observedtracker_comments_add
    • First observedtracker_comments_delete
    • First observedtracker_comments_get
    • First observedtracker_comments_list
    • First observedtracker_comments_react
    • First observedtracker_comments_update
    • First observedtracker_components_create
    • First observedtracker_components_delete
    • First observedtracker_components_get
    • First observedtracker_components_group_permissions_get
    • First observedtracker_components_list
    • First observedtracker_components_list_for_queue
    • First observedtracker_components_update
    • First observedtracker_components_user_permissions_get
    • First observedtracker_dashboards_add_cycle_time_widget
    • First observedtracker_dashboards_create
    • First observedtracker_entities_attachments_attach
    • First observedtracker_entities_attachments_delete
    • First observedtracker_entities_attachments_get
    • First observedtracker_entities_attachments_list
    • First observedtracker_entities_bulk_status_get
    • First observedtracker_entities_bulk_update
    • First observedtracker_entities_checklists_create
    • First observedtracker_entities_checklists_delete
    • First observedtracker_entities_checklists_delete_item
    • First observedtracker_entities_checklists_move
    • First observedtracker_entities_checklists_update
    • First observedtracker_entities_checklists_update_item
    • First observedtracker_entities_comments_create
    • First observedtracker_entities_comments_delete
    • First observedtracker_entities_comments_get
    • First observedtracker_entities_comments_list
    • First observedtracker_entities_comments_relative_list
    • First observedtracker_entities_comments_update
    • First observedtracker_entities_create
    • First observedtracker_entities_create_report
    • First observedtracker_entities_delete
    • First observedtracker_entities_direct_permissions_get
    • First observedtracker_entities_events_list
    • First observedtracker_entities_get
    • First observedtracker_entities_links_create
    • First observedtracker_entities_links_delete
    • First observedtracker_entities_links_list
    • First observedtracker_entities_permissions_get
    • First observedtracker_entities_search
    • First observedtracker_entities_set_direct_permissions
    • First observedtracker_entities_set_permissions
    • First observedtracker_entities_update
    • First observedtracker_fields_category_create
    • First observedtracker_fields_category_update
    • First observedtracker_fields_create
    • First observedtracker_fields_get
    • First observedtracker_fields_list
    • First observedtracker_fields_update
    • First observedtracker_filters_create
    • First observedtracker_filters_delete
    • First observedtracker_filters_get
    • First observedtracker_filters_update
    • First observedtracker_gaps_create
    • First observedtracker_gaps_delete
    • First observedtracker_gaps_search
    • First observedtracker_import_comment
    • First observedtracker_import_file
    • First observedtracker_import_link
    • First observedtracker_import_task
    • First observedtracker_import_worklog
    • First observedtracker_issues_count
    • First observedtracker_issues_create
    • First observedtracker_issues_get
    • First observedtracker_issues_list
    • First observedtracker_issues_move
    • First observedtracker_issues_scroll_clear
    • First observedtracker_issues_search
    • First observedtracker_issues_suggest
    • First observedtracker_issues_update
    • First observedtracker_issuetypes_create
    • First observedtracker_issuetypes_list
    • First observedtracker_issuetypes_update
    • First observedtracker_links_add
    • First observedtracker_links_delete
    • First observedtracker_links_list
    • First observedtracker_links_search
    • First observedtracker_linktypes_list
    • First observedtracker_localfields_create
    • First observedtracker_localfields_get
    • First observedtracker_localfields_list
    • First observedtracker_localfields_update
    • First observedtracker_macros_create
    • First observedtracker_macros_delete
    • First observedtracker_macros_get
    • First observedtracker_macros_list
    • First observedtracker_macros_update
    • First observedtracker_me_get
    • First observedtracker_priorities_create
    • First observedtracker_priorities_list
    • First observedtracker_priorities_update
    • First observedtracker_projects_create
    • First observedtracker_projects_delete
    • First observedtracker_projects_get
    • First observedtracker_projects_list
    • First observedtracker_projects_queues
    • First observedtracker_projects_update
    • First observedtracker_queues_create
    • First observedtracker_queues_delete
    • First observedtracker_queues_fields_list
    • First observedtracker_queues_get
    • First observedtracker_queues_group_permissions_get
    • First observedtracker_queues_list
    • First observedtracker_queues_restore
    • First observedtracker_queues_set_permissions
    • First observedtracker_queues_tag_remove
    • First observedtracker_queues_tags_list
    • First observedtracker_queues_user_permissions_get
    • First observedtracker_queues_version_create
    • First observedtracker_queues_version_delete
    • First observedtracker_queues_version_get
    • First observedtracker_queues_version_update
    • First observedtracker_queues_versions_list
    • First observedtracker_remotelinks_create
    • First observedtracker_remotelinks_delete
    • First observedtracker_remotelinks_list
    • First observedtracker_resolutions_create
    • First observedtracker_resolutions_list
    • First observedtracker_resolutions_update
    • First observedtracker_sprints_archive
    • First observedtracker_sprints_create
    • First observedtracker_sprints_delete
    • First observedtracker_sprints_get
    • First observedtracker_sprints_list
    • First observedtracker_sprints_start
    • First observedtracker_sprints_update
    • First observedtracker_statuses_create
    • First observedtracker_statuses_list
    • First observedtracker_statuses_update
    • First observedtracker_transitions_execute
    • First observedtracker_transitions_list
    • First observedtracker_triggers_create
    • First observedtracker_triggers_get
    • First observedtracker_triggers_list
    • First observedtracker_triggers_update
    • First observedtracker_triggers_webhook_log_list
    • First observedtracker_users_get
    • First observedtracker_users_list
    • First observedtracker_workflows_create
    • First observedtracker_workflows_delete
    • First observedtracker_workflows_for_queue
    • First observedtracker_workflows_get
    • First observedtracker_workflows_list
    • First observedtracker_workflows_update
    • First observedtracker_workflows_update_action
    • First observedtracker_worklog_create
    • First observedtracker_worklog_delete
    • First observedtracker_worklog_global_list
    • First observedtracker_worklog_list
    • First observedtracker_worklog_search
    • First observedtracker_worklog_update
    • First observedwiki_access_clear
    • First observedwiki_access_create
    • First observedwiki_access_delete
    • First observedwiki_access_update
    • First observedwiki_attachments_attach
    • First observedwiki_attachments_delete
    • First observedwiki_attachments_get
    • First observedwiki_attachments_list
    • First observedwiki_attachments_upload
    • First observedwiki_comments_create
    • First observedwiki_comments_delete
    • First observedwiki_comments_list
    • First observedwiki_comments_thread_get
    • First observedwiki_comments_thread_list
    • First observedwiki_grids_cells_update
    • First observedwiki_grids_clone
    • First observedwiki_grids_columns_add
    • First observedwiki_grids_columns_move
    • First observedwiki_grids_columns_remove
    • First observedwiki_grids_columns_suggest
    • First observedwiki_grids_columns_update
    • First observedwiki_grids_create
    • First observedwiki_grids_delete
    • First observedwiki_grids_get
    • First observedwiki_grids_rows_add
    • First observedwiki_grids_rows_move
    • First observedwiki_grids_rows_remove
    • First observedwiki_grids_rows_update
    • First observedwiki_grids_update
    • First observedwiki_me_get
    • First observedwiki_operations_clone_get
    • First observedwiki_operations_gridclone_get
    • First observedwiki_operations_move_get
    • First observedwiki_pages_append
    • First observedwiki_pages_backlinks_list
    • First observedwiki_pages_clone
    • First observedwiki_pages_create
    • First observedwiki_pages_delete
    • First observedwiki_pages_descendants
    • First observedwiki_pages_descendants_by_id
    • First observedwiki_pages_get
    • First observedwiki_pages_get_by_id
    • First observedwiki_pages_grids_list
    • First observedwiki_pages_meta
    • First observedwiki_pages_move
    • First observedwiki_pages_revisions_list
    • First observedwiki_pages_update
    • First observedwiki_recovery_restore
    • First observedwiki_resources_list
    • First observedwiki_search_query
    • First observedwiki_uploadsessions_abort
    • First observedwiki_uploadsessions_abort_all
    • First observedwiki_uploadsessions_create
    • First observedwiki_uploadsessions_finish
    • First observedwiki_uploadsessions_get
    • First observedwiki_uploadsessions_upload_part

TDQS

C2.9/5.0

Scored across 457 tools

Disambiguation2/5

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.

Naming Consistency3/5

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.

Tool Count1/5

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.

Completeness3/5

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

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Exposes 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
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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 npm
    MIT