ycli
Supports authenticating via Yandex Cloud service-account keys, minting IAM tokens (ServiceAccountAuth, enabled by the 'service-account' extra) so the toolkit can access Yandex 360 Tracker, Wiki, and Forms from service-account credentials.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ycli show me the details of Yandex Tracker issue TRACKER-1"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ycli
Yandex 360 for people and for agents.
Tracker, Wiki and Forms from a command line, an MCP server and Python: one tool, and one name for each operation everywhere.
English · Русский
A command line that scripts well. JSON when piped, ready for
jq,--dry-runfor every write, an exit code for each kind of failure.An MCP server agents can trust. Every tool says whether it reads, writes or destroys; serve only reads, or a small everyday set.
A typed Python SDK. Pydantic models for every answer, and examples the test suite runs.
Careful with your data. A delete asks first, and your token goes only to Yandex's own hosts.
Documentation: ycli.savaznatnov.dev.
Install
uv tool install 'yandex-cli[mcp]' # the ycli command, with the MCP server
uvx yandex-cli --help # or run it once, without installing
pipx install 'yandex-cli[mcp]' # or with pipxThe command is ycli (also yandex-cli). Then sign in: ycli auth login (how).
Writing Python? Add the SDK to your project: uv add yandex-cli.
Extra | Adds | Install |
| the MCP server, |
|
| the SDK's |
|
Connect your AI client
Every client gets the same MCP server, uvx --from 'yandex-cli[mcp]' ycli mcp start, and the same two variables.
Client | Fastest way |
Claude Code |
|
Claude Desktop | open the |
Cursor | |
VS Code | |
Windsurf (Devin Desktop) | |
Zed | |
Codex | |
Gemini CLI | |
opencode | |
Any other MCP client |
Also: a Docker image, ghcr.io/bim-ba/ycli (as a server or a plain CLI), pipelines, and the official MCP Registry entry io.github.bim-ba/ycli.
Something not working? If it does not work.
Related MCP server: Yandex Tracker MCP
Use it
Command line
ycli tracker issues get TRACKER-1 # a table at a terminal
ycli tracker issues get TRACKER-1 | jq .summary # JSON when piped
ycli -o yaml wiki pages get onboarding # or pick: -o json | yaml | pretty | csv | markdown | ndjson | name
ycli tracker boards delete 7 --dry-run # print the request a write would send
ycli tracker boards delete 7 --yes # a delete asks first; --yes answers
ycli api issues/TRACKER-1 --service tracker # an endpoint ycli does not wrapMore: Script the CLI, Call an unwrapped endpoint, the CLI reference.
MCP server
ycli mcp start # every tool, reads and writes
ycli mcp start --read-only # reads only
ycli mcp start --toolsets core # about 40 everyday tools, for a client that caps the count
ycli mcp methods --toolsets core # list the tool names without starting the serverMore: Serve the MCP server, Self-host over HTTP for a team, the tool reference.
Python
from ycli.yandex.tracker.client import TrackerClient
tracker = TrackerClient(oauth_token="…", organization_id="…")
print(tracker.issues.get("TRACKER-1").summary)More: the SDK reference.
Claude Code plugin
/plugin marketplace add bim-ba/ycli
/plugin install yandex-360@ycliIt adds the MCP server and five skills (yandex-360, yandex-360-tracker, yandex-360-wiki, yandex-360-forms, yandex-360-datalens) that teach an agent the commands and the API's quirks. Source: plugins/yandex-360/.
Configure
ycli auth login # gets a token through Yandex ID, finds your organization, saves both to .env
ycli auth status # whose token it is, and whether each service accepts it
ycli doctor # something not working? every check in order, with the fixycli auth login needs a Yandex OAuth app of your own the first time: Authenticate walks you through it. ycli reads two variables, from the environment or a .env file:
YANDEX_ID_OAUTH_TOKEN=... # a Yandex OAuth token with Tracker, Wiki and Forms access
YANDEX_ID_ORGANIZATION_ID=... # your Yandex 360 organization idTimeouts, retries, limits, logging and the exit codes are in the configuration reference.
Coverage
ycli wraps 468 operations across 88 resources of the Tracker, Wiki, Forms, and DataLens API. Every one is reachable from the Python SDK and the CLI, and 458 MCP tools serve them to agents (456 per service plus schema_get, status_get).
Legend. ✅ in CLI or MCP means the resource is reachable on that surface; MCP tools carry honest hints (reads are
readOnlyHint, writes say whether they are destructive or idempotent), andycli mcp start --read-onlyserves only the reads. Resource and operation names link to the official Yandex API reference. An operation has one of three states against what Yandex publishes. Covered (no mark): ycli sends every published parameter and reads every published field. Partial (◐): ycli wraps it and differs somewhere; the mark links to the row that says where and why. Not covered (○): Yandex publishes it and ycli does not wrap it; these are listed under each service. Wiki, Forms and DataLens are measured against their OpenAPI documents; Tracker publishes none, so its state is measured against the reference pages (operations, and query parameters where a page lists them). DataLens is in progress, wrapped section by section: the operations of a section ycli has not begun are pending, not missing. Generated from the code byscripts/gen_coverage.py; do not edit by hand.
Tracker
Issues & work items
Resource | Operations | CLI | MCP |
get · search · count · create · update · move · suggest · scroll_clear · update_bulk · move_bulk · transition_bulk · import_ | ✅ | ✅ | |
list · get · create · update · delete · reactions_create · import_ | ✅ | ✅ | |
list · list_filtered · create · delete · import_ | ✅ | ✅ | |
✅ | ✅ | ||
list · search · list_global · create · update · delete · import_ | ✅ | ✅ | |
✅ | ✅ | ||
✅ | ✅ | ||
list · download · thumbnails_download · get · delete · upload · upload_temp · import_ · import_for_comment | ✅ | ✅ | |
✅ | ✅ |
Agile boards
Resource | Operations | CLI | MCP |
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ |
Dictionaries
Resource | Operations | CLI | MCP |
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ | ||
linktypes | list | ✅ | ✅ |
Fields, queues & structure
Resource | Operations | CLI | MCP |
list · get · create · update · categories_create · categories_update | ✅ | ✅ | |
✅ | ✅ | ||
list · create · update · list_for_queue · get · delete · user_permissions_get · group_permissions_get | ✅ | ✅ | |
list · get · tags_list · versions_list · fields_list · create · delete · restore · permissions_update · tags_delete · versions_create · versions_get · versions_update · versions_delete · user_permissions_get · group_permissions_get | ✅ | ✅ | |
list · get · list_for_queue · create · update · actions_update · delete | ✅ | ✅ | |
✅ | ✅ |
Automation & bulk
Resource | Operations | CLI | MCP |
✅ | ✅ | ||
list · get · create · update · webhook_log_list | ✅ | ✅ | |
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ |
Entities, users & search
Resource | Operations | CLI | MCP |
create · get · update · delete · search · events_list · permissions_get · permissions_update · permissions_get_direct · permissions_update_direct · update_bulk · bulk_get · reports_create · comments_list · comments_list_relative · comments_get · comments_create · comments_update · comments_delete · checklists_create · checklists_update · checklists_items_update · checklists_delete · checklists_items_delete · checklists_move · links_list · links_create · links_delete · attachments_list · attachments_get · attachments_download · attachments_attach · attachments_delete | ✅ | ✅ | |
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ |
Not covered (2)
○
GET /boards:boards listreads the paginatedGET /boards/_paginate○
GET /users:users listreads the paginatedGET /users/_relative
Wiki
Pages
Resource | Operations | CLI | MCP |
get_by_id · get · descendants_list · descendants_list_by_id · grids_list · create · update · delete · append · clone · move · revisions_list · backlinks_list · search | ✅ | ✅ | |
✅ | ✅ | ||
✅ | ✅ |
Collaboration
Resource | Operations | CLI | MCP |
list · thread_list · thread_get · create · delete | ✅ | ✅ | |
list · get · previews_download · download · download_by_url · delete · attach · upload | ✅ | ✅ | |
✅ | ✅ |
Grids (dynamic tables)
Resource | Operations | CLI | MCP |
get · create · update · delete · rows_create · rows_delete · rows_move · columns_create · columns_delete · columns_move · cells_update · clone · columns_suggest · columns_update · rows_update | ✅ | ✅ |
Async & uploads
Resource | Operations | CLI | MCP |
✅ | ✅ | ||
✅ | ✅ |
Identity
Forms
Surveys & questions
Resource | Operations | CLI | MCP |
list · get ◐ · create ◐ · update ◐ · delete · publish · unpublish | ✅ | ✅ | |
✅ | ✅ | ||
question_list · question_get · question_create · question_update · question_delete · question_update_operator · page_list · page_get · page_create · page_update · page_delete · page_update_operator · submit_list · submit_get · submit_create · submit_update · submit_delete · submit_update_operator · hook_list · hook_get · hook_create · hook_update · hook_delete · hook_update_operator | ✅ | ✅ | |
✅ | ✅ | ||
✅ | ✅ |
Responses & export
Resource | Operations | CLI | MCP |
get · list · columns_list · export · export_results_get · export_download · integrations_list · delete · restore | ✅ | ✅ | |
✅ | ✅ |
Integrations
Resource | Operations | CLI | MCP |
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ | ||
list · get · status_get · restart · cancel · errors_list | ✅ | ✅ |
Distribution
Resource | Operations | CLI | MCP |
✅ | ✅ | ||
✅ | ✅ |
Media
Identity
DataLens
Organization
Resource | Operations | CLI | MCP |
tenant | details_get | ✅ | ✅ |
✅ | ✅ | ||
✅ | ✅ |
Collections & workbooks
Resource | Operations | CLI | MCP |
get · list_by_ids · content_list · breadcrumbs_list · permissions_get_root · access_bindings_list · create · update · move · move_bulk · delete · delete_bulk · access_bindings_update | ✅ | ✅ | |
get · list · list_by_ids · access_bindings_list · entries_list · create · update · move · move_bulk · delete · delete_bulk · access_bindings_update | ✅ | ✅ | |
start · status_get · result_get · cancel | ✅ | ✅ | |
✅ | ✅ |
Entries
Resource | Operations | CLI | MCP |
list · relations_list · permissions_get · revisions_list · rename | ✅ | ✅ | |
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ | ||
✅ | ✅ |
Data
Resource | Operations | CLI | MCP |
✅ | ✅ | ||
✅ | ✅ |
Charts, dashboards, reports & pages
Resource | Operations | CLI | MCP |
data_get · wizard_get · wizard_create · wizard_update · wizard_delete · ql_get · ql_create · ql_update · ql_delete · editor_get · editor_create · editor_update · editor_delete | ✅ | ✅ | |
✅ | ✅ | ||
✅ | ✅ | ||
get · create · update · delete · preview_url_get | ✅ | ✅ |
SQL
Resource | Operations | CLI | MCP |
sqlqueries | get · create · update · delete · run | ✅ | ✅ |
Cloud environments
Resource | Operations | CLI | MCP |
cloudenvironments | list · get · create · update · delete | ✅ | ✅ |
cloudenvironmentstorage | bucket_objects_list · bucket_object_metadata_get · bucket_download_url_create · bucket_upload_url_create | ✅ | ✅ |
restcatalogs | list · create | ✅ | ✅ |
lakehouseoperations | get | ✅ | ✅ |
trinoclusters | list · get · create · delete · start · stop · catalog_create · catalog_delete · resource_presets_list · resource_preset_get | ✅ | ✅ |
sparkclusters | list · get · create · delete · start · stop · resource_presets_list · resource_presets_get | ✅ | ✅ |
sparkapplications | list · get · create · cancel · log_list | ✅ | ✅ |
Embedding
Resource | Operations | CLI | MCP |
✅ | ✅ | ||
✅ | ✅ |
Not covered (9)
○
POST /rpc/checkFavorites: new section published 2026-10, wrapping not decided○
POST /rpc/createFolder: the old placement model (folders); the organization has none to check it on (#394)○
POST /rpc/deleteFolder: the old placement model (folders); the organization has none to check it on (#394)○
POST /rpc/dlsSuggest: the old placement model (folders); the organization has none to check it on (#394)○
POST /rpc/getPermissions: the old placement model (folders); the organization has none to check it on (#394)○
POST /rpc/listDirectory: the old placement model (folders); the organization has none to check it on (#394)○
POST /rpc/listFavorites: new section published 2026-10, wrapping not decided○
POST /rpc/modifyPermissions: the old placement model (folders); the organization has none to check it on (#394)○
POST /rpc/moveFolderEntry: the old placement model (folders); the organization has none to check it on (#394)
Every resource and operation above deep-links to the Yandex API reference: 406 of 468 operations resolve to their own endpoint page and 20 to their resource's page. No public API reference exists yet for datalens.cloudenvironments, datalens.cloudenvironments.create, datalens.cloudenvironments.delete, datalens.cloudenvironments.get, datalens.cloudenvironments.list, datalens.cloudenvironments.update, datalens.cloudenvironmentstorage, datalens.cloudenvironmentstorage.bucket_download_url_create, datalens.cloudenvironmentstorage.bucket_object_metadata_get, datalens.cloudenvironmentstorage.bucket_objects_list, datalens.cloudenvironmentstorage.bucket_upload_url_create, datalens.lakehouseoperations, datalens.lakehouseoperations.get, datalens.restcatalogs, datalens.restcatalogs.create, datalens.restcatalogs.list, datalens.sparkapplications, datalens.sparkapplications.cancel, datalens.sparkapplications.create, datalens.sparkapplications.get, datalens.sparkapplications.list, datalens.sparkapplications.log_list, datalens.sparkclusters, datalens.sparkclusters.create, datalens.sparkclusters.delete, datalens.sparkclusters.get, datalens.sparkclusters.list, datalens.sparkclusters.resource_presets_get, datalens.sparkclusters.resource_presets_list, datalens.sparkclusters.start, datalens.sparkclusters.stop, datalens.sqlqueries, datalens.sqlqueries.create, datalens.sqlqueries.delete, datalens.sqlqueries.get, datalens.sqlqueries.run, datalens.sqlqueries.update, datalens.tenant, datalens.tenant.details_get, datalens.trinoclusters, datalens.trinoclusters.catalog_create, datalens.trinoclusters.catalog_delete, datalens.trinoclusters.create, datalens.trinoclusters.delete, datalens.trinoclusters.get, datalens.trinoclusters.list, datalens.trinoclusters.resource_preset_get, datalens.trinoclusters.resource_presets_list, datalens.trinoclusters.start, datalens.trinoclusters.stop, tracker.linktypes, tracker.linktypes.list, shown as plain text. See CONTRIBUTING.md for the intentional exclusions (UI-only endpoints with no public REST API) and per-method notes.
Against the published API
What ycli sends, replayed from its contract tests, compared with what Yandex publishes: the Wiki, Forms and DataLens OpenAPI documents and Tracker's API reference (prose, so only operations and the query parameters a page lists are compared). A request body is compared only where ycli has a typed model for it and the model is closed; the Bodies compared column says how many that is, so an empty list is not read as a match. The published side is the snapshot in scripts/api_snapshot/; a weekly job fetches it again and opens an issue when Yandex has changed it.
Service | Published | Wrapped | Not wrapped | Operations that differ | Bodies compared | Source |
Tracker | 190 | 188 | 0 (+2 on purpose) | 0 | — | |
Wiki | 56 | 56 | 0 | 0 | 24 of 24 | |
Forms | 84 | 84 | 0 | 8 | 26 of 30 | |
DataLens | 143 | 134 | 0 (+9 on purpose) | 0 | 131 of 131 |
Not wrapped on purpose
Operation | Why |
| |
|
Sent by ycli, not published
ycli | Its request |
|
|
|
|
Parameters and fields
Operation | ycli | Difference | Why it stays |
|
| body fields ycli sends that are not published: | the API accepts it and ignores it (checked live on 2026-10-04)the API returns it (checked live on 2026-10-04), the published schema omits it |
|
| model fields that are not published: | the API returns it (checked live on 2026-10-04), the published schema omits it |
|
| body fields ycli sends that are not published: | the API accepts it and ignores it (checked live on 2026-10-04)the API returns it (checked live on 2026-10-04), the published schema omits it |
|
| body fields ycli sends that are not published: | one model builds the body and reads the reply, which carries |
|
| body fields ycli sends that are not published: | one model builds the body and reads the reply, which carries |
|
| body fields ycli sends that are not published: | the API accepts it and ignores it (checked live on 2026-10-04) |
|
| query parameters ycli sends that are not published: | the API accepts it and ignores it (checked live on 2026-10-04) |
|
| body fields ycli sends that are not published: | the API accepts it and ignores it (checked live on 2026-10-04) |
Not wrapped on purpose
Operation | Why |
| new section published 2026-10, wrapping not decided |
the old placement model (folders); the organization has none to check it on (#394) | |
the old placement model (folders); the organization has none to check it on (#394) | |
the old placement model (folders); the organization has none to check it on (#394) | |
the old placement model (folders); the organization has none to check it on (#394) | |
the old placement model (folders); the organization has none to check it on (#394) | |
| new section published 2026-10, wrapping not decided |
the old placement model (folders); the organization has none to check it on (#394) | |
the old placement model (folders); the organization has none to check it on (#394) |
Development
uv sync --all-extras # the tests use every extra
uv run pytest # 100% coverage gate; HTTP is stubbed, no live networkThe layout and the invariants that keep it regular are in ARCHITECTURE.md; CONTRIBUTING.md has the conventions and how to add an endpoint. Contributions are welcome.
License
MIT © 2026 Sava Znatnov
Available Tools
457 toolsdatalens_audit_entries_updates_listList DataLens entries changed in a periodARead-onlyIdempotent
The entries changed in a period, auto-paginated: what, when and by whom.
A deleted entry is listed too, with isDeleted.
Inputs: from_ (required), to, limit.
datalens_audit_entry_permissions_getGet a user's permissions on DataLens entriesBRead-onlyIdempotent
What one user may do with each entry: execute, read, edit, admin, by entry id.
Inputs: user_id (required), entry_ids (required).
datalens_charts_data_getRead the data of a DataLens chartARead-onlyIdempotent
The data a saved chart shows, as tables of columns and rows.
The chart runs with its saved settings. chartType says how it is built (wizard,
ql, editor). A pivot table is not supported, and a chart whose source cannot be
reached answers with an error.
entries_list with the scope widget finds charts.
Inputs: chart_id (required), params.
datalens_charts_editor_createCreate DataLens editor chartB
Create a chart of the editor and return it with its id.
Inputs: entry (required).
datalens_charts_editor_deleteDelete DataLens editor chartADestructive
Delete a chart; the dashboards that show it lose it.
Inputs: chart_id (required).
datalens_charts_editor_getGet DataLens editor chartBRead-onlyIdempotent
One chart written in the editor: its kind (entry.type) and its tabs of code.
Inputs: chart_id (required), branch, rev_id, workbook_id, +3 more.
datalens_charts_editor_updateUpdate DataLens editor chartAIdempotent
Save a chart of the editor as given.
DataLens does not check a revision here: a save overwrites what was saved since you read it (measured).
Inputs: mode (required), entry (required).
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.
Inputs: data (required), template (required), key, name, +2 more.
datalens_charts_ql_deleteDelete DataLens QL chartADestructive
Delete a chart; the dashboards that show it lose it.
Inputs: chart_id (required).
datalens_charts_ql_getGet DataLens QL chartBRead-onlyIdempotent
One QL chart. Unlike a chart of the wizard it comes flat, with no entry around it.
Inputs: chart_id (required), branch, rev_id, workbook_id, +3 more.
datalens_charts_ql_updateUpdate DataLens QL chartAIdempotent
Save a QL chart as given; the reply is what DataLens answers, as it came.
DataLens does not check a revision here: a save overwrites what was saved since you read it (measured).
Inputs: data (required), mode (required), entry_id (required), template (required), +1 more.
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.
Inputs: data (required), key, name, annotation, +1 more.
datalens_charts_wizard_deleteDelete DataLens wizard chartBDestructive
Delete a chart; the dashboards that show it lose it.
The API has no way to bring it back, and a dashboard that shows it keeps naming its id (measured).
Inputs: chart_id (required).
datalens_charts_wizard_getGet DataLens wizard chartARead-onlyIdempotent
One chart built in the wizard: the datasets it reads and what it shows.
entry.data is what charts_wizard_update takes back; isFavorite and
permissions come only when asked for. entries_list with the scope
widget finds charts; its type says how a chart is built.
Inputs: chart_id (required), branch, rev_id, workbook_id, +3 more.
datalens_charts_wizard_updateUpdate DataLens wizard chartAIdempotent
Save a chart of the wizard as given: read it, change it, send it back whole.
DataLens does not check a revision here: a save overwrites what was saved since you read it (measured).
Inputs: data (required), mode (required), chart_id (required), rev_id, +1 more.
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.
Inputs: name (required), cloud_id (required), subnet_id (required), storage, +2 more.
datalens_cloudenvironments_deleteDelete DataLens cloud environmentBDestructive
Delete a cloud environment and return the operation that deletes it.
Experimental in the DataLens API, written from its document and never called: not measured.
Inputs: id (required).
datalens_cloudenvironments_getGet DataLens cloud environmentARead-onlyIdempotent
One cloud environment: its cloud, its subnet, its status and its storage.
Experimental in the DataLens API and written from its document: not measured. An id nothing knows answers 403 Permission denied, not 404: it is not a lack of rights.
Inputs: id (required), include_permissions.
datalens_cloudenvironments_listList DataLens cloud environmentsARead-onlyIdempotent
The cloud environments of the DataLens instance, auto-paginated.
Experimental in the DataLens API. An instance with none answers an empty list.
Inputs: limit, filter, include_permissions.
datalens_cloudenvironmentstorage_bucket_download_url_createCreate a download link for a DataLens bucket objectARead-onlyIdempotent
A signed link to read one object of the bucket.
The link works for whoever holds it, for a time, and it comes in this tool's result: hand it to the person and do not repeat it. Experimental in the DataLens API and written from its document: not measured.
Inputs: path (required), cloud_environment_id (required).
datalens_cloudenvironmentstorage_bucket_object_metadata_getGet the metadata of a DataLens bucket objectARead-onlyIdempotent
The size of an object, in bytes as a string, and when it last changed.
Experimental in the DataLens API and written from its document: not measured. An environment nothing knows answers 403 Permission denied, not 404.
Inputs: path (required), cloud_environment_id (required).
datalens_cloudenvironmentstorage_bucket_objects_listList the objects of a DataLens storage bucketARead-onlyIdempotent
The paths of the objects in a cloud environment's storage bucket, auto-paginated.
Experimental in the DataLens API and written from its document: not measured. An environment nothing knows answers 403 Permission denied, not 404: it is not a lack of rights.
Inputs: cloud_environment_id (required), limit, prefix.
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.
Inputs: path (required), size (required), content_md5 (required), cloud_environment_id (required).
datalens_cloudenvironments_updateUpdate DataLens cloud environmentBIdempotent
Change the fields given of a cloud environment and return the operation.
Experimental in the DataLens API, written from its document and never called: not measured.
Inputs: id (required), name, storage, description, +1 more.
datalens_collections_access_bindings_listList the roles on a DataLens collectionBRead-onlyIdempotent
Who has which role on a collection, auto-paginated.
Inputs: collection_id (required), limit, get_inherited_bindings.
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.
Inputs: deltas (required), collection_id (required).
datalens_collections_breadcrumbs_listList the path of a DataLens collectionCRead-onlyIdempotent
The collections from the root down to this one.
Inputs: collection_id (required), include_permissions_info.
datalens_collections_content_listList the content of a DataLens collectionARead-onlyIdempotent
What a collection holds: collections, workbooks and entries, auto-paginated.
Start here to find a workbook: list the root, then descend. Capped at the configured item
cap unless limit is given.
Inputs: mode, limit, only_my, order_field, +4 more.
datalens_collections_createCreate DataLens collectionC
Create a collection in another one, or in the root when no parent is given.
Inputs: title (required), parent_id, description.
datalens_collections_deleteDelete DataLens collectionADestructive
Delete a collection with everything it holds: nested collections, workbooks, entries.
Inputs: collection_id (required).
datalens_collections_delete_bulkDelete DataLens collectionsBDestructive
Delete several collections with everything they hold.
Inputs: collection_ids (required).
datalens_collections_getGet DataLens collectionBRead-onlyIdempotent
One collection by id: its title, description and parent.
Inputs: collection_id (required), include_permissions_info.
datalens_collections_list_by_idsList DataLens collections by idBRead-onlyIdempotent
The collections with these ids; an id the caller cannot see is left out.
Inputs: collection_ids (required).
datalens_collections_moveMove DataLens collectionB
Move a collection into another one, or into the root when no parent is given.
Inputs: collection_id (required), title, parent_id.
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.
Inputs: collection_ids (required), parent_id.
datalens_collections_permissions_get_rootGet DataLens root permissionsBRead-onlyIdempotent
Whether the caller may create a collection and a workbook in the root.
Inputs: no named parameters.
datalens_collections_updateUpdate DataLens collectionBIdempotent
Change a collection's title or description; what is not given stays as it is.
Inputs: collection_id (required), title, description.
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.
Inputs: connection (required).
datalens_connections_deleteDelete DataLens connectionADestructive
Delete a connection; the datasets built on it lose their source.
The API has no way to bring it back, and a chart that reads through it keeps naming its id (measured).
Inputs: connection_id (required).
datalens_connections_getGet DataLens connectionARead-onlyIdempotent
One connection by id: its name, its kind and the settings of that kind.
The kind comes in db_type: the reply has no type, though creating one takes it.
A password or a token is never in the reply. workbooks_entries_list with the scope
connection finds the connections of a workbook.
Inputs: connection_id (required), rev_id, workbook_id, binded_dataset_id.
datalens_connections_updateUpdate DataLens connectionBIdempotent
Change the fields given of a connection; returns an acknowledgement.
Inputs: data (required), connection_id (required).
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.
Inputs: entry (required).
datalens_dashboards_deleteDelete DataLens dashboardCDestructive
Delete a dashboard.
Inputs: dashboard_id (required), lock_token.
datalens_dashboards_getGet DataLens dashboardARead-onlyIdempotent
One dashboard: its tabs and the charts, selectors and texts on them.
A real dashboard is large, 100 KB and more, which may be over what a client shows of a
tool's reply: read a big one as a file (ycli datalens dashboards get <id> > dash.json).
entry.data is what dashboards_update takes back.
Inputs: dashboard_id (required), branch, rev_id, workbook_id, +3 more.
datalens_dashboards_updateUpdate DataLens dashboardAIdempotent
Save a dashboard as given: read it, change data, send it back whole.
DataLens does not check a revision here: a save overwrites what was saved since you read it (measured).
Inputs: mode (required), entry (required), lock_token.
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.
Inputs: dataset (required), name, rev_id, options, +7 more.
datalens_datasets_data_getRead rows of a DataLens datasetARead-onlyIdempotent
Rows of a dataset: the columns asked for, one page per call.
Columns are named by the guid of a field, not by its title: read them with
datasets_get. For the next page give offset together with sort.
Inputs: columns (required), dataset_id (required), sort, limit, +4 more.
datalens_datasets_deleteDelete DataLens datasetADestructive
Delete a dataset; the charts built on it lose their data.
The API has no way to bring it back, and a chart built on it keeps naming its id (measured).
Inputs: dataset_id (required).
datalens_datasets_getGet DataLens datasetARead-onlyIdempotent
One dataset by id: its sources, their joins and its fields.
dataset.result_schema lists the fields with their guids, which datasets_data_get
takes as columns. A source or a field of a kind this server does not know comes as it is.
Inputs: dataset_id (required), rev_id, workbook_id.
datalens_datasets_updateUpdate DataLens datasetAIdempotent
Save a dataset as given: read it, change what it holds, send it back whole.
data.dataset replaces the content. Check a change first with datasets_validate.
Read the dataset again after every save: content of an older revision is refused.
The reply holds the content and the revisions; its id is null (measured).
Inputs: data (required), dataset_id (required), workbook_id.
datalens_datasets_validateValidate DataLens datasetARead-onlyIdempotent
Check a dataset, or changes to it, without saving anything.
The reply is the dataset as it would be, with code, message and dataset_errors.
Give the content as last read: after a save, content of an older revision is refused.
Inputs: data (required), dataset_id (required), workbook_id, binded_dataset_id.
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.
Inputs: title (required), workbook_id (required).
datalens_embeddingsecrets_deleteDelete DataLens key for embeddingBDestructive
Delete a key for embedding. Deleting again answers 404.
Inputs: embedding_secret_id (required).
datalens_embeddingsecrets_getGet DataLens key for embeddingARead-onlyIdempotent
One key for embedding: its name, its workbook, who made it. Never its private key.
Inputs: embedding_secret_id (required).
datalens_embeddingsecrets_listList DataLens keys for embeddingBRead-onlyIdempotent
The keys for embedding of a workbook, without their private keys.
Inputs: workbook_id (required).
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).
Inputs: title (required), entry_id (required), settings (required), public_params_mode (required), +4 more.
datalens_embeds_deleteDelete DataLens embedADestructive
Delete an embed; its links stop working. Deleting again answers 404.
Inputs: embed_id (required).
datalens_embeds_listList DataLens embedsBRead-onlyIdempotent
The embeds of one entry: where a chart or a dashboard is shown on another site.
Inputs: entry_id (required).
datalens_embeds_updateUpdate DataLens embedAIdempotent
Save an embed as given and return it.
The embed is replaced whole: read it with embeds_list and send back what is to stay; a
list left out is saved empty.
Inputs: title (required), embed_id (required), settings (required), public_params_mode (required), +4 more.
datalens_entries_listFind DataLens entriesARead-onlyIdempotent
Entries across the whole organization: dashboards, charts, datasets, connections.
The API requires one of scope, scopes and ids. An entry the caller may not read
comes with isLocked set and little else. Auto-paginated; capped at the configured item
cap unless limit is given.
Inputs: ids, type, limit, scope, +10 more.
datalens_entries_permissions_getGet DataLens permissions on entriesARead-onlyIdempotent
What the caller may do with each entry, as a map by id.
An entry that does not exist gives error: "NOT_FOUND" under its id.
Inputs: entry_ids (required).
datalens_entries_relations_listList what DataLens entries use or are used byARead-onlyIdempotent
What entries use (a chart's dataset, a dataset's connection) or what uses them.
Use it before changing or deleting an entry, to see what depends on it. Auto-paginated.
Inputs: entry_ids (required), limit, scope, link_direction, +1 more.
datalens_entries_renameRename DataLens entryAIdempotent
Give an entry another name; its id and what refers to it stay.
Inputs: name (required), entry_id (required).
datalens_entries_revisions_listList DataLens entry revisionsARead-onlyIdempotent
The revisions of an entry: who saved it and when. Auto-paginated.
Inputs: entry_id (required), limit, rev_ids.
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.
Inputs: data (required), entry_id (required).
datalens_entrylocks_deleteRelease the lock of a DataLens entryADestructive
Release a lock; with force it releases a lock another editor holds.
An entry that is not locked answers 404.
Inputs: params (required), entry_id (required).
datalens_entrylocks_extendExtend the lock of a DataLens entryBIdempotent
Hold a lock longer; the reply says when it expires now.
Inputs: data (required), entry_id (required).
datalens_htmlpages_createCreate DataLens HTML pageB
Create an HTML page; the reply has it under entry and warnings about its HTML.
Inputs: content (required), key, name, annotation, +1 more.
datalens_htmlpages_deleteDelete DataLens HTML pageCDestructive
Delete an HTML page.
Inputs: entry_id (required).
datalens_htmlpages_getGet DataLens HTML pageARead-onlyIdempotent
One HTML page: where it lies and its revisions.
The reply has no HTML of the page; htmlpages_preview_url_get gives a link that shows
it. entries_list with the scope artifact finds the pages.
Inputs: entry_id (required), branch, rev_id, include_favorite, +1 more.
datalens_htmlpages_preview_url_getGet a preview link of a DataLens HTML pageCRead-onlyIdempotent
A temporary signed link that shows the page; it stops working after a while.
Inputs: entry_id (required), lang, theme, branch, +1 more.
datalens_htmlpages_updateUpdate DataLens HTML pageAIdempotent
Save new HTML of a page, or make one of its revisions the current one.
mode save makes a new revision and leaves the public one; publish shows it to
everyone. With revId, save copies that revision as the current draft.
Inputs: body (required).
datalens_lakehouseoperations_getGet DataLens Lakehouse operationARead-onlyIdempotent
How far an operation is: done or not, and then its error or its response.
Experimental in the DataLens API and written from its document: not measured. An id nothing knows answers 403 Permission denied, not 404: it is not a lack of rights.
Inputs: operation_id (required).
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.
Inputs: user_ids (required).
datalens_licensing_licenses_listList DataLens licencesARead-onlyIdempotent
The licences (seats) of the DataLens instance, auto-paginated.
Each says whose it is, its type (creator or viewer), whether it is active, and when
its holder last signed in.
Inputs: limit, order, status, sort_by, +1 more.
datalens_licensing_limit_getGet DataLens licence limitARead-onlyIdempotent
How many licences the instance may hold: the limit in force and the one that takes over.
current carries the count of active licences; next is null when no change is set.
Inputs: no named parameters.
datalens_licensing_limit_setSet DataLens licence limitAIdempotent
Set how many licences the instance may hold and return the limits.
The limit is the number of seats DataLens bills for: ask the person before calling. Written from the DataLens document and never called: not measured.
Inputs: value (required).
datalens_members_listList DataLens membersARead-onlyIdempotent
The users, groups and service accounts of the organization, auto-paginated.
The sub of a member is the subject id a role is given to: find it here before
collections_access_bindings_update or workbooks_access_bindings_update. Capped at
the configured item cap unless limit is given.
Inputs: limit, filter, search, tab_id, +1 more.
datalens_permissions_get_bulkGet DataLens permissions on many objectsARead-onlyIdempotent
What the caller may do with many entries, workbooks and collections, in one call.
Each of the three maps is keyed by id: an object the caller can see gives permissions,
one that does not exist gives error: "NOT_FOUND".
Inputs: entry_ids, workbook_ids, collection_ids.
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.
Inputs: data (required), meta (required), key, name, +3 more.
datalens_reports_deleteDelete DataLens reportBDestructive
Delete a report.
Inputs: entry_id (required).
datalens_reports_getGet DataLens reportARead-onlyIdempotent
One report: its slides and the charts and texts on them.
entry.data and entry.meta are what reports_update takes back.
entries_list with the scope report finds reports.
A report has no branch in the API: the read answers the saved version (measured).
Inputs: entry_id (required), rev_id, include_favorite, include_permissions.
datalens_reports_updateUpdate DataLens reportAIdempotent
Save a report; it LOSES the layout of its slide elements and some settings.
DataLens does not check a revision here: a save overwrites what was saved since you read it (measured).
Measured (2026-10-06): DataLens drops them on a save through the API, without a word,
though every value is sent. Ask the person before saving an existing report. Otherwise:
read it, change data, send it back whole.
Inputs: data (required), meta (required), mode (required), entry_id (required), +2 more.
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.
Inputs: name (required), bucket_settings (required), cloud_environment_id (required), labels, +1 more.
datalens_restcatalogs_listList DataLens REST catalogsARead-onlyIdempotent
The REST catalogs of the DataLens instance, auto-paginated.
Experimental in the DataLens API. An instance with none answers an empty list.
Inputs: limit, filter, sort_by, reverse_order, +2 more.
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.
Inputs: cluster_id (required), application_id (required).
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.
Inputs: body (required).
datalens_sparkapplications_getGet DataLens Spark applicationARead-onlyIdempotent
One Spark application: its status, its times and what it runs.
Experimental in the DataLens API and written from its document: not measured. An id nothing knows answers 403 Permission denied, not 404.
Inputs: cluster_id (required), application_id (required).
datalens_sparkapplications_listList DataLens Spark applicationsBRead-onlyIdempotent
The applications of a Spark cluster, auto-paginated.
Experimental in the DataLens API and written from its document: not measured. A cluster nothing knows answers 403 Permission denied, not 404: it is not a lack of rights.
Inputs: cluster_id (required), limit, filter.
datalens_sparkapplications_log_listRead the log of a DataLens Spark applicationBRead-onlyIdempotent
One fragment of an application's log, and the token of the next one.
Give nextPageToken back as page_token to read on. Experimental in the DataLens API
and written from its document: not measured.
Inputs: cluster_id (required), application_id (required), page_size, page_token.
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.
Inputs: name (required), config (required), collection_id (required), cloud_environment_id (required), +2 more.
datalens_sparkclusters_deleteDelete DataLens Spark clusterADestructive
Delete a Spark cluster and return the operation; lakehouseoperations_get reads it.
Experimental API, not measured.
Inputs: id (required).
datalens_sparkclusters_getGet DataLens Spark clusterARead-onlyIdempotent
One Spark cluster: its settings, health and status. Experimental API, not measured.
Inputs: id (required).
datalens_sparkclusters_listList DataLens Spark clustersARead-onlyIdempotent
The Spark clusters of DataLens, auto-paginated.
Experimental API, not measured: ycli follows its document. Capped at the configured item
cap unless limit is given.
Inputs: limit, filter, collection_id.
datalens_sparkclusters_resource_presets_getGet DataLens Spark resource presetBRead-onlyIdempotent
One resource preset: its cores and its memory. Experimental API, not measured.
Inputs: resource_preset_id (required), cloud_environment_id (required).
datalens_sparkclusters_resource_presets_listList DataLens Spark resource presetsARead-onlyIdempotent
The sizes an instance of a Spark cluster can take, auto-paginated.
Experimental API, not measured. Capped at the configured item cap unless limit is given.
Inputs: cloud_environment_id (required), limit.
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.
Inputs: cluster_id (required).
datalens_sparkclusters_stopStop DataLens Spark clusterA
Stop a running Spark cluster and return the operation; lakehouseoperations_get reads it.
Experimental API, not measured.
Inputs: cluster_id (required).
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.
Inputs: name (required), query (required), workbook_id (required), connection_id (required), +2 more.
datalens_sqlqueries_deleteDelete DataLens saved SQL queryBDestructive
Delete a saved SQL query.
Experimental in the DataLens API and written from its document: not measured.
Inputs: sql_query_id (required).
datalens_sqlqueries_getGet DataLens saved SQL queryARead-onlyIdempotent
One saved SQL query: its text, its connection and its parameters.
Experimental in the DataLens API and written from its document: not measured. An
organization whose SQL editor is off answers 403 SQL_EDITOR_NOT_ALLOWED.
Inputs: sql_query_id (required), rev_id, include_favorite, include_permissions.
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.
Inputs: sql_query_id (required), params.
datalens_sqlqueries_updateUpdate DataLens saved SQL queryBIdempotent
Save a SQL query anew and return it; the connection and the text go every time.
Experimental in the DataLens API and written from its document: not measured.
Inputs: query (required), sql_query_id (required), connection_id (required), params, +1 more.
datalens_tenant_details_getGet the DataLens instanceARead-onlyIdempotent
The DataLens instance the credentials reach (a safe auth probe).
Inputs: no named parameters.
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.
Inputs: catalog (required), cluster_id (required).
datalens_trinoclusters_catalog_deleteDetach a REST catalog from a DataLens Trino clusterADestructive
Detach a REST catalog from a Trino cluster; the catalog itself stays.
Experimental in the DataLens API, written from its document and never called: not measured.
Inputs: catalog_id (required), cluster_id (required).
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.
Inputs: name (required), collection_id (required), worker_config (required), cloud_environment_id (required), +4 more.
datalens_trinoclusters_deleteDelete DataLens Trino clusterBDestructive
Delete a Trino cluster and return the operation that deletes it.
Experimental in the DataLens API, written from its document and never called: not measured.
Inputs: id (required).
datalens_trinoclusters_getGet DataLens Trino clusterARead-onlyIdempotent
One Trino cluster: its configuration, its health, its status and its coordinator.
Experimental in the DataLens API and written from its document: not measured. An id nothing knows answers 403 Permission denied, not 404: it is not a lack of rights.
Inputs: id (required).
datalens_trinoclusters_listList DataLens Trino clustersARead-onlyIdempotent
The Trino clusters of the DataLens instance, auto-paginated.
Experimental in the DataLens API. An instance with none answers an empty list.
Inputs: limit, filter, catalog_id, collection_id.
datalens_trinoclusters_resource_preset_getGet DataLens Trino resource presetCRead-onlyIdempotent
One size of a cluster's machines: its cores and its memory.
Experimental in the DataLens API and written from its document: not measured.
Inputs: resource_preset_id (required), cloud_environment_id (required).
datalens_trinoclusters_resource_presets_listList DataLens Trino resource presetsBRead-onlyIdempotent
The sizes a cluster's machines may have in a cloud environment, auto-paginated.
Experimental in the DataLens API and written from its document: not measured. An environment nothing knows answers 403 Permission denied, not 404.
Inputs: cloud_environment_id (required), limit.
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.
Inputs: cluster_id (required).
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.
Inputs: cluster_id (required).
datalens_workbookexports_cancelCancel DataLens workbook exportAIdempotent
Stop an export: its status becomes error, with WORKBOOK_EXPORT_CANCELLED.
An export that is over stays as it ended, and the call answers the same.
Inputs: export_id (required).
datalens_workbookexports_result_getGet DataLens workbook export resultARead-onlyIdempotent
The exported workbook: every entry it holds, as one document.
data is what workbookimports_start takes. An export that is not over, or was
cancelled, answers 409 Conflict. The document is large (hundreds of kilobytes for a
workbook with a dashboard) and holds no password or token of a connection.
Inputs: export_id (required).
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.
Inputs: workbook_id (required).
datalens_workbookexports_status_getGet DataLens workbook export statusARead-onlyIdempotent
How far an export is: pending, success or error, and the progress in percent.
notifications holds what the export has to say about an entry: id, level, message.
Inputs: export_id (required).
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.
Inputs: data (required), title (required), description, collection_id.
datalens_workbookimports_status_getGet DataLens workbook import statusARead-onlyIdempotent
How far an import is: pending, success or error, and the progress in percent.
notifications holds what the import has to say about an entry: id, level, message.
Inputs: import_id (required).
datalens_workbooks_access_bindings_listList the roles on a DataLens workbookBRead-onlyIdempotent
Who has which role on a workbook, auto-paginated.
Inputs: workbook_id (required), limit, get_inherited_bindings.
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.
Inputs: deltas (required), workbook_id (required).
datalens_workbooks_createCreate DataLens workbookA
Create a workbook in a collection, or in the root when no collection is given.
Inputs: title (required), description, collection_id.
datalens_workbooks_deleteDelete DataLens workbookADestructive
Delete a workbook with everything it holds: connections, datasets, charts, dashboards.
Deleting a workbook that is already deleted answers 500, not 404: after a server error, read the workbook before deleting it again.
Inputs: workbook_id (required).
datalens_workbooks_delete_bulkDelete DataLens workbooksBDestructive
Delete several workbooks with everything they hold.
Inputs: workbook_ids (required).
datalens_workbooks_entries_listList the entries of a DataLens workbookARead-onlyIdempotent
What a workbook holds: connections, datasets, charts and dashboards, auto-paginated.
scope says the kind of each entry; its id opens it with the tools of that kind. Capped
at the configured item cap unless limit is given.
Inputs: workbook_id (required), limit, scope, filters, +4 more.
datalens_workbooks_getGet DataLens workbookBRead-onlyIdempotent
One workbook by id: its title, description and collection.
Inputs: workbook_id (required), include_permissions_info.
datalens_workbooks_listList DataLens workbooksARead-onlyIdempotent
The workbooks of one collection (the root by default), auto-paginated.
It does not descend into nested collections: collections_content_list shows what a
collection holds. Capped at the configured item cap unless limit is given.
Inputs: limit, only_my, order_field, collection_id, +3 more.
datalens_workbooks_list_by_idsList DataLens workbooks by idARead-onlyIdempotent
The workbooks with these ids; an id the caller cannot see is left out.
Inputs: workbook_ids (required).
datalens_workbooks_moveMove DataLens workbookB
Move a workbook into a collection, or into the root when no collection is given.
Inputs: workbook_id (required), title, collection_id.
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.
Inputs: workbook_ids (required), collection_id.
datalens_workbooks_updateUpdate DataLens workbookAIdempotent
Change a workbook's title or description; what is not given stays as it is.
Inputs: workbook_id (required), title, description.
forms_access_grantGrant Forms survey accessBIdempotent
Let a user or a group perform an action on a form; returns every permission.
Granting someone who already has the action changes nothing.
Inputs: body (required), survey_id (required).
forms_access_listGet Forms survey accessARead-onlyIdempotent
Who may edit (change) and who may fill (submit) a form, one entry per action.
access is owner, restricted (the listed users/groups), common (the whole
organization) or public (anyone with the link).
Inputs: survey_id (required).
forms_access_revokeRevoke Forms survey accessBDestructive
Stop a user or a group performing an action on a form; returns every permission.
Inputs: body (required), survey_id (required).
forms_access_updateSet Forms survey access levelBIdempotent
Set the access level of one action (change or submit); returns every permission.
Inputs: body (required), survey_id (required).
forms_answers_deleteDelete a Forms answerADestructive
Delete one answer of a form; answers_restore brings it back.
Inputs: answer_id (required), survey_id (required).
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).
Inputs: body (required), survey_id (required).
forms_answers_getGet Forms answerARead-onlyIdempotent
One full form response by answer_id or answer_key (the API takes one of them).
A flat query-param route (GET /v1/answers) — no survey id needed. Each data
item is a self-describing question record ({id, label, type, value, …}).
Inputs: answer_id, answer_key.
forms_answers_integrations_listList Forms answer integrationsARead-onlyIdempotent
The integration runs one answer triggered, by answer_id or answer_key (one of them).
Each entry has the run's status and the field of its type (issue_key, link,
to_address, url, ...); notifications_get has the full run.
Inputs: answer_id, answer_key.
forms_answers_listList Forms answersARead-onlyIdempotent
A form's responses, at most limit (drains pages via the next cursor).
Returns the {columns, answers, next} envelope; next is always None
in the merged result.
Inputs: survey_id (required), limit, date_to, ordering, +5 more.
forms_answers_restoreRestore a deleted Forms answerC
Bring a deleted answer of a form back.
Inputs: answer_id (required), survey_id (required).
forms_conditions_hook_createCreate Forms integration-group conditionB
Add a condition group to an integration group; returns it with its id.
Inputs: body (required), hook_id (required), survey_id (required).
forms_conditions_hook_deleteDelete Forms integration-group conditionBDestructive
Delete one condition group from an integration group; the others stay untouched.
Inputs: hook_id (required), survey_id (required), condition_id (required).
forms_conditions_hook_getGet Forms integration-group conditionARead-onlyIdempotent
One condition group of an integration group by id — its operator and clauses.
Inputs: hook_id (required), survey_id (required), condition_id (required).
forms_conditions_hook_listList Forms integration-group conditionsBRead-onlyIdempotent
An integration group's conditions: the {operator, items} envelope of groups.
The group's integrations run on a new answer only when these conditions match.
Inputs: hook_id (required), survey_id (required).
forms_conditions_hook_updateModify Forms integration-group conditionAIdempotent
Replace an integration group's condition group — a FULL replacement.
Inputs: body (required), hook_id (required), survey_id (required), condition_id (required).
forms_conditions_hook_update_operatorSet Forms integration-group conditions operatorBIdempotent
Set the boolean operator BETWEEN an integration group's condition groups.
Inputs: hook_id (required), operator (required), survey_id (required).
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.
Inputs: body (required), page_id (required), survey_id (required).
forms_conditions_page_deleteDelete Forms page show conditionBDestructive
Delete one condition group from a page; the other groups stay untouched.
Inputs: page_id (required), survey_id (required), condition_id (required).
forms_conditions_page_getGet Forms page show conditionBRead-onlyIdempotent
One condition group of a page by id — its operator and clause items.
Inputs: page_id (required), survey_id (required), condition_id (required).
forms_conditions_page_listList Forms page show conditionsARead-onlyIdempotent
A page's show conditions: the {operator, items} envelope of condition groups.
The top-level operator joins the GROUPS; each group has its own operator joining its
clauses. A group's integer id is what the get/update/delete tools take.
Inputs: page_id (required), survey_id (required).
forms_conditions_page_updateModify Forms page show conditionAIdempotent
Replace a page's condition group — a FULL replacement, not a partial update.
Inputs: body (required), page_id (required), survey_id (required), condition_id (required).
forms_conditions_page_update_operatorSet Forms page conditions operatorBIdempotent
Set the boolean operator BETWEEN a page's condition groups; returns the envelope.
Inputs: page_id (required), operator (required), survey_id (required).
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.
Inputs: body (required), survey_id (required), question_id (required).
forms_conditions_question_deleteDelete Forms question show conditionADestructive
Delete one condition group from a question; the other groups stay untouched.
Inputs: survey_id (required), question_id (required), condition_id (required).
forms_conditions_question_getGet Forms question show conditionARead-onlyIdempotent
One condition group of a question by id — its operator and clause items.
Clauses have no ids of their own: edit one by replacing the whole group via
conditions_question_update.
Inputs: survey_id (required), question_id (required), condition_id (required).
forms_conditions_question_listList Forms question show conditionsARead-onlyIdempotent
A question's show conditions: the {operator, items} envelope of condition groups.
The top-level operator joins the GROUPS; each group has its own operator joining its
clauses. A group's integer id is what the get/update/delete tools take.
Inputs: survey_id (required), question_id (required).
forms_conditions_question_updateModify Forms question show conditionAIdempotent
Replace a question's condition group — a FULL replacement, not a partial update.
Despite the PATCH verb the API validates a complete group: operator and at least one
clause are both required; the group id is never sent.
Inputs: body (required), survey_id (required), question_id (required), condition_id (required).
forms_conditions_question_update_operatorSet Forms question conditions operatorAIdempotent
Set the boolean operator BETWEEN a question's condition groups; returns the envelope.
Group-internal operators are untouched — change those via conditions_question_update.
Inputs: operator (required), survey_id (required), question_id (required).
forms_conditions_submit_createCreate Forms submit-button show conditionB
Add a condition group gating the form's submit button; returns it with its id.
Inputs: body (required), survey_id (required).
forms_conditions_submit_deleteDelete Forms submit-button show conditionBDestructive
Delete one condition group from the submit button; the other groups stay untouched.
Inputs: survey_id (required), condition_id (required).
forms_conditions_submit_getGet Forms submit-button show conditionARead-onlyIdempotent
One condition group of the submit button by id — its operator and clauses.
Inputs: survey_id (required), condition_id (required).
forms_conditions_submit_listList Forms submit-button show conditionsBRead-onlyIdempotent
The submit button's show conditions: the {operator, items} envelope of groups.
These hang directly on the survey (GET /surveys/{id}/conditions).
Inputs: survey_id (required).
forms_conditions_submit_updateModify Forms submit-button show conditionAIdempotent
Replace a submit-button condition group — a FULL replacement, not a partial update.
Inputs: body (required), survey_id (required), condition_id (required).
forms_conditions_submit_update_operatorSet Forms submit-button conditions operatorAIdempotent
Set the boolean operator BETWEEN the submit button's condition groups.
Inputs: operator (required), survey_id (required).
forms_files_deleteDelete Forms fileADestructive
Delete a stored form-filling file, identified by its path and/or url.
At least one of path / url must identify the file. The API answers 200 OK with
no useful body, so the returned record confirms the accepted action.
Inputs: url, path.
forms_files_verifyVerify Forms filesARead-onlyIdempotent
Check the upload/scan status and download access of already-uploaded form-filling files.
A read done via POST — nothing is mutated. Each returned item's check_status is one of
check, ready, infected, error, deleted. Uploading and downloading the
files themselves are binary payloads — CLI/SDK-only.
Inputs: files (required), survey_id (required).
forms_filling_getGet Forms fillable formARead-onlyIdempotent
The form's fill-time settings — the pages/questions to fill, submit conditions, and values.
Use this to discover a form's fillable structure: pages[].items[] are the questions (each a
polymorphic question schema) and their id values are the slug keys a response is posted
under. Complements surveys_get (admin settings) and questions_list (authoring view).
Post a response with filling_submit.
Inputs: survey_id (required), key.
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).
Inputs: body (required), survey_id (required), key, validate_only.
forms_filling_suggestGet Forms fill suggestionsARead-onlyIdempotent
Autocomplete prompts for a suggest-type question while filling a form.
Pass the question slug (from filling_get) plus the search text; each returned
item's id/text is a candidate value for the answer.
Inputs: survey_id (required), text, question, parent_id, +1 more.
forms_history_listList Forms change logARead-onlyIdempotent
The changes made to a form — who changed which part, when — across pages.
Capped at the configured item cap unless limit is given.
Inputs: survey_id (required), limit, ordering.
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.
Inputs: body (required), survey_id (required).
forms_hooks_deleteDelete Forms integration groupADestructive
Delete an integration group together with its integrations and conditions.
Inputs: hook_id (required), survey_id (required).
forms_hooks_getGet Forms integration groupARead-onlyIdempotent
One integration group by id, with its conditions and integrations.
Inputs: hook_id (required), survey_id (required).
forms_hooks_listList Forms integration groupsARead-onlyIdempotent
A form's integration groups, each with its conditions and integrations.
An integration group (hook) runs its active integrations on every new answer that matches
its conditions; conditions_hook_* edit the conditions, subscriptions_* the
integrations.
Inputs: survey_id (required).
forms_hooks_updateModify Forms integration groupAIdempotent
Rename an integration group or switch it on or off; only the fields set change.
Inputs: body (required), hook_id (required), survey_id (required).
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.
Inputs: body (required), survey_id (required).
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).
Inputs: body (required), survey_id (required).
forms_keysets_deleteDelete Forms key setADestructive
Delete a key set — its unused keys (personal fill links) stop working.
The API answers 200 OK with no body, so a typed acknowledgement is returned.
Inputs: keyset_id (required), survey_id (required).
forms_keysets_getGet Forms key setARead-onlyIdempotent
One key set's settings and usage (total keys, used count, is_enabled).
Look up keyset_id via keysets_list. To download the actual keys use the
forms keysets download CLI command (binary payload — not exposed over MCP).
Inputs: keyset_id (required), survey_id (required).
forms_keysets_listList Forms key setsARead-onlyIdempotent
Every personal-link key set on a form, as a flat array.
A key set is a batch of single-use keys that become personal form-filling links; each item's
integer id is what you pass to keysets_get. Use surveys_list to find the
survey_id first. Downloading the actual keys is a binary payload — CLI/SDK-only.
Inputs: survey_id (required).
forms_keysets_updateModify Forms key setAIdempotent
Replace a key set's settings; returns the updated Keyset.
Despite the PATCH verb, the API validates the body as a full record: name, total
and is_enabled must all be set or the request is rejected with 400. total can
only grow: a number smaller than the set has now is refused.
Inputs: body (required), keyset_id (required), survey_id (required).
forms_me_getGet current Forms userARead-onlyIdempotent
The authenticated Yandex Forms user (a safe auth probe).
Inputs: no named parameters.
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.
Inputs: notification_id (required).
forms_notifications_errors_listList a Forms survey's failed integration runsARead-onlyIdempotent
Ids of a form's failed integration runs that are still shown.
Read each with notifications_get.
Inputs: survey_id (required).
forms_notifications_getGet a Forms integration runCRead-onlyIdempotent
One integration run with what the integration was given, answered and failed with.
Inputs: notification_id (required).
forms_notifications_listList Forms integration runsARead-onlyIdempotent
Runs of a form's integrations (one per answer and integration), across pages.
Give survey_id: without it the API answers 404 Not Found, and the other filters only
narrow that form's runs. Capped at the configured item cap unless limit is given. Read
one run's context, response and error with notifications_get.
Inputs: limit, status, hook_id, visible, +9 more.
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.
Inputs: notification_id (required).
forms_notifications_status_getGet a Forms integration run stateBRead-onlyIdempotent
The state of one integration run: pending, success, error or canceled.
Inputs: notification_id (required).
forms_operations_getGet Forms operationARead-onlyIdempotent
The status of a long-running Forms operation — poll this to watch an async export finish.
Returns {id, status, message} where status is one of ok (finished, result
ready), fail, wait (still running) or not_running. Take the operation_id
from the id an async trigger returned (e.g. the answers_export tool or
ycli forms answers export … --no-wait); re-call until status is ok or fail.
Inputs: operation_id (required).
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.
Inputs: body (required), survey_id (required).
forms_questions_deleteDelete Forms questionADestructive
Delete a question from a form; one that a display condition refers to is refused.
Delete the condition first (conditions_question_delete).
The API answers 204 No Content; the returned record confirms the accepted action.
Inputs: survey_id (required), question_id (required), force.
forms_questions_getGet Forms questionARead-onlyIdempotent
One question's settings by id — label, slug, type and common presentation flags.
Where questions_list returns every question grouped into pages, this fetches a single
question keyed by question_id (take it from an item's id in questions_list).
Type-specific detail (validators, options, conditions) comes in the fields of its type.
Inputs: survey_id (required), question_id (required), with_slugs.
forms_questions_listList Forms questionsBRead-onlyIdempotent
A form's questions, grouped into pages (the {pages} envelope).
Inputs: survey_id (required).
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.
Inputs: body (required), survey_id (required), question_id (required).
forms_questions_updateModify Forms questionAIdempotent
Replace a question's settings (same typed body as create); returns the updated Question.
The body's type must match the existing question's type; look it up with
questions_get first.
Inputs: body (required), survey_id (required), question_id (required).
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.
Inputs: body (required), hook_id (required), survey_id (required).
forms_subscriptions_deleteDelete Forms integrationADestructive
Delete one integration from a hook; the hook's other integrations stay.
Inputs: hook_id (required), survey_id (required), subscription_id (required).
forms_subscriptions_getGet Forms integrationBRead-onlyIdempotent
One integration of a hook by id, with its type-specific settings.
Inputs: hook_id (required), survey_id (required), subscription_id (required).
forms_subscriptions_listList Forms integrationsARead-onlyIdempotent
Every integration of an integration group (hook), each tagged by type.
Types: email, tracker, tracker_comment, wiki, jsonrpc, http, function. hooks_list
returns the same integrations nested in each hook.
Inputs: hook_id (required), survey_id (required).
forms_subscriptions_updateModify Forms integrationBIdempotent
Change an integration: only the fields set in body change.
Inputs: body (required), hook_id (required), survey_id (required), subscription_id (required).
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.
Inputs: body (required).
forms_surveys_deleteDelete Forms surveyADestructive
Delete a form permanently — IRREVERSIBLE: its questions and collected answers are lost.
The API answers 204 No Content; the returned record confirms the accepted action.
Inputs: survey_id (required).
forms_surveys_getGet Forms surveyCRead-onlyIdempotent
One form's settings by id.
Inputs: survey_id (required).
forms_surveys_listList Forms surveysARead-onlyIdempotent
Every form (survey) the caller can see, auto-paginated over the API's offset pages.
Capped at the configured item cap unless limit is given. Each item's id is the
form id you pass to surveys_get / questions_list / answers_list.
Inputs: name, group, limit, orderby, +4 more.
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.
Inputs: survey_id (required).
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.
Inputs: survey_id (required).
forms_surveys_updateModify Forms surveyAIdempotent
Patch a form's settings — only the fields set in body change; returns the Survey.
Untouched settings keep their current values, so a partial patch is safe to repeat.
Inputs: body (required), survey_id (required).
forms_variables_listList Forms integration variablesARead-onlyIdempotent
The variable types a form's integrations can reference in their texts.
Each item names a type (e.g. form.answer_url, form.question_answer), the
arguments it takes and the renderers it supports; put one into a subscription's
variables to use it.
Inputs: survey_id (required).
schema_getRead the schema of a tool's bodyARead-onlyIdempotent
Read one definition of a body that its tool lists as a free-form object.
Such a parameter says in its description which definition to start from. The answer
refers to others as #/$defs/<name>: read those with this tool too, only the ones the
task needs.
Inputs: name (required), service (required).
status_getCheck Yandex 360 auth statusARead-onlyIdempotent
Report whose token this is, its organization and which services accept it.
credential says which token is in use (oauth or iam), never its value.
identity is the token's owner (Yandex ID; unknown for an IAM token). organization is
the configured id and, when the token has the directory:read_organization scope
(API 360), its name. services has one probe each, with valid and, on failure,
detail.
Inputs: no named parameters.
tracker_applications_listList Tracker external applicationsARead-onlyIdempotent
External applications that Tracker issues can be linked to via external links.
Use this to discover which application ids/types are available before creating an external link; each application's id and type values are identical.
Inputs: no named parameters.
tracker_attachments_deleteDelete Tracker issue attachmentADestructive
Permanently delete one attachment from a Tracker issue (irreversible).
Get file_id from attachments_list. Returns an acknowledgement on success.
Inputs: file_id (required), issue_key (required).
tracker_attachments_getGet Tracker attachment metadataARead-onlyIdempotent
One attachment's metadata (name, size, MIME type, uploader, download URL).
Downloading the bytes is CLI/SDK-only: ycli tracker attachments download.
Inputs: file_id (required), issue_key (required).
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.
Inputs: data (required), filename (required), issue_key (required), created_at (required), +1 more.
tracker_attachments_listList Tracker issue attachmentsARead-onlyIdempotent
Files attached to a Tracker issue — name, size, MIME type, uploader, download URLs.
Returns metadata only (an ItemList[Attachment]); use it to discover a file's id and name.
Downloading the file's or thumbnail's raw bytes is CLI/SDK-only — run
ycli tracker attachments download <ISSUE> <FILE_ID> <FILENAME> — because binary blobs
are not an MCP payload.
Inputs: issue_key (required).
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.
Inputs: data (required), filename (required), issue_key (required), rename_to.
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.
Inputs: data (required), filename (required), rename_to.
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).
Inputs: body (required), queue_id (required).
tracker_autoactions_getGet Tracker queue autoactionARead-onlyIdempotent
One queue autoaction by id — its filter/query, actions, schedule and run stats.
An autoaction periodically applies its actions to every issue matching its filter/query.
For run history use autoactions_logs_list (summaries) then autoactions_logs_get
(per-issue outcomes of one run).
Inputs: queue_id (required), action_id (required).
tracker_autoactions_logs_getGet Tracker autoaction runARead-onlyIdempotent
The per-issue outcomes of one autoaction run — each issue touched and its result status.
Get the run_id from autoactions_logs_list. Only autoactions that auto-update issues
produce these detail logs.
Inputs: run_id (required), queue_id (required), action_id (required).
tracker_autoactions_logs_listList Tracker autoaction runsARead-onlyIdempotent
Run summaries for an autoaction — one record per launch with hit/success/failure counts.
Each record's id is the run id you pass to autoactions_logs_get for that run's
per-issue outcomes.
Inputs: queue_id (required), action_id (required).
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.
Inputs: body (required).
tracker_boards_deleteDelete Tracker boardADestructive
Permanently delete an agile board (irreversible; its issues are not affected).
Returns an acknowledgement on success.
Inputs: board_id (required).
tracker_boards_getGet Tracker boardARead-onlyIdempotent
Look up a single agile board by its numeric id.
The board includes its columns, estimation field and burndown calendar. Use this when you
already know the board id; use boards_list to browse every board, and sprints_list to
enumerate the sprints defined on this board.
Inputs: board_id (required).
tracker_boards_listList Tracker boardsARead-onlyIdempotent
All agile boards in the organisation, sorted by ascending board id.
Auto-paginated via the relative id-cursor. Capped at the configured item cap unless limit
is given. Use boards_get when you know one board id, and sprints_list to list a
board's sprints.
Inputs: limit.
tracker_boards_updateEdit Tracker boardAIdempotent
Edit an agile board; only the fields set in body are changed.
Supports renaming, toggling backlog_available/sprints_available and replacing the
columns layout. Returns the updated board.
Inputs: body (required), board_id (required).
tracker_bulk_getGet Tracker bulk-change statusARead-onlyIdempotent
Current status of an async bulk-change operation (issues_update_bulk and its kin).
status runs CREATED → COMPLETE / FAILED; totalIssues /
totalCompletedIssues show progress. Poll this after a bulk trigger returns an id;
once it reports FAILED, call bulk_issues_list for the per-issue errors.
Inputs: bulk_id (required).
tracker_bulk_issues_listList Tracker bulk-change failed issuesARead-onlyIdempotent
The issues a bulk-change operation could NOT change, each with its per-field error.
Use after bulk_get reports a non-zero failure count to see why specific issues were
rejected (e.g. an invalid resolution for the target queue/type). Successful issues are not
listed here.
Inputs: bulk_id (required).
tracker_changelog_listList Tracker issue changelogARead-onlyIdempotent
Full changelog (edit history) for a Tracker issue.
Auto-paginated via the relative id-cursor. Capped at the configured item cap unless limit
is given.
Inputs: issue_key (required), sort, field, limit, +1 more.
tracker_checklists_clearClear Tracker issue checklistADestructive
Permanently delete the ENTIRE checklist of a Tracker issue (all items, irreversible).
Returns the issue without its checklist.
Inputs: issue_key (required).
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.
Inputs: body (required), issue_key (required).
tracker_checklists_deleteDelete Tracker checklist itemADestructive
Permanently remove one item from a Tracker issue's checklist (irreversible).
Get item_id from checklists_list. Returns the issue with its remaining checklist.
Inputs: item_id (required), issue_key (required).
tracker_checklists_listGet Tracker issue checklistARead-onlyIdempotent
The checklist items on a Tracker issue (text, done flag, assignee, per-item deadline).
Returns a flat array; an issue with no checklist yields an empty list. Item ids from here
feed checklists_update / checklists_delete.
Inputs: issue_key (required).
tracker_checklists_updateEdit Tracker checklist itemAIdempotent
Edit one checklist item on a Tracker issue (text, checked state, assignee, deadline).
Get item_id from checklists_list. Returns the issue with its updated checklist.
Inputs: body (required), item_id (required), issue_key (required).
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.
Inputs: body (required), board_id (required).
tracker_columns_deleteDelete Tracker board columnADestructive
Permanently remove a column from an agile board (irreversible).
Returns an acknowledgement on success.
Inputs: board_id (required), column_id (required).
tracker_columns_getGet Tracker board columnARead-onlyIdempotent
Look up a single board column by its numeric id.
The column includes the issue statuses grouped into it. Use this when you already know the
board and column ids; use columns_list to enumerate every column on a board.
Inputs: board_id (required), column_id (required).
tracker_columns_listList Tracker board columnsARead-onlyIdempotent
Every column defined on the given agile board.
Each column carries the issue statuses whose cards land in it. Use this to inspect a board's
column layout; use columns_get when you already know a column id, and boards_get for
the board itself.
Inputs: board_id (required).
tracker_columns_updateEdit Tracker board columnAIdempotent
Edit a board column; only the fields set in body are changed.
Get column_id from columns_list. Returns the updated column.
Inputs: body (required), board_id (required), column_id (required).
tracker_comments_createAdd Tracker issue commentB
Add a comment to a Tracker issue; returns the created comment.
Inputs: body (required), issue_key (required).
tracker_comments_deleteDelete Tracker issue commentADestructive
Permanently delete one comment from a Tracker issue (irreversible).
Get comment_id from comments_list. Returns an acknowledgement on success.
Inputs: issue_key (required), comment_id (required).
tracker_comments_getGet Tracker issue commentBRead-onlyIdempotent
One comment of a Tracker issue: text, author, edit history and, on request, attachments.
Inputs: issue_key (required), comment_id (required), expand.
tracker_comments_importImport Tracker issue commentA
Import a comment onto an issue preserving its original author and timestamp (admin-only).
Returns the imported comment.
Inputs: body (required), issue_key (required).
tracker_comments_listList Tracker issue commentsARead-onlyIdempotent
All comments on a Tracker issue, auto-paginated via the relative id-cursor.
Capped at the configured item cap unless limit is given, so very long threads
are truncated at the cap rather than fetched forever.
Inputs: issue_key (required), limit, expand.
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.
Inputs: name (required), issue_key (required), comment_id (required).
tracker_comments_updateEdit Tracker issue commentAIdempotent
Replace the text of an existing comment on a Tracker issue.
Get comment_id from comments_list. Returns the updated comment.
Inputs: body (required), issue_key (required), comment_id (required).
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.
Inputs: body (required).
tracker_components_deleteDelete Tracker componentBDestructive
Permanently delete a component (irreversible). Returns an acknowledgement.
Inputs: component_id (required).
tracker_components_getGet Tracker componentBRead-onlyIdempotent
One component with its queue, owner, description and auto-assign flag.
Inputs: component_id (required), fields.
tracker_components_group_permissions_getGet a group's rights on a Tracker componentBRead-onlyIdempotent
What one group may do on a component (create, read, write, deny).
Inputs: group_id (required), component_id (required).
tracker_components_listList Tracker componentsARead-onlyIdempotent
All components created by the organisation's users.
Each component carries its queue, owner and description. Components are sub-areas used to classify issues within a queue; use this to discover valid component names/ids before filtering or creating issues.
Inputs: no named parameters.
tracker_components_list_for_queueList components of a Tracker queueARead-onlyIdempotent
The components of one queue, so you need not filter components_list by queue.
Inputs: queue_id (required), fields.
tracker_components_updateEdit Tracker componentAIdempotent
Edit a component; only the fields set in body are changed.
Get component_id from components_list. Pass version to guard against concurrent
edits (optimistic locking).
Inputs: body (required), component_id (required), version.
tracker_components_user_permissions_getGet a user's rights on a Tracker componentARead-onlyIdempotent
What one user may do on a component (create, read, write, deny) and who grants it.
Inputs: user_id (required), component_id (required).
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.
Inputs: body (required).
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.
Inputs: body (required), dashboard_id (required).
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.
Inputs: entity_id (required), entity_type (required), temp_file_id (required), expand, +3 more.
tracker_entities_attachments_deleteDelete Tracker entity attachmentADestructive
Permanently delete an attachment from a Tracker entity (irreversible).
The API answers with an empty body; returns an acknowledgement on success.
Inputs: file_id (required), entity_id (required), entity_type (required).
tracker_entities_attachments_getGet Tracker entity attachmentARead-onlyIdempotent
One attachment's metadata (name, size, MIME type, download URL).
Downloading the raw bytes is CLI/SDK-only (tracker entities attachments download).
Inputs: file_id (required), entity_id (required), entity_type (required).
tracker_entities_attachments_listList Tracker entity attachmentsARead-onlyIdempotent
Files attached to an entity — name, size, MIME type, uploader and download URL.
Returns metadata only. Downloading the raw bytes is CLI/SDK-only — run
ycli tracker entities attachments download <FILE_ID> <FILENAME> — because binary blobs
are not an MCP payload.
Inputs: entity_id (required), entity_type (required).
tracker_entities_bulk_getGet Tracker entity bulk-change statusARead-onlyIdempotent
Current status of an async entity bulk-change operation started by entities_update_bulk.
status runs CREATED → COMPLETE / FAILED; poll until it settles.
Inputs: bulk_id (required).
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": "…"}].
Inputs: body (required), entity_id (required), entity_type (required), expand, +3 more.
tracker_entities_checklists_deleteDelete Tracker entity checklistADestructive
Permanently delete the ENTIRE checklist of a Tracker entity (all items, irreversible).
To remove a single item use entities_checklists_items_delete. Returns the entity.
Inputs: entity_id (required), entity_type (required), expand, fields, +2 more.
tracker_entities_checklists_items_deleteDelete Tracker entity checklist itemADestructive
Permanently remove one item from a Tracker entity's checklist (irreversible).
Returns the entity with its remaining checklist.
Inputs: item_id (required), entity_id (required), entity_type (required), expand, +3 more.
tracker_entities_checklists_items_updateEdit Tracker entity checklist itemBIdempotent
Edit one checklist item on a Tracker entity (text, checked state, assignee, deadline).
Returns the entity with its updated checklist.
Inputs: body (required), item_id (required), entity_id (required), entity_type (required), +4 more.
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.
Inputs: body (required), item_id (required), entity_id (required), entity_type (required), +4 more.
tracker_entities_checklists_updateEdit Tracker entity checklistAIdempotent
Replace/update a Tracker entity's checklist items in one call.
body is a bare array of items, each with id/text/checked. To edit a single
item by id use entities_checklists_items_update. Returns the entity with its checklist.
Inputs: body (required), entity_id (required), entity_type (required), expand, +3 more.
tracker_entities_comments_createAdd Tracker entity commentB
Add a comment to a Tracker entity; returns the created comment.
Inputs: body (required), entity_id (required), entity_type (required), expand, +3 more.
tracker_entities_comments_deleteDelete Tracker entity commentBDestructive
Permanently delete one comment from a Tracker entity (irreversible).
Returns an acknowledgement on success.
Inputs: entity_id (required), comment_id (required), entity_type (required), notify, +1 more.
tracker_entities_comments_getGet Tracker entity commentCRead-onlyIdempotent
A single comment on an entity by id.
Inputs: entity_id (required), comment_id (required), entity_type (required), expand.
tracker_entities_comments_listList Tracker entity commentsBRead-onlyIdempotent
All comments on an entity — author, text, timestamps and summoned users.
Inputs: entity_id (required), entity_type (required), expand.
tracker_entities_comments_list_relativeList Tracker entity comments (relative)ARead-onlyIdempotent
An entity's comments via the cursor-paginated …/comments/_relative endpoint.
Prefer this over entities_comments_list when the comment thread is long — it drains
pages up to limit (the configured item cap by default).
Inputs: entity_id (required), entity_type (required), limit.
tracker_entities_comments_updateEdit Tracker entity commentAIdempotent
Edit a comment on a Tracker entity; returns the updated comment.
comment_id addresses the comment (get it from entities_comments_list).
Inputs: body (required), entity_id (required), comment_id (required), entity_type (required), +4 more.
tracker_entities_createCreate Tracker entityB
Create a Tracker entity (project, portfolio or goal); returns it with its id.
Inputs: body (required), entity_type (required), fields.
tracker_entities_deleteDelete Tracker entityADestructive
Permanently delete a Tracker entity (project/portfolio/goal) — irreversible.
Pass with_board=true to also delete a project's linked agile board. Returns an
acknowledgement on success.
Inputs: entity_id (required), entity_type (required), with_board.
tracker_entities_events_listList Tracker entity historyARead-onlyIdempotent
An entity's event history (created/updated/commented/…), auto-paginated.
Each event carries an author, a timestamp, a display title and the individual field changes.
Capped at the configured item cap unless limit is given.
Inputs: entity_id (required), entity_type (required), limit, selected, +2 more.
tracker_entities_getGet Tracker entityARead-onlyIdempotent
A single Tracker entity (project, portfolio or goal) by id, with its fields block.
Pass fields to pull extra parameters into the response — keyResultItems for a goal's
key results, checklistItems for a project/portfolio checklist, metricItems for its
metric widgets, or summary,description,entityStatus for the basics. Use
entities_search to discover ids first.
Inputs: entity_id (required), entity_type (required), expand, fields.
tracker_entities_links_createLink Tracker entitiesB
Link a Tracker entity to another entity (e.g. relates, depends on).
Returns an acknowledgement on success.
Inputs: body (required), entity_id (required), entity_type (required).
tracker_entities_links_deleteDelete Tracker entity linkADestructive
Remove the link between a Tracker entity and another entity (irreversible).
right is the id of the entity on the other end (see entities_links_list). Returns
an acknowledgement on success.
Inputs: right (required), entity_id (required), entity_type (required).
tracker_entities_links_listList Tracker entity linksBRead-onlyIdempotent
An entity's links to other entities — the link type and the linked entity's summary + id.
Inputs: entity_id (required), entity_type (required), fields.
tracker_entities_permissions_getGet Tracker entity permissionsARead-onlyIdempotent
An entity's access settings — the READ/WRITE/GRANT ACL plus inheritance sources.
acl lists the users, groups and roles granted each level; permissionSources names the
parent entities this one inherits permissions from. Change them with
entities_permissions_update.
Inputs: entity_id (required), entity_type (required).
tracker_entities_permissions_get_directGet Tracker entity direct permissionsARead-onlyIdempotent
An entity's direct READ / WRITE / GRANT rights — the users, groups and roles holding each.
Unlike entities_permissions_get this leaves out inheritance (permissionSources).
Change the rights with entities_permissions_update_direct.
Inputs: entity_id (required), entity_type (required).
tracker_entities_permissions_updateSet Tracker entity permissionsAIdempotent
Change an entity's access rules; returns the resulting permission set.
The acl object of body accepts only grant / revoke
actions, each mapping an access level (READ/WRITE/GRANT) to users/groups/roles,
e.g. {"acl": {"grant": {"READ": {"users": ["8000000000000002"]}}}}. Read the current
ACL first with entities_permissions_get.
Inputs: body (required), entity_id (required), entity_type (required).
tracker_entities_permissions_update_directSet Tracker entity direct permissionsAIdempotent
Grant and revoke an entity's direct rights; the rest stay as they are.
grant and revoke each map READ / WRITE / GRANT to users (logins or ids),
groups (ids) and roles (AUTHOR, OWNER, CLIENT, FOLLOWER, MEMBER). Returns the
resulting rights. Read them first with entities_permissions_get_direct.
Inputs: body (required), entity_id (required), entity_type (required).
tracker_entities_reports_createCreate Tracker entity reportB
Request a report over Tracker entities (POST /entities/report/).
Returns the report entity.
Inputs: body (required).
tracker_entities_searchSearch Tracker entitiesARead-onlyIdempotent
Entities of a given type that match a name substring and a filter, sorted server-side.
Returns a flat list of entities. body.input matches part of the name, body.filter
is a field → value object (author, status, followers, …), body.orderBy with
body.orderAsc sorts, and body.rootOnly keeps the entities with no parent.
Inputs: entity_type (required), body, fields.
tracker_entities_updateEdit Tracker entityAIdempotent
Edit a Tracker entity; only the fields keys present in body are changed.
Returns the updated entity.
Inputs: body (required), entity_id (required), entity_type (required), expand, +1 more.
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.
Inputs: body (required), entity_type (required).
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.
Inputs: body (required).
tracker_fields_categories_updateEdit Tracker field categoryAIdempotent
Edit a field category; only the fields set in body are changed.
Pass version to guard against concurrent edits (optimistic locking).
Inputs: body (required), category_id (required), version.
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).
Inputs: body (required).
tracker_fields_getGet Tracker fieldARead-onlyIdempotent
Parameters of a single issue field.
They include its value schema, read-only flag, allowed options and category. Use this when you
already know the field id; use fields_list to enumerate every field in the organisation.
Inputs: field_id (required).
tracker_fields_listList Tracker global fieldsARead-onlyIdempotent
All global (organisation-wide) issue fields, both standard and custom.
Each field carries its value schema, category and provider metadata. Use this to discover
which field keys exist before filtering or reading issues; use fields_get when you
already know one field id.
Inputs: no named parameters.
tracker_fields_updateEdit Tracker fieldAIdempotent
Edit an org-global issue field; only the fields set in body are changed.
Pass version to guard against concurrent edits (optimistic locking). Returns the
updated field definition.
Inputs: body (required), field_id (required), version.
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.
Inputs: body (required).
tracker_filters_deleteDelete Tracker filterADestructive
Permanently delete a saved issue filter (irreversible).
Returns an acknowledgement on success.
Inputs: filter_id (required).
tracker_filters_getGet Tracker filterARead-onlyIdempotent
Parameters of a single saved issue filter.
They include its stored conditions, query-language string, owner, favourite flag and access
permissions. Use this to inspect a filter a user references by id; the resulting conditions
can then feed an issues_search query.
Inputs: filter_id (required).
tracker_filters_updateEdit Tracker filterAIdempotent
Edit a saved issue filter; only the fields set in body are changed.
Get filter_id from filters_get / the Tracker UI. Returns the updated filter.
Inputs: body (required), filter_id (required).
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.
Inputs: body (required).
tracker_gaps_deleteDelete Tracker employee absencesADestructive
Delete employee absences by id (irreversible); ids the API does not know are ignored.
Needs Tracker administrator rights. Returns an acknowledgement.
Inputs: gap_ids (required).
tracker_gaps_searchSearch Tracker employee absencesARead-onlyIdempotent
The absences (vacation, illness, trips, duty, …) of the given users that overlap a window.
A read done via POST; needs Tracker administrator rights. Every requested user appears,
with an empty gaps list when they are not absent.
Inputs: users (required), limit, date_to, date_from.
tracker_issues_countCount Tracker issuesARead-onlyIdempotent
Count of issues matching a query-language string or a filter.
body.query is a TQL string, body.filter a field → value object; an empty body
counts every issue the caller can see. E.g.
{"body": {"filter": {"queue": "QUEUE", "status": "open"}}}.
Inputs: body (required).
tracker_issues_createCreate Tracker issueB
Create a Tracker issue; returns the new issue with its key.
Inputs: body (required), notify.
tracker_issues_getGet Tracker issueCRead-onlyIdempotent
A single Tracker issue by key.
Inputs: issue_key (required), expand, fields.
tracker_issues_importImport Tracker issueA
Import an issue preserving its original history (admin-only back-fill).
Returns the imported issue.
Inputs: body (required).
tracker_issues_listList Tracker issuesARead-onlyIdempotent
Issues matching the supplied filters (omitted filters dropped), auto-paginated.
Returns at most limit issues; exactly limit back means more may match — narrow the
filters or raise limit.
Inputs: epic, limit, queue, status, +2 more.
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.
Inputs: queue (required), issue_key (required), expand, notify, +3 more.
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.
Inputs: body (required), notify.
tracker_issues_scroll_clearClear Tracker search scrollAIdempotent
Release the server resources of a scrolled issue search (harmless housekeeping).
body maps each X-Scroll-Id to its X-Scroll-Token from a scrolled
issues.search response. Returns an acknowledgement on success.
Inputs: body (required).
tracker_issues_searchSearch Tracker issuesARead-onlyIdempotent
Issues matching a query-language string or a filter, auto-paginated.
body.query is a TQL string, body.filter a field → value object. Returns at most
limit issues; exactly limit back means more may match — refine the search or raise
limit. E.g. {"body": {"query": "Queue: QUEUE Status: open"}} or
{"body": {"filter": {"queue": "QUEUE", "assignee": "ann"}}}.
Inputs: body (required), limit, expand, per_scroll, +2 more.
tracker_issues_suggestSuggest Tracker issues by titleARead-onlyIdempotent
Typeahead over visible issues — issues whose summary contains text.
A lightweight title match; for full TQL search use issues_search.
Inputs: text (required), full, embed, queue, +2 more.
tracker_issues_transition_bulkBulk-transition Tracker issuesA
Start an async bulk status transition over many Tracker issues; returns the operation.
Poll with bulk_get.
Inputs: body (required), notify.
tracker_issues_updateUpdate Tracker issueAIdempotent
Update fields of a Tracker issue; only the keys present in body are changed.
Status is NOT changed here — use transitions_execute. Returns the updated issue.
Inputs: body (required), issue_key (required).
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.
Inputs: body (required), notify.
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.
Inputs: body (required).
tracker_issuetypes_listList Tracker issue typesARead-onlyIdempotent
All available issue types (e.g. task, bug, epic).
Inputs: no named parameters.
tracker_issuetypes_updateEdit Tracker issue typeAIdempotent
Edit an org-global issue type; only the fields set in body are changed.
issue_type_id is the numeric id (not the key). Pass version to guard against
concurrent edits (optimistic locking).
Inputs: body (required), issue_type_id (required), version.
tracker_links_createLink Tracker issuesB
Link a Tracker issue to another issue; returns the created link.
Inputs: body (required), issue_key (required).
tracker_links_deleteDelete Tracker issue linkADestructive
Remove a link between two Tracker issues (irreversible).
Get link_id from links_list. Returns an acknowledgement on success.
Inputs: link_id (required), issue_key (required).
tracker_links_importImport Tracker issue linkA
Import an issue link preserving its original creation metadata (admin-only).
Returns the imported link.
Inputs: body (required), issue_key (required).
tracker_links_listList Tracker issue linksBRead-onlyIdempotent
All links on a Tracker issue (linked issues, type, direction).
Inputs: issue_key (required).
tracker_links_list_filteredSearch Tracker issue linksARead-onlyIdempotent
Links of a Tracker issue filtered by type, paged and capped (a read done via POST).
Prefer this over links_list for issues with many links or when only some link types
or fields matter; it carries each link's author, dates, assignee and status.
Inputs: issue_key (required), limit, fields, link_types.
tracker_linktypes_listList Tracker link typesARead-onlyIdempotent
All available link types (e.g. relates, depends on, blocks).
Inputs: no named parameters.
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.
Inputs: body (required), queue_id (required).
tracker_localfields_getGet Tracker local fieldARead-onlyIdempotent
One local field's full definition (type, options, category) by queue and field key.
Returns the value schema, allowed-values provider and category of the field. Use
localfields_list first to discover the field_key values available in a queue.
Inputs: queue_id (required), field_key (required).
tracker_localfields_listList Tracker local fieldsARead-onlyIdempotent
Custom fields scoped to one queue (its local fields), as a flat list.
Each item's key is the field key you pass to localfields_get; field_schema
describes the value type. Local fields differ from global fields (fields_list) in that
they exist only inside the given queue. Pass a key from queues_list as queue_id.
Inputs: queue_id (required).
tracker_localfields_updateEdit Tracker local fieldAIdempotent
Edit a queue-local field; only the fields set in body are changed.
Get field_key from localfields_list. Returns the updated field definition.
Inputs: body (required), queue_id (required), field_key (required).
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.
Inputs: body (required), queue_id (required).
tracker_macros_deleteDelete Tracker queue macroADestructive
Permanently delete a macro from a queue (irreversible).
Returns an acknowledgement on success.
Inputs: macro_id (required), queue_id (required).
tracker_macros_getGet Tracker queue macroARead-onlyIdempotent
One queue macro by id — its comment body and the field updates it applies.
Sibling macros_list enumerates every macro in the queue; pass one of its id values
here.
Inputs: macro_id (required), queue_id (required).
tracker_macros_listList Tracker queue macrosARead-onlyIdempotent
Every macro configured on a queue — each a canned comment plus field updates.
Each item's id is what you pass to macros_get for the full body and issueUpdate
rows.
Inputs: queue_id (required).
tracker_macros_updateEdit Tracker queue macroAIdempotent
Edit a queue macro; only the fields set in body are changed.
Get macro_id from macros_list. Returns the updated macro.
Inputs: body (required), macro_id (required), queue_id (required).
tracker_me_getGet current Tracker userARead-onlyIdempotent
The authenticated Yandex Tracker user (a safe auth probe).
Inputs: no named parameters.
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.
Inputs: body (required).
tracker_priorities_listList Tracker prioritiesBRead-onlyIdempotent
All available issue priorities in the organisation.
Inputs: localized.
tracker_priorities_updateEdit Tracker priorityAIdempotent
Edit an issue priority; only the fields set in body are changed.
priority_id is the numeric id (not the key). Pass version to guard against
concurrent edits (optimistic locking).
Inputs: body (required), priority_id (required), version.
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.
Inputs: body (required).
tracker_projects_deleteDelete Tracker projectBDestructive
Delete a project (irreversible). Returns an acknowledgement.
Inputs: project_id (required).
tracker_projects_getGet Tracker projectARead-onlyIdempotent
One project: name, lead, stage, dates and version (needed to edit it).
Inputs: project_id (required), expand.
tracker_projects_listList Tracker projectsARead-onlyIdempotent
Every project of the organization (the legacy Projects API).
entities_search is the newer way to find projects and portfolios.
Inputs: expand.
tracker_projects_queues_listList queues of a Tracker projectCRead-onlyIdempotent
The queues whose issues belong to a project.
Inputs: project_id (required), expand.
tracker_projects_updateEdit Tracker projectAIdempotent
Edit a project; queues is required on every edit, other fields change when set.
Returns the project with its incremented version.
Inputs: body (required), version (required), project_id (required), expand.
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.
Inputs: body (required).
tracker_queues_deleteDelete Tracker queueADestructive
Delete a Tracker queue WITH ALL ITS ISSUES (recoverable via queues_restore).
The queue moves to the recycle bin and can be restored for a limited time. Returns an acknowledgement on success.
Inputs: queue_id (required).
tracker_queues_fields_listList Tracker queue required fieldsARead-onlyIdempotent
The queue's required/local fields with their schema, options and display order.
Use this to learn which fields an issue in the queue expects (and whether each is required) before creating or updating issues there.
Inputs: queue_id (required).
tracker_queues_getGet Tracker queueARead-onlyIdempotent
One queue's settings and configuration by key or id.
Returns the queue's owner, default type/priority, and — when expand is set — its issue
types, versions, team, workflows and per-type resolution config. Sibling queues_list
enumerates every queue; pass one of its key values here.
Inputs: queue_id (required), expand.
tracker_queues_group_permissions_getGet a group's rights in a Tracker queueBRead-onlyIdempotent
What one group may do in a queue (create, read, write, grant, deny).
Inputs: group_id (required), queue_id (required).
tracker_queues_listList Tracker queuesARead-onlyIdempotent
Every queue the caller can see, auto-paginated over the API's page/perPage pages.
Capped at the configured item cap unless limit is given. Each item's key is the
queue key (e.g. TEST) you pass to queues_get and use as an issue prefix (TEST-123). Use
queues_get for a single queue's full configuration (types, workflows, resolutions).
Inputs: limit, expand.
tracker_queues_permissions_updateSet Tracker queue permissionsAIdempotent
Replace access rules on a Tracker queue (grant/revoke read/write/create/grant rights).
Each right block takes users/groups/roles arrays; omitted blocks stay
unchanged. Returns the resulting permission set. A removal is not always the inverse of an
addition: taking a user out of read took it out of write too (seen once,
2026-10-06), so read the returned set after a removal. Adding a member that is there
already changes nothing.
Inputs: body (required), queue_id (required).
tracker_queues_restoreRestore Tracker queueA
Restore a previously deleted Tracker queue (and its issues) from the recycle bin.
Returns the restored queue.
Inputs: queue_id (required).
tracker_queues_tags_deleteRemove Tracker queue tagADestructive
Remove a tag from EVERY issue of a queue (irreversible; the tag disappears queue-wide).
body is {"tag": "<name>"} — pick the name from queues_tags_list. Returns an
acknowledgement on success.
Inputs: body (required), queue_id (required).
tracker_queues_tags_listList Tracker queue tagsARead-onlyIdempotent
Every tag name that has been added to the queue, as a flat string array.
These are the tags selectable on the queue's issues (the tags field). Remove one
everywhere with queues_tags_delete.
Inputs: queue_id (required).
tracker_queues_user_permissions_getGet a user's rights in a Tracker queueARead-onlyIdempotent
What one user may do in a queue (create, read, write, grant, deny) and why.
Each right lists who grants it: the user personally, a group or a role. To change rights
use queues_permissions_update.
Inputs: user_id (required), queue_id (required).
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.
Inputs: body (required).
tracker_queues_versions_deleteDelete Tracker queue versionBDestructive
Permanently delete a queue version (irreversible). Returns an acknowledgement.
Inputs: version_id (required).
tracker_queues_versions_getGet Tracker queue versionBRead-onlyIdempotent
One queue version: name, description, dates and its released/archived flags.
Inputs: version_id (required), fields.
tracker_queues_versions_listList Tracker queue versionsARead-onlyIdempotent
The queue's versions — release milestones issues can be assigned to.
Each item carries the version's name, date range and released/archived flags. Create one
with queues_versions_create.
Inputs: queue_id (required).
tracker_queues_versions_updateEdit Tracker queue versionBIdempotent
Edit a queue version; only the fields set in body change. Returns the version.
Inputs: body (required), version_id (required), fields.
tracker_remotelinks_createCreate Tracker issue remote linkA
Link a Tracker issue to an object in an external application; returns the created link.
Get the application id (origin) from applications_list. Pass backlink=true
to also create the mirror link in the external app.
Inputs: body (required), issue_key (required), backlink.
tracker_remotelinks_deleteDelete Tracker issue remote linkADestructive
Remove a remote (external-application) link from a Tracker issue (irreversible).
Get link_id from remotelinks_list. Returns an acknowledgement on success.
Inputs: link_id (required), issue_key (required).
tracker_remotelinks_listList Tracker issue remote linksARead-onlyIdempotent
Links from a Tracker issue to objects in external applications (Bitbucket, etc.).
Each entry carries the link type, direction, and the external object's key plus its owning
application. This is the external link list — for issue-to-issue links use
links_list.
Inputs: issue_key (required).
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.
Inputs: body (required).
tracker_resolutions_listList Tracker resolutionsARead-onlyIdempotent
Every issue resolution configured in the organisation.
A resolution is the close-out result such as fixed/duplicate/won't-fix. Use this to resolve
or validate a resolution key when reading a closed issue or filtering; see statuses_list
for workflow stages, not close-out reasons.
Inputs: no named parameters.
tracker_resolutions_updateEdit Tracker resolutionAIdempotent
Edit an issue resolution; only the fields set in body are changed.
resolution_id is the numeric id (not the key). Pass version to guard against
concurrent edits (optimistic locking).
Inputs: body (required), resolution_id (required), version.
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.
Inputs: sprint_id (required), version.
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.
Inputs: body (required).
tracker_sprints_deleteDelete Tracker sprintADestructive
Permanently delete a sprint (irreversible; its issues are not affected).
Returns an acknowledgement on success.
Inputs: sprint_id (required).
tracker_sprints_getGet Tracker sprintARead-onlyIdempotent
Look up a single sprint by its numeric id.
The sprint includes its status, planned start/end dates, actual start/end datetimes and parent
board. Use this when you already know the sprint id; use sprints_list to enumerate all
sprints on a board.
Inputs: sprint_id (required).
tracker_sprints_listList Tracker board sprintsARead-onlyIdempotent
Every sprint defined on the given agile board, in the order Tracker returns them.
Each sprint carries its status, planned dates and parent board. Use this to enumerate a
board's sprints; use sprints_get when you already know a sprint id, and boards_get for
the board itself.
Inputs: board_id (required).
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.
Inputs: sprint_id (required), version.
tracker_sprints_updateEdit Tracker sprintAIdempotent
Edit a sprint; only the fields set in body (name, dates) are changed.
Get sprint_id from sprints_list. Pass version (the sprint's current version,
from sprints_get) — the API requires it for optimistic locking and answers 428 without
one. Returns the updated sprint.
Inputs: body (required), sprint_id (required), version.
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).
Inputs: body (required).
tracker_statuses_listList Tracker statusesARead-onlyIdempotent
Every issue status configured in the organisation's workflows.
Each status has a key, a name and a type such as new/inProgress/done. Use this to resolve or
validate a status key before filtering or transitioning issues; see resolutions_list for
close-out results and priorities_list for priorities.
Inputs: no named parameters.
tracker_statuses_updateEdit Tracker statusAIdempotent
Edit an issue status; only the fields set in body are changed.
status_id is the numeric id (not the key). Pass version to guard against concurrent
edits (optimistic locking).
Inputs: body (required), status_id (required), version.
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.
Inputs: body (required), issue_key (required), transition_id (required).
tracker_transitions_listList Tracker issue transitionsCRead-onlyIdempotent
Available workflow transitions for a Tracker issue.
Inputs: issue_key (required).
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.
Inputs: body (required), queue_id (required).
tracker_triggers_getGet Tracker queue triggerARead-onlyIdempotent
One queue trigger by id — its actions, firing conditions, order and active flag.
Triggers run actions on an issue when their conditions match. The webhook-action run log is
triggers_webhook_log_list.
Inputs: queue_id (required), trigger_id (required).
tracker_triggers_listList Tracker queue triggersARead-onlyIdempotent
Every trigger of a queue, ascending by id: name, actions, conditions and active flag.
Auto-paginated and capped at the configured item cap unless limit is given. Use
triggers_get for one trigger by id.
Inputs: queue_id (required), limit.
tracker_triggers_updateEdit Tracker queue triggerAIdempotent
Edit a queue trigger; only the fields set in body are changed.
Get trigger_id from triggers_get / the queue settings. Pass version to guard
against concurrent edits (optimistic locking).
Inputs: body (required), queue_id (required), trigger_id (required), version.
tracker_triggers_webhook_log_listList Tracker trigger webhook logsARead-onlyIdempotent
The execution log of a trigger's HTTP-request (Webhook) action, newest first.
Each record holds the outbound request and received response for one run. Only Webhook actions produce these; a trigger with no HTTP action returns an empty list.
Inputs: queue_id (required), trigger_id (required), limit, date_to, +2 more.
tracker_users_getGet Tracker userARead-onlyIdempotent
Look up a single organisation user account by login or uid.
The account includes name, email and licence/dismissal status. Use this when you already know
one user; use users_list to browse or enumerate the whole directory. Pass
expand="groups" to include the user's groups.
Inputs: login_or_id (required), expand.
tracker_users_listList Tracker usersARead-onlyIdempotent
All users registered in the organisation, sorted by ascending uid.
Auto-paginated via the relative id-cursor. Capped at the configured item cap unless limit
is given; use users_get instead when you already know the specific login or uid.
Inputs: limit, expand.
tracker_workflows_actions_updateEdit Tracker workflow actionAIdempotent
Edit one action (transition) of a workflow step; only the fields set in body change.
Returns the whole workflow with its incremented version.
Inputs: body (required), status (required), version (required), action_id (required), +1 more.
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.
Inputs: body (required).
tracker_workflows_deleteDelete Tracker workflowBDestructive
Delete a workflow (irreversible). Returns an acknowledgement.
Inputs: workflow_id (required).
tracker_workflows_getGet Tracker workflowARead-onlyIdempotent
One workflow with its steps, initial action, queue binding and version.
A step is a status with the transitions leaving it; version is needed to edit the workflow.
Inputs: workflow_id (required).
tracker_workflows_listList Tracker workflowsARead-onlyIdempotent
Every workflow of the organization (deleted ones excluded) with its steps and actions.
A workflow is the status graph an issue type follows. Use workflows_get for one by id
and workflows_list_for_queue to see which workflow each issue type of a queue uses.
Inputs: no named parameters.
tracker_workflows_list_for_queueList workflows of a Tracker queueBRead-onlyIdempotent
The workflows a queue uses: a map from workflow id to the issue types that follow it.
Inputs: queue_id (required).
tracker_workflows_updateEdit Tracker workflowAIdempotent
Edit a workflow.
Only the fields set in body change, and a given steps list replaces the whole step
list. Returns the workflow with its incremented version.
Inputs: body (required), version (required), workflow_id (required).
tracker_worklog_createAdd Tracker worklog recordB
Log spent time on a Tracker issue; returns the created worklog record.
Inputs: body (required), issue_key (required).
tracker_worklog_deleteDelete Tracker worklog recordADestructive
Permanently delete a worklog record from a Tracker issue (irreversible).
Get record_id from worklog_list. Returns an acknowledgement on success.
Inputs: issue_key (required), record_id (required).
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.
Inputs: body (required), issue_key (required).
tracker_worklog_listList Tracker worklogARead-onlyIdempotent
All time-tracking entries logged against a single Tracker issue.
Auto-paginated via the relative id-cursor. Capped at the configured item cap unless limit
is given.
Scoped to one issue by issue_key. To search worklog across the whole org (by author and/or a
creation-time range) use worklog_search instead.
Inputs: issue_key (required), limit.
tracker_worklog_list_globalList Tracker org-wide worklogARead-onlyIdempotent
Org-wide worklog entries via GET /worklog query filters (author, creation time).
A lighter sibling of worklog_search; every filter is optional.
Inputs: created_by, created_to, created_from.
tracker_worklog_searchSearch Tracker worklogARead-onlyIdempotent
Org-wide worklog entries filtered by author and/or a creation-time range.
Unlike worklog_list (one issue), this searches every issue's worklog. body.createdBy
scopes to a user and body.createdAt to a time window; both are optional. E.g.
{"body": {"createdBy": "ann", "createdAt": {"from": "2026-01-01T00:00:00"}}}.
Inputs: body (required).
tracker_worklog_updateEdit Tracker worklog recordAIdempotent
Edit a worklog record on a Tracker issue (duration and/or comment).
Get record_id from worklog_list. Returns the updated record.
Inputs: body (required), issue_key (required), record_id (required).
wiki_access_clearClear Wiki page accessesADestructive
Revoke every personal access on a wiki page except the owner's.
Everyone but the owner falls back to the page's access policy. Irreversible: the revoked entries are not kept.
Inputs: page_id (required), prevent_selflock.
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".
Inputs: body (required), page_id (required).
wiki_access_deleteRevoke Wiki page accessADestructive
Revoke one access entry on a wiki page — the holder loses that grant at once.
The page owner's own entry cannot be revoked.
Inputs: page_id (required), access_id (required), prevent_selflock.
wiki_access_updateUpdate Wiki page accessAIdempotent
Change the role or reach of one access entry on a wiki page.
The page owner's own entry cannot be changed.
Inputs: body (required), page_id (required), access_id (required), prevent_selflock.
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.
Inputs: page_id (required), session_ids (required).
wiki_attachments_deleteDelete Wiki attachmentADestructive
Delete an attachment from a wiki page — irreversible (no recovery token).
The API answers 204 No Content; a typed acknowledgement is returned instead. Find
file_id with attachments_list and double-check it before calling.
Inputs: file_id (required), page_id (required).
wiki_attachments_getGet Wiki attachmentARead-onlyIdempotent
Metadata of one attachment (GET /pages/{id}/attachments/{file_id}).
Name, size, MIME type, download URL, whether a preview exists and the virus-check status.
Yandex does not document this operation (it is in the live OpenAPI only) and may change it.
Fetching the bytes (download, preview) is CLI/SDK-only.
Inputs: file_id (required), page_id (required).
wiki_attachments_listList Wiki attachmentsARead-onlyIdempotent
Attachments (name, size, mime type) on a page id, auto-paginated (drains next_cursor).
Capped at the configured item cap unless limit is given. This is the list surface;
downloading an attachment's bytes is CLI/SDK-only (binary blobs are not an MCP payload).
Inputs: page_id (required), limit, order_by, order_direction.
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.
Inputs: data (required), page_id (required), file_name (required).
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.
Inputs: body (required), page_id (required).
wiki_comments_deleteDelete Wiki commentADestructive
Delete a comment from a wiki page — irreversible (no recovery token).
Returns the page's remaining comments_count. Verify the target with
comments_list / comments_thread_list first: deleting a parent orphans its
replies' threading.
Inputs: page_id (required), comment_id (required).
wiki_comments_listList Wiki commentsARead-onlyIdempotent
Comments on a page id, auto-paginated (drains the next_cursor internally).
Capped at the configured item cap unless limit is given. Pair with
pages_get_meta (its attributes.comments_count tells you how many exist).
Inputs: page_id (required), limit, order_by, status_filter, +1 more.
wiki_comments_thread_getGet Wiki comment thread from the serverARead-onlyIdempotent
The thread of a comment as the Wiki server returns it — an empty list for every real thread.
Checked live on 2026-10-02: the server's /thread endpoint has no replies to give, for a
root comment or a reply, plain or inline. Use comments_thread_list, which rebuilds the
thread from the page's comment list.
Inputs: page_id (required), comment_id (required), limit.
wiki_comments_thread_listList Wiki comment threadARead-onlyIdempotent
A comment and its replies, reconstructed from the page's comment list.
The Wiki /thread endpoint (comments_thread_get) is dead (returns no replies), so this
fetches every comment on the page and chains parent_id from the target: the comment comes
first, then its descendants in depth-first order. Capped at the configured item cap unless
limit is given. Use comments_list first to discover a root comment id, then this to
read its thread.
Inputs: page_id (required), comment_id (required), limit.
wiki_grids_cells_updateUpdate Wiki grid cellsAIdempotent
Set the value of individual grid cells (addressed by row id + column slug).
Repeating the same call sets the same values (idempotent). Returns the updated cells
plus the grid's new revision.
Inputs: body (required), grid_id (required).
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.
Inputs: body (required), grid_id (required).
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.
Inputs: body (required), grid_id (required).
wiki_grids_columns_deleteRemove Wiki grid columnsADestructive
Delete columns from a grid by slug — irreversible (every cell in them is lost).
A rare DELETE-with-body: slugs and revision travel in the JSON body. Returns the grid's
new revision.
Inputs: body (required), grid_id (required).
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.
Inputs: body (required), grid_id (required).
wiki_grids_columns_suggestSuggest Wiki grid column slugARead-onlyIdempotent
Check whether a column slug is free in a grid and get free alternatives (read-only).
The call is a POST but changes nothing. Yandex does not document this operation (it is in the live OpenAPI only) and may change it.
Inputs: body (required), grid_id (required).
wiki_grids_columns_updateUpdate Wiki grid columnAIdempotent
Edit a grid column in place: only the fields sent change; its type and slug stay.
Repeating the same call leaves the same column (idempotent). revision is accepted but not
enforced, and every call moves the grid's revision on. Returns the grid's new revision and
the column as saved. Yandex does not document this operation (it is in the
live OpenAPI only) and may change it.
Inputs: body (required), grid_id (required), column_slug (required).
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.
Inputs: body (required).
wiki_grids_deleteDelete Wiki gridADestructive
Delete a grid — irreversible (grids have NO recovery token, unlike pages).
Verify the target with grids_get first. The API answers 204 No Content; the
result is a typed acknowledgement.
Inputs: grid_id (required).
wiki_grids_getGet Wiki gridARead-onlyIdempotent
A single dynamic table (grid) by its UUID, with structure, rows and revision.
Grids are the modern dynamic tables attached to a page; find a grid's id with
pages_grids_list. Use row_filter/only_cols/only_rows/sort to narrow large
grids server-side, and fields=attributes,user_permissions for extra blocks. The returned
revision is what any subsequent write must send back.
Inputs: grid_id (required), sort, fields, revision, +3 more.
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.
Inputs: body (required), grid_id (required).
wiki_grids_rows_deleteRemove Wiki grid rowsADestructive
Delete rows from a grid by id — irreversible.
A rare DELETE-with-body: ids and revision travel in the JSON body. Find row ids with
grids_get. Returns the grid's new revision.
Inputs: body (required), grid_id (required).
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.
Inputs: body (required), grid_id (required).
wiki_grids_rows_updateUpdate Wiki grid rowAIdempotent
Pin or colour one grid row (cell values are set by grids_cells_update).
Repeating the same call leaves the same row (idempotent). The reply is a bare acknowledgement
without the new revision (read it with grids_get); revision is accepted but not
enforced. Yandex does not document this operation (it is in the live OpenAPI only) and may
change it.
Inputs: body (required), row_id (required), grid_id (required).
wiki_grids_updateUpdate Wiki gridAIdempotent
Rename or re-sort a grid (POST-not-PATCH quirk handled by the SDK).
body.revision must match the grid's current revision (read it off grids_get);
a mismatch fails the write. Returns the grid's new revision.
Inputs: body (required), grid_id (required).
wiki_me_getGet current Wiki userARead-onlyIdempotent
The authenticated Yandex Wiki user (a safe auth probe).
Inputs: no named parameters.
wiki_operations_clone_getGet Wiki page-clone statusARead-onlyIdempotent
Status of an async page-clone operation — poll it until it finishes.
pages clone (a CLI/SDK write) returns an operation.id; pass it here and re-read until
status is success or failed. On success the result.page names the clone.
The sibling operations_clone_inline_grid_get polls inline-grid clones instead.
Inputs: task_id (required).
wiki_operations_clone_inline_grid_getGet Wiki grid-clone statusARead-onlyIdempotent
Status of an async inline-grid-clone operation — poll it until it finishes.
grids clone (a CLI/SDK write) returns an operation.id; pass it here and re-read until
status is success or failed. On success the result.grid_id names the copy.
The sibling operations_clone_get polls page clones instead.
Inputs: task_id (required).
wiki_operations_move_getGet Wiki page-move statusARead-onlyIdempotent
Status of an async page-move operation — poll it until it finishes.
pages_move returns an operation.id; pass it here and re-read until status is
success or failed. On success the result.page_count says how many pages moved.
This operation is undocumented by Yandex (it is in the live OpenAPI only) and may change.
Inputs: task_id (required).
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.
Inputs: body (required), page_id (required), fields, is_silent.
wiki_pages_backlinks_listList Wiki page backlinksARead-onlyIdempotent
Refs (id and slug) of the pages that link to a page (GET /pages/{id}/backlinks).
Auto-paginated. Yandex does not document this operation (it is in the live OpenAPI only) and may change it.
Inputs: page_id (required), limit, show_all, for_cluster.
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.
Inputs: body (required), page_id (required).
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"}}.
Inputs: body (required), fields, is_silent.
wiki_pages_deleteDelete Wiki pageADestructive
Delete a wiki page by numeric id (DELETE /pages/{id}).
KEEP the returned recovery_token — it is the only handle to undo the delete
(redeem it with recovery_recover). Deleting removes the page's descendants'
anchor too, so double-check the id (pages_get_by_id) before calling.
Inputs: page_id (required), recursive.
wiki_pages_descendants_listList Wiki page descendantsARead-onlyIdempotent
All descendant refs under SLUG, auto-paginated.
Capped at the configured item cap unless limit is given; narrow by SLUG for large trees.
Inputs: slug (required), limit, show_all, actuality, +1 more.
wiki_pages_descendants_list_by_idList Wiki page descendants by idARead-onlyIdempotent
All descendant page refs under a numeric page id, auto-paginated.
The id-based twin of pages_descendants_list. Capped at the configured item cap
unless limit is given; each ref carries the child's numeric id and permanent
slug.
Inputs: page_id (required), limit, show_all, actuality, +1 more.
wiki_pages_getGet Wiki pageBRead-onlyIdempotent
The page's markdown body for SLUG.
Inputs: slug (required), revision_id, raise_on_redirect.
wiki_pages_get_by_idGet Wiki page by idARead-onlyIdempotent
A single page by its numeric id — the id-based twin of pages_get/pages_get_meta.
Use it when you hold a numeric page id (e.g. from a descendants listing or a write's
response) instead of the slug. fields follows the standard Wiki selector rules:
without it the response carries id/slug/title only; ask for content or
attributes explicitly.
Inputs: page_id (required), fields, revision_id, raise_on_redirect.
wiki_pages_get_metaGet Wiki page metadataCRead-onlyIdempotent
Page metadata for SLUG (attributes + owner).
Inputs: slug (required).
wiki_pages_grids_listList Wiki page gridsARead-onlyIdempotent
Dynamic tables (grids) attached to a page id, auto-paginated (drains next_cursor).
Each grid ref is a UUID id + title + created_at. Capped at the configured item cap
unless limit is given. Reads a page's numeric id — pair with
pages_get_meta / pages_descendants_list (whose refs carry the ids) to find one.
Inputs: page_id (required), limit, order_by, order_direction.
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.
Inputs: body (required), validate_only.
wiki_pages_revisions_listList Wiki page revisionsARead-onlyIdempotent
Saved revisions of a page, auto-paginated (GET /pages/{id}/revisions).
Each revision has an id (what GET /pages takes as revision_id), its author,
created_at, page_type and publication state. Yandex does not document this operation
(it is in the live OpenAPI only) and may change it.
Inputs: page_id (required), ids, limit.
wiki_pages_searchSearch WikiARead-onlyIdempotent
Full-text search over wiki pages and files; returns one page of hits.
Each hit has the page slug (read it with pages_get), title, a content
snippet, the type and modified_at. body.filters narrows the search by type,
authors, cluster (a page slug), created_at / modified_at (a window with both
from and to) and show_obsolete. For the next page pass next_cursor back as
body.cursor; stop at the first page without hits, because next_cursor stays set
after an empty page. A new page can take seconds to appear in the index. E.g.
{"body": {"query": "roadmap", "limit": 5}}.
Inputs: body (required).
wiki_pages_updateUpdate Wiki pageAIdempotent
Change a wiki page by numeric id: only the fields set in body change.
body.content REPLACES the whole text — to add to an existing page use pages_append
instead. The Wiki API updates via POST, not PATCH (PATCH returns 405); the SDK already
handles that quirk. Repeating the same call yields the same page state (idempotent). E.g.
{"page_id": 7, "body": {"title": "New name"}}.
Inputs: body (required), page_id (required), fields, is_silent, +1 more.
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.
Inputs: token (required).
wiki_resources_listList Wiki page resourcesARead-onlyIdempotent
A page's resources — attachments AND grids — as {type, item} envelopes, auto-paginated.
The unified single-pass listing over what attachments_list and pages_grids_list
expose separately (drains next_cursor internally). Capped at the configured item cap
unless limit is given; narrow with q (title) or types (attachment,grid).
Inputs: page_id (required), q, limit, types, +2 more.
wiki_uploadsessions_abortAbort Wiki upload sessionADestructive
Cancel one in-progress upload session, discarding its uploaded parts.
Frees the session's quota; the session cannot be resumed afterwards. Returns the
session with status: aborted.
Inputs: session_id (required).
wiki_uploadsessions_abort_allAbort all Wiki upload sessionsADestructive
Cancel EVERY active upload session of the caller, discarding all uploaded parts.
A quota-freeing sweep — use it when stale sessions block new uploads; prefer
uploadsessions_abort to cancel a single known session.
Inputs: no named parameters.
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.
Inputs: body (required).
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.
Inputs: session_id (required).
wiki_uploadsessions_getGet Wiki upload sessionARead-onlyIdempotent
Current state of a Wiki file upload session by its UUID (status, file name/size, storage).
Poll this to watch a session move not_started → in_progress → finished before the
file is attached to a page.
Inputs: session_id (required).
wiki_uploadsessions_parts_uploadUpload Wiki file partAIdempotent
Upload one file part to an open session — step 2 of the upload pipeline.
The base64 data is decoded and sent as raw application/octet-stream bytes.
Parts may be 5-16 MB except the last; a small file fits in a single part_number=1
call. Returns the session (poll status via uploadsessions_get).
Inputs: data (required), session_id (required), part_number (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 457 tools
Many tools overlap heavily: issue list/search/count/suggest, worklog list/search/global, wiki comment list/thread variants, multiple DataLens chart get/update/delete tools split by chart type, and direct vs inherited permission tools. Detailed descriptions often label siblings, but with 457 tools the boundaries blur and misselection is likely.
Most names follow a snake_case service_resource_action pattern, but there are notable deviations such as tracker_me_get, status_get, schema_get, tracker_bulk_issues_list versus tracker_issues_update_bulk, and inconsistent noun/verb ordering. The pattern is still mostly readable, but not uniformly applied.
457 tools is an extreme mismatch for any server, far beyond the 3-15 well-scoped range and well past the 25+ threshold. The surface spans Tracker, Wiki, Forms, and DataLens with many experimental and rarely used operations, making the set unwieldy.
Core CRUD coverage exists for many resources, but there are conspicuous gaps: dashboards have create and one widget tool but no list/get/delete, several org-global objects have no delete endpoint, and some binary download operations are CLI-only. Agents can work around some gaps, but notable dead ends remain.
Maintenance
Related MCP Connectors
Exposes FEDLIN's public security scanners as agent-callable tools over Streamable HTTP.
Host any HTTP API as MCP tools with a tamper-evident cross-agent settlement ledger.
Anonymous public tools for FlightSweeper. See the published agent boundary before use.
Operate smplkit from your agent: feature flags, config, logging, audit, and scheduled jobs.
Related MCP Servers
- FlicenseAqualityDmaintenanceExposes Yandex Tracker's REST API v3 as tools for LLM clients, enabling issue management and queue operations via natural language.21-
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to manage Yandex Tracker tasks with tools for creating, reading, updating, and transitioning issues via a Streamable HTTP endpoint.-
- AlicenseNot gradedqualityCmaintenanceExposes four stdio tools that let an agent research an application's documented interface, produce a validated single-use plan, and execute read-only operations against public HTTP JSON APIs, static HTML/JSON/text sources, and host-configured CLIs. Runs in-process with no listening port, accounts, or model dependency, returning bounded results while keeping inputs and outputs inside a host-enforced research-plan-execute lifecycle.MIT
- AlicenseNot gradedqualityBmaintenanceExposes 20 read/write tools that let IDE and agent users search the interface catalog, build and validate flow-model JSON, import OpenAPI specs, run ETL tasks, and plan or revoke service permissions on RestCloud-compatible integration platforms. Writes default to dry-run and every call is written to a desensitized jsonl audit trail.MIT