Skip to main content
Glama

ycli

Yandex 360 for people and for agents.

Tracker, Wiki and Forms from a command line, an MCP server and Python: one tool, and one name for each operation everywhere.

English · Русский

CI Coverage PyPI Python License Docs DeepWiki

  • A command line that scripts well. JSON when piped, ready for jq, --dry-run for every write, an exit code for each kind of failure.

  • An MCP server agents can trust. Every tool says whether it reads, writes or destroys; serve only reads, or a small everyday set.

  • A typed Python SDK. Pydantic models for every answer, and examples the test suite runs.

  • Careful with your data. A delete asks first, and your token goes only to Yandex's own hosts.

Documentation: ycli.savaznatnov.dev.

Install

uv tool install 'yandex-cli[mcp]'   # the ycli command, with the MCP server
uvx yandex-cli --help               # or run it once, without installing
pipx install 'yandex-cli[mcp]'      # or with pipx

The command is ycli (also yandex-cli). Then sign in: ycli auth login (how).

Writing Python? Add the SDK to your project: uv add yandex-cli.

Extra

Adds

Install

mcp

the MCP server, ycli mcp start

uv tool install 'yandex-cli[mcp]'

service-account

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

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

Connect your AI client

Every client gets the same MCP server, uvx --from 'yandex-cli[mcp]' ycli mcp start, and the same two variables.

Client

Fastest way

Claude Code

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

Claude Desktop

open the .mcpb bundle from the latest release

Cursor

one-click install

VS Code

one-click install

Windsurf (Devin Desktop)

config file

Zed

config file

Codex

config file

Gemini CLI

config file

opencode

config file

Any other MCP client

three values to copy

Also: a Docker image, ghcr.io/bim-ba/ycli (as a server or a plain CLI), pipelines, and the official MCP Registry entry io.github.bim-ba/ycli.

Something not working? If it does not work.

Related MCP server: Yandex Tracker MCP

Use it

Command line

ycli tracker issues get TRACKER-1                  # a table at a terminal
ycli tracker issues get TRACKER-1 | jq .summary    # JSON when piped
ycli -o yaml wiki pages get onboarding             # or pick: -o json | yaml | pretty | csv | markdown | ndjson | name
ycli tracker boards delete 7 --dry-run             # print the request a write would send
ycli tracker boards delete 7 --yes                 # a delete asks first; --yes answers
ycli api issues/TRACKER-1 --service tracker        # an endpoint ycli does not wrap

More: Script the CLI, Call an unwrapped endpoint, the CLI reference.

MCP server

ycli mcp start                     # every tool, reads and writes
ycli mcp start --read-only         # reads only
ycli mcp start --toolsets core     # about 40 everyday tools, for a client that caps the count
ycli mcp methods --toolsets core   # list the tool names without starting the server

More: Serve the MCP server, Self-host over HTTP for a team, the tool reference.

Python

from ycli.yandex.tracker.client import TrackerClient

tracker = TrackerClient(oauth_token="…", organization_id="…")
print(tracker.issues.get("TRACKER-1").summary)

More: the SDK reference.

Claude Code plugin

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

It adds the MCP server and five skills (yandex-360, yandex-360-tracker, yandex-360-wiki, yandex-360-forms, yandex-360-datalens) that teach an agent the commands and the API's quirks. Source: plugins/yandex-360/.

Configure

ycli auth login     # gets a token through Yandex ID, finds your organization, saves both to .env
ycli auth status    # whose token it is, and whether each service accepts it
ycli doctor         # something not working? every check in order, with the fix

ycli auth login needs a Yandex OAuth app of your own the first time: Authenticate walks you through it. ycli reads two variables, from the environment or a .env file:

YANDEX_ID_OAUTH_TOKEN=...        # a Yandex OAuth token with Tracker, Wiki and Forms access
YANDEX_ID_ORGANIZATION_ID=...    # your Yandex 360 organization id

Timeouts, retries, limits, logging and the exit codes are in the configuration reference.

Coverage

ycli wraps 468 operations across 88 resources of the Tracker, Wiki, Forms, and DataLens API. Every one is reachable from the Python SDK and the CLI, and 458 MCP tools serve them to agents (456 per service plus schema_get, status_get).

Legend. ✅ in CLI or MCP means the resource is reachable on that surface; MCP tools carry honest hints (reads are readOnlyHint, writes say whether they are destructive or idempotent), and ycli mcp start --read-only serves only the reads. Resource and operation names link to the official Yandex API reference. An operation has one of three states against what Yandex publishes. Covered (no mark): ycli sends every published parameter and reads every published field. Partial (◐): ycli wraps it and differs somewhere; the mark links to the row that says where and why. Not covered (○): Yandex publishes it and ycli does not wrap it; these are listed under each service. Wiki, Forms and DataLens are measured against their OpenAPI documents; Tracker publishes none, so its state is measured against the reference pages (operations, and query parameters where a page lists them). DataLens is in progress, wrapped section by section: the operations of a section ycli has not begun are pending, not missing. Generated from the code by scripts/gen_coverage.py; do not edit by hand.

Tracker

Issues & work items

Agile boards

Resource

Operations

CLI

MCP

boards

list · get · create · update · delete

✅

✅

sprints

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

✅

✅

columns

list · get · create · update · delete

✅

✅

Dictionaries

Resource

Operations

CLI

MCP

priorities

list · create · update

✅

✅

statuses

list · create · update

✅

✅

resolutions

list · create · update

✅

✅

issuetypes

list · create · update

✅

✅

linktypes

list

✅

✅

Fields, queues & structure

Automation & bulk

Entities, users & search

Not covered (2)

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

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

Wiki

Pages

Collaboration

Grids (dynamic tables)

Async & uploads

Identity

Resource

Operations

CLI

MCP

me

get

✅

✅

Forms

Surveys & questions

Responses & export

Integrations

Resource

Operations

CLI

MCP

hooks

list · get · create · update · delete

✅

✅

subscriptions

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

✅

✅

variables

list

✅

✅

notifications

list · get · status_get · restart · cancel · errors_list

✅

✅

Distribution

Resource

Operations

CLI

MCP

keysets

list · get · create · update · delete · download

✅

✅

filling

get · submit · suggest

✅

✅

Media

Resource

Operations

CLI

MCP

files

upload · verify · download · delete

✅

✅

images

upload · clone

✅

✅

Identity

Resource

Operations

CLI

MCP

me

get

✅

✅

DataLens

Organization

Resource

Operations

CLI

MCP

tenant

details_get

✅

✅

members

list

✅

✅

licensing

licenses_list · licenses_assign · limit_get · limit_set

✅

✅

Collections & workbooks

Entries

Data

Resource

Operations

CLI

MCP

connections

get · create · update · delete

✅

✅

datasets

get · create · update · delete · validate · data_get

✅

✅

Charts, dashboards, reports & pages

SQL

Resource

Operations

CLI

MCP

sqlqueries

get · create · update · delete · run

✅

✅

Cloud environments

Resource

Operations

CLI

MCP

cloudenvironments

list · get · create · update · delete

✅

✅

cloudenvironmentstorage

bucket_objects_list · bucket_object_metadata_get · bucket_download_url_create · bucket_upload_url_create

✅

✅

restcatalogs

list · create

✅

✅

lakehouseoperations

get

✅

✅

trinoclusters

list · get · create · delete · start · stop · catalog_create · catalog_delete · resource_presets_list · resource_preset_get

✅

✅

sparkclusters

list · get · create · delete · start · stop · resource_presets_list · resource_presets_get

✅

✅

sparkapplications

list · get · create · cancel · log_list

✅

✅

Embedding

Resource

Operations

CLI

MCP

embeds

list · create · update · delete

✅

✅

embeddingsecrets

get · list · create · delete

✅

✅

Not covered (9)

  • ○ POST /rpc/checkFavorites: new section published 2026-10, wrapping not decided

  • ○ POST /rpc/createFolder: the old placement model (folders); the organization has none to check it on (#394)

  • ○ POST /rpc/deleteFolder: the old placement model (folders); the organization has none to check it on (#394)

  • ○ POST /rpc/dlsSuggest: the old placement model (folders); the organization has none to check it on (#394)

  • ○ POST /rpc/getPermissions: the old placement model (folders); the organization has none to check it on (#394)

  • ○ POST /rpc/listDirectory: the old placement model (folders); the organization has none to check it on (#394)

  • ○ POST /rpc/listFavorites: new section published 2026-10, wrapping not decided

  • ○ POST /rpc/modifyPermissions: the old placement model (folders); the organization has none to check it on (#394)

  • ○ POST /rpc/moveFolderEntry: the old placement model (folders); the organization has none to check it on (#394)

Every resource and operation above deep-links to the Yandex API reference: 406 of 468 operations resolve to their own endpoint page and 20 to their resource's page. No public API reference exists yet for datalens.cloudenvironments, datalens.cloudenvironments.create, datalens.cloudenvironments.delete, datalens.cloudenvironments.get, datalens.cloudenvironments.list, datalens.cloudenvironments.update, datalens.cloudenvironmentstorage, datalens.cloudenvironmentstorage.bucket_download_url_create, datalens.cloudenvironmentstorage.bucket_object_metadata_get, datalens.cloudenvironmentstorage.bucket_objects_list, datalens.cloudenvironmentstorage.bucket_upload_url_create, datalens.lakehouseoperations, datalens.lakehouseoperations.get, datalens.restcatalogs, datalens.restcatalogs.create, datalens.restcatalogs.list, datalens.sparkapplications, datalens.sparkapplications.cancel, datalens.sparkapplications.create, datalens.sparkapplications.get, datalens.sparkapplications.list, datalens.sparkapplications.log_list, datalens.sparkclusters, datalens.sparkclusters.create, datalens.sparkclusters.delete, datalens.sparkclusters.get, datalens.sparkclusters.list, datalens.sparkclusters.resource_presets_get, datalens.sparkclusters.resource_presets_list, datalens.sparkclusters.start, datalens.sparkclusters.stop, datalens.sqlqueries, datalens.sqlqueries.create, datalens.sqlqueries.delete, datalens.sqlqueries.get, datalens.sqlqueries.run, datalens.sqlqueries.update, datalens.tenant, datalens.tenant.details_get, datalens.trinoclusters, datalens.trinoclusters.catalog_create, datalens.trinoclusters.catalog_delete, datalens.trinoclusters.create, datalens.trinoclusters.delete, datalens.trinoclusters.get, datalens.trinoclusters.list, datalens.trinoclusters.resource_preset_get, datalens.trinoclusters.resource_presets_list, datalens.trinoclusters.start, datalens.trinoclusters.stop, tracker.linktypes, tracker.linktypes.list, shown as plain text. See CONTRIBUTING.md for the intentional exclusions (UI-only endpoints with no public REST API) and per-method notes.

Against the published API

What ycli sends, replayed from its contract tests, compared with what Yandex publishes: the Wiki, Forms and DataLens OpenAPI documents and Tracker's API reference (prose, so only operations and the query parameters a page lists are compared). A request body is compared only where ycli has a typed model for it and the model is closed; the Bodies compared column says how many that is, so an empty list is not read as a match. The published side is the snapshot in scripts/api_snapshot/; a weekly job fetches it again and opens an issue when Yandex has changed it.

Service

Published

Wrapped

Not wrapped

Operations that differ

Bodies compared

Source

Tracker

190

188

0 (+2 on purpose)

0

—

API reference

Wiki

56

56

0

0

24 of 24

OpenAPI

Forms

84

84

0

8

26 of 30

OpenAPI

DataLens

143

134

0 (+9 on purpose)

0

131 of 131

OpenAPI

Not wrapped on purpose

Operation

Why

GET /boards

boards list reads the paginated GET /boards/_paginate

GET /users

users list reads the paginated GET /users/_relative

Sent by ycli, not published

ycli

Its request

entities.attachments_download

GET /attachments/{file_id}/{filename}

linktypes.list

GET /linktypes

Parameters and fields

Operation

ycli

Difference

Why it stays

POST /surveys

surveys.create

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

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

GET /surveys/{survey_id}

surveys.get

model fields that are not published: modified

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

PATCH /surveys/{survey_id}

surveys.update

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

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

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

subscriptions.create

body fields ycli sends that are not published: id

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

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

subscriptions.update

body fields ycli sends that are not published: id

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

POST /surveys/{survey_id}/questions

questions.create

body fields ycli sends that are not published: id

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

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

questions.delete

query parameters ycli sends that are not published: force

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

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

questions.update

body fields ycli sends that are not published: id

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

Not wrapped on purpose

Operation

Why

POST /rpc/checkFavorites

new section published 2026-10, wrapping not decided

POST /rpc/createFolder

the old placement model (folders); the organization has none to check it on (#394)

POST /rpc/deleteFolder

the old placement model (folders); the organization has none to check it on (#394)

POST /rpc/dlsSuggest

the old placement model (folders); the organization has none to check it on (#394)

POST /rpc/getPermissions

the old placement model (folders); the organization has none to check it on (#394)

POST /rpc/listDirectory

the old placement model (folders); the organization has none to check it on (#394)

POST /rpc/listFavorites

new section published 2026-10, wrapping not decided

POST /rpc/modifyPermissions

the old placement model (folders); the organization has none to check it on (#394)

POST /rpc/moveFolderEntry

the old placement model (folders); the organization has none to check it on (#394)

Development

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

The layout and the invariants that keep it regular are in ARCHITECTURE.md; CONTRIBUTING.md has the conventions and how to add an endpoint. Contributions are welcome.

License

MIT © 2026 Sava Znatnov

Available Tools

457 tools
datalens_audit_entries_updates_listList DataLens entries changed in a periodA
Read-onlyIdempotent

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

A deleted entry is listed too, with isDeleted.

Inputs: from_ (required), to, limit.

datalens_audit_entry_permissions_getGet a user's permissions on DataLens entriesB
Read-onlyIdempotent

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

Inputs: user_id (required), entry_ids (required).

datalens_charts_data_getRead the data of a DataLens chartA
Read-onlyIdempotent

The data a saved chart shows, as tables of columns and rows.

The chart runs with its saved settings. chartType says how it is built (wizard, ql, editor). A pivot table is not supported, and a chart whose source cannot be reached answers with an error. entries_list with the scope widget finds charts.

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

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

Inputs: chart_id (required).

datalens_charts_editor_getGet DataLens editor chartB
Read-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 chartA
Idempotent

Save a chart of the editor as given.

DataLens does not check a revision here: a save overwrites what was saved since you read it (measured).

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

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

Inputs: chart_id (required).

datalens_charts_ql_getGet DataLens QL chartB
Read-onlyIdempotent

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

Inputs: chart_id (required), branch, rev_id, workbook_id, +3 more.

datalens_charts_ql_updateUpdate DataLens QL chartA
Idempotent

Save a QL chart as given; the reply is what DataLens answers, as it came.

DataLens does not check a revision here: a save overwrites what was saved since you read it (measured).

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

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

The API has no way to bring it back, and a dashboard that shows it keeps naming its id (measured).

Inputs: chart_id (required).

datalens_charts_wizard_getGet DataLens wizard chartA
Read-onlyIdempotent

One chart built in the wizard: the datasets it reads and what it shows.

entry.data is what charts_wizard_update takes back; isFavorite and permissions come only when asked for. entries_list with the scope widget finds charts; its type says how a chart is built.

Inputs: chart_id (required), branch, rev_id, workbook_id, +3 more.

datalens_charts_wizard_updateUpdate DataLens wizard chartA
Idempotent

Save a chart of the wizard as given: read it, change it, send it back whole.

DataLens does not check a revision here: a save overwrites what was saved since you read it (measured).

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

Delete a cloud environment and return the operation that deletes it.

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

Inputs: id (required).

datalens_cloudenvironments_getGet DataLens cloud environmentA
Read-onlyIdempotent

One cloud environment: its cloud, its subnet, its status and its storage.

Experimental in the DataLens API and written from its document: not measured. An id nothing knows answers 403 Permission denied, not 404: it is not a lack of rights.

Inputs: id (required), include_permissions.

datalens_cloudenvironments_listList DataLens cloud environmentsA
Read-onlyIdempotent

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

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

Inputs: limit, filter, include_permissions.

datalens_cloudenvironmentstorage_bucket_download_url_createCreate a download link for a DataLens bucket objectA
Read-onlyIdempotent

A signed link to read one object of the bucket.

The link works for whoever holds it, for a time, and it comes in this tool's result: hand it to the person and do not repeat it. Experimental in the DataLens API and written from its document: not measured.

Inputs: path (required), cloud_environment_id (required).

datalens_cloudenvironmentstorage_bucket_object_metadata_getGet the metadata of a DataLens bucket objectA
Read-onlyIdempotent

The size of an object, in bytes as a string, and when it last changed.

Experimental in the DataLens API and written from its document: not measured. An environment nothing knows answers 403 Permission denied, not 404.

Inputs: path (required), cloud_environment_id (required).

datalens_cloudenvironmentstorage_bucket_objects_listList the objects of a DataLens storage bucketA
Read-onlyIdempotent

The paths of the objects in a cloud environment's storage bucket, auto-paginated.

Experimental in the DataLens API and written from its document: not measured. An environment nothing knows answers 403 Permission denied, not 404: it is not a lack of rights.

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

Change the fields given of a cloud environment and return the operation.

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

Inputs: id (required), name, storage, description, +1 more.

datalens_collections_access_bindings_listList the roles on a DataLens collectionB
Read-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 collectionC
Read-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 collectionA
Read-onlyIdempotent

What a collection holds: collections, workbooks and entries, auto-paginated.

Start here to find a workbook: list the root, then descend. Capped at the configured item cap unless limit is given.

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

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

Inputs: collection_id (required).

datalens_collections_delete_bulkDelete DataLens collectionsB
Destructive

Delete several collections with everything they hold.

Inputs: collection_ids (required).

datalens_collections_getGet DataLens collectionB
Read-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 idB
Read-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 permissionsB
Read-onlyIdempotent

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

Inputs: no named parameters.

datalens_collections_updateUpdate DataLens collectionB
Idempotent

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

Delete a connection; the datasets built on it lose their source.

The API has no way to bring it back, and a chart that reads through it keeps naming its id (measured).

Inputs: connection_id (required).

datalens_connections_getGet DataLens connectionA
Read-onlyIdempotent

One connection by id: its name, its kind and the settings of that kind.

The kind comes in db_type: the reply has no type, though creating one takes it.

A password or a token is never in the reply. workbooks_entries_list with the scope connection finds the connections of a workbook.

Inputs: connection_id (required), rev_id, workbook_id, binded_dataset_id.

datalens_connections_updateUpdate DataLens connectionB
Idempotent

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

Delete a dashboard.

Inputs: dashboard_id (required), lock_token.

datalens_dashboards_getGet DataLens dashboardA
Read-onlyIdempotent

One dashboard: its tabs and the charts, selectors and texts on them.

A real dashboard is large, 100 KB and more, which may be over what a client shows of a tool's reply: read a big one as a file (ycli datalens dashboards get <id> > dash.json). entry.data is what dashboards_update takes back.

Inputs: dashboard_id (required), branch, rev_id, workbook_id, +3 more.

datalens_dashboards_updateUpdate DataLens dashboardA
Idempotent

Save a dashboard as given: read it, change data, send it back whole.

DataLens does not check a revision here: a save overwrites what was saved since you read it (measured).

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

Rows of a dataset: the columns asked for, one page per call.

Columns are named by the guid of a field, not by its title: read them with datasets_get. For the next page give offset together with sort.

Inputs: columns (required), dataset_id (required), sort, limit, +4 more.

datalens_datasets_deleteDelete DataLens datasetA
Destructive

Delete a dataset; the charts built on it lose their data.

The API has no way to bring it back, and a chart built on it keeps naming its id (measured).

Inputs: dataset_id (required).

datalens_datasets_getGet DataLens datasetA
Read-onlyIdempotent

One dataset by id: its sources, their joins and its fields.

dataset.result_schema lists the fields with their guids, which datasets_data_get takes as columns. A source or a field of a kind this server does not know comes as it is.

Inputs: dataset_id (required), rev_id, workbook_id.

datalens_datasets_updateUpdate DataLens datasetA
Idempotent

Save a dataset as given: read it, change what it holds, send it back whole.

data.dataset replaces the content. Check a change first with datasets_validate. Read the dataset again after every save: content of an older revision is refused. The reply holds the content and the revisions; its id is null (measured).

Inputs: data (required), dataset_id (required), workbook_id.

datalens_datasets_validateValidate DataLens datasetA
Read-onlyIdempotent

Check a dataset, or changes to it, without saving anything.

The reply is the dataset as it would be, with code, message and dataset_errors. Give the content as last read: after a save, content of an older revision is refused.

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

Delete a key for embedding. Deleting again answers 404.

Inputs: embedding_secret_id (required).

datalens_embeddingsecrets_getGet DataLens key for embeddingA
Read-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 embeddingB
Read-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 embedA
Destructive

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

Inputs: embed_id (required).

datalens_embeds_listList DataLens embedsB
Read-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 embedA
Idempotent

Save an embed as given and return it.

The embed is replaced whole: read it with embeds_list and send back what is to stay; a list left out is saved empty.

Inputs: title (required), embed_id (required), settings (required), public_params_mode (required), +4 more.

datalens_entries_listFind DataLens entriesA
Read-onlyIdempotent

Entries across the whole organization: dashboards, charts, datasets, connections.

The API requires one of scope, scopes and ids. An entry the caller may not read comes with isLocked set and little else. Auto-paginated; capped at the configured item cap unless limit is given.

Inputs: ids, type, limit, scope, +10 more.

datalens_entries_permissions_getGet DataLens permissions on entriesA
Read-onlyIdempotent

What the caller may do with each entry, as a map by id.

An entry that does not exist gives error: "NOT_FOUND" under its id.

Inputs: entry_ids (required).

datalens_entries_relations_listList what DataLens entries use or are used byA
Read-onlyIdempotent

What entries use (a chart's dataset, a dataset's connection) or what uses them.

Use it before changing or deleting an entry, to see what depends on it. Auto-paginated.

Inputs: entry_ids (required), limit, scope, link_direction, +1 more.

datalens_entries_renameRename DataLens entryA
Idempotent

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

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

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

Delete an HTML page.

Inputs: entry_id (required).

datalens_htmlpages_getGet DataLens HTML pageA
Read-onlyIdempotent

One HTML page: where it lies and its revisions.

The reply has no HTML of the page; htmlpages_preview_url_get gives a link that shows it. entries_list with the scope artifact finds the pages.

Inputs: entry_id (required), branch, rev_id, include_favorite, +1 more.

datalens_htmlpages_preview_url_getGet a preview link of a DataLens HTML pageC
Read-onlyIdempotent

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

Inputs: entry_id (required), lang, theme, branch, +1 more.

datalens_htmlpages_updateUpdate DataLens HTML pageA
Idempotent

Save new HTML of a page, or make one of its revisions the current one.

mode save makes a new revision and leaves the public one; publish shows it to everyone. With revId, save copies that revision as the current draft.

Inputs: body (required).

datalens_lakehouseoperations_getGet DataLens Lakehouse operationA
Read-onlyIdempotent

How far an operation is: done or not, and then its error or its response.

Experimental in the DataLens API and written from its document: not measured. An id nothing knows answers 403 Permission denied, not 404: it is not a lack of rights.

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

The licences (seats) of the DataLens instance, auto-paginated.

Each says whose it is, its type (creator or viewer), whether it is active, and when its holder last signed in.

Inputs: limit, order, status, sort_by, +1 more.

datalens_licensing_limit_getGet DataLens licence limitA
Read-onlyIdempotent

How many licences the instance may hold: the limit in force and the one that takes over.

current carries the count of active licences; next is null when no change is set.

Inputs: no named parameters.

datalens_licensing_limit_setSet DataLens licence limitA
Idempotent

Set how many licences the instance may hold and return the limits.

The limit is the number of seats DataLens bills for: ask the person before calling. Written from the DataLens document and never called: not measured.

Inputs: value (required).

datalens_members_listList DataLens membersA
Read-onlyIdempotent

The users, groups and service accounts of the organization, auto-paginated.

The sub of a member is the subject id a role is given to: find it here before collections_access_bindings_update or workbooks_access_bindings_update. Capped at the configured item cap unless limit is given.

Inputs: limit, filter, search, tab_id, +1 more.

datalens_permissions_get_bulkGet DataLens permissions on many objectsA
Read-onlyIdempotent

What the caller may do with many entries, workbooks and collections, in one call.

Each of the three maps is keyed by id: an object the caller can see gives permissions, one that does not exist gives error: "NOT_FOUND".

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

Delete a report.

Inputs: entry_id (required).

datalens_reports_getGet DataLens reportA
Read-onlyIdempotent

One report: its slides and the charts and texts on them.

entry.data and entry.meta are what reports_update takes back. entries_list with the scope report finds reports. A report has no branch in the API: the read answers the saved version (measured).

Inputs: entry_id (required), rev_id, include_favorite, include_permissions.

datalens_reports_updateUpdate DataLens reportA
Idempotent

Save a report; it LOSES the layout of its slide elements and some settings.

DataLens does not check a revision here: a save overwrites what was saved since you read it (measured).

Measured (2026-10-06): DataLens drops them on a save through the API, without a word, though every value is sent. Ask the person before saving an existing report. Otherwise: read it, change data, send it back whole.

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

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

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

Inputs: limit, filter, sort_by, reverse_order, +2 more.

datalens_sharedentries_access_bindings_listList the roles on a DataLens shared entryA
Read-onlyIdempotent

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

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

Inputs: entry_id (required), limit, get_inherited_bindings.

datalens_sharedentries_access_bindings_updateChange the roles on a DataLens shared entryB

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

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

Inputs: deltas (required), entry_id (required).

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

One Spark application: its status, its times and what it runs.

Experimental in the DataLens API and written from its document: not measured. An id nothing knows answers 403 Permission denied, not 404.

Inputs: cluster_id (required), application_id (required).

datalens_sparkapplications_listList DataLens Spark applicationsB
Read-onlyIdempotent

The applications of a Spark cluster, auto-paginated.

Experimental in the DataLens API and written from its document: not measured. A cluster nothing knows answers 403 Permission denied, not 404: it is not a lack of rights.

Inputs: cluster_id (required), limit, filter.

datalens_sparkapplications_log_listRead the log of a DataLens Spark applicationB
Read-onlyIdempotent

One fragment of an application's log, and the token of the next one.

Give nextPageToken back as page_token to read on. Experimental in the DataLens API and written from its document: not measured.

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

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

Experimental API, not measured.

Inputs: id (required).

datalens_sparkclusters_getGet DataLens Spark clusterA
Read-onlyIdempotent

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

Inputs: id (required).

datalens_sparkclusters_listList DataLens Spark clustersA
Read-onlyIdempotent

The Spark clusters of DataLens, auto-paginated.

Experimental API, not measured: ycli follows its document. Capped at the configured item cap unless limit is given.

Inputs: limit, filter, collection_id.

datalens_sparkclusters_resource_presets_getGet DataLens Spark resource presetB
Read-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 presetsA
Read-onlyIdempotent

The sizes an instance of a Spark cluster can take, auto-paginated.

Experimental API, not measured. Capped at the configured item cap unless limit is given.

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

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

One saved SQL query: its text, its connection and its parameters.

Experimental in the DataLens API and written from its document: not measured. An organization whose SQL editor is off answers 403 SQL_EDITOR_NOT_ALLOWED.

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

Save a SQL query anew and return it; the connection and the text go every time.

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

Inputs: query (required), sql_query_id (required), connection_id (required), params, +1 more.

datalens_tenant_details_getGet the DataLens instanceA
Read-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 clusterA
Destructive

Detach a REST catalog from a Trino cluster; the catalog itself stays.

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

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

Delete a Trino cluster and return the operation that deletes it.

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

Inputs: id (required).

datalens_trinoclusters_getGet DataLens Trino clusterA
Read-onlyIdempotent

One Trino cluster: its configuration, its health, its status and its coordinator.

Experimental in the DataLens API and written from its document: not measured. An id nothing knows answers 403 Permission denied, not 404: it is not a lack of rights.

Inputs: id (required).

datalens_trinoclusters_listList DataLens Trino clustersA
Read-onlyIdempotent

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

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

Inputs: limit, filter, catalog_id, collection_id.

datalens_trinoclusters_resource_preset_getGet DataLens Trino resource presetC
Read-onlyIdempotent

One size of a cluster's machines: its cores and its memory.

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

Inputs: resource_preset_id (required), cloud_environment_id (required).

datalens_trinoclusters_resource_presets_listList DataLens Trino resource presetsB
Read-onlyIdempotent

The sizes a cluster's machines may have in a cloud environment, auto-paginated.

Experimental in the DataLens API and written from its document: not measured. An environment nothing knows answers 403 Permission denied, not 404.

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

Stop an export: its status becomes error, with WORKBOOK_EXPORT_CANCELLED.

An export that is over stays as it ended, and the call answers the same.

Inputs: export_id (required).

datalens_workbookexports_result_getGet DataLens workbook export resultA
Read-onlyIdempotent

The exported workbook: every entry it holds, as one document.

data is what workbookimports_start takes. An export that is not over, or was cancelled, answers 409 Conflict. The document is large (hundreds of kilobytes for a workbook with a dashboard) and holds no password or token of a connection.

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

How far an export is: pending, success or error, and the progress in percent.

notifications holds what the export has to say about an entry: id, level, message.

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

How far an import is: pending, success or error, and the progress in percent.

notifications holds what the import has to say about an entry: id, level, message.

Inputs: import_id (required).

datalens_workbooks_access_bindings_listList the roles on a DataLens workbookB
Read-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 workbookA
Destructive

Delete a workbook with everything it holds: connections, datasets, charts, dashboards.

Deleting a workbook that is already deleted answers 500, not 404: after a server error, read the workbook before deleting it again.

Inputs: workbook_id (required).

datalens_workbooks_delete_bulkDelete DataLens workbooksB
Destructive

Delete several workbooks with everything they hold.

Inputs: workbook_ids (required).

datalens_workbooks_entries_listList the entries of a DataLens workbookA
Read-onlyIdempotent

What a workbook holds: connections, datasets, charts and dashboards, auto-paginated.

scope says the kind of each entry; its id opens it with the tools of that kind. Capped at the configured item cap unless limit is given.

Inputs: workbook_id (required), limit, scope, filters, +4 more.

datalens_workbooks_getGet DataLens workbookB
Read-onlyIdempotent

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

Inputs: workbook_id (required), include_permissions_info.

datalens_workbooks_listList DataLens workbooksA
Read-onlyIdempotent

The workbooks of one collection (the root by default), auto-paginated.

It does not descend into nested collections: collections_content_list shows what a collection holds. Capped at the configured item cap unless limit is given.

Inputs: limit, only_my, order_field, collection_id, +3 more.

datalens_workbooks_list_by_idsList DataLens workbooks by idA
Read-onlyIdempotent

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

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

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

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

Granting someone who already has the action changes nothing.

Inputs: body (required), survey_id (required).

forms_access_listGet Forms survey accessA
Read-onlyIdempotent

Who may edit (change) and who may fill (submit) a form, one entry per action.

access is owner, restricted (the listed users/groups), common (the whole organization) or public (anyone with the link).

Inputs: survey_id (required).

forms_access_revokeRevoke Forms survey accessB
Destructive

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

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

Inputs: body (required), survey_id (required).

forms_answers_deleteDelete a Forms answerA
Destructive

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

One full form response by answer_id or answer_key (the API takes one of them).

A flat query-param route (GET /v1/answers) — no survey id needed. Each data item is a self-describing question record ({id, label, type, value, …}).

Inputs: answer_id, answer_key.

forms_answers_integrations_listList Forms answer integrationsA
Read-onlyIdempotent

The integration runs one answer triggered, by answer_id or answer_key (one of them).

Each entry has the run's status and the field of its type (issue_key, link, to_address, url, ...); notifications_get has the full run.

Inputs: answer_id, answer_key.

forms_answers_listList Forms answersA
Read-onlyIdempotent

A form's responses, at most limit (drains pages via the next cursor).

Returns the {columns, answers, next} envelope; next is always None in the merged result.

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

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

An integration group's conditions: the {operator, items} envelope of groups.

The group's integrations run on a new answer only when these conditions match.

Inputs: hook_id (required), survey_id (required).

forms_conditions_hook_updateModify Forms integration-group conditionA
Idempotent

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

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

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

A page's show conditions: the {operator, items} envelope of condition groups.

The top-level operator joins the GROUPS; each group has its own operator joining its clauses. A group's integer id is what the get/update/delete tools take.

Inputs: page_id (required), survey_id (required).

forms_conditions_page_updateModify Forms page show conditionA
Idempotent

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

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

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

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

Clauses have no ids of their own: edit one by replacing the whole group via conditions_question_update.

Inputs: survey_id (required), question_id (required), condition_id (required).

forms_conditions_question_listList Forms question show conditionsA
Read-onlyIdempotent

A question's show conditions: the {operator, items} envelope of condition groups.

The top-level operator joins the GROUPS; each group has its own operator joining its clauses. A group's integer id is what the get/update/delete tools take.

Inputs: survey_id (required), question_id (required).

forms_conditions_question_updateModify Forms question show conditionA
Idempotent

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

Despite the PATCH verb the API validates a complete group: operator and at least one clause are both required; the group id is never sent.

Inputs: body (required), survey_id (required), question_id (required), condition_id (required).

forms_conditions_question_update_operatorSet Forms question conditions operatorA
Idempotent

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

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

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

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

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

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

Inputs: survey_id (required).

forms_conditions_submit_updateModify Forms submit-button show conditionA
Idempotent

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

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

Inputs: operator (required), survey_id (required).

forms_files_deleteDelete Forms fileA
Destructive

Delete a stored form-filling file, identified by its path and/or url.

At least one of path / url must identify the file. The API answers 200 OK with no useful body, so the returned record confirms the accepted action.

Inputs: url, path.

forms_files_verifyVerify Forms filesA
Read-onlyIdempotent

Check the upload/scan status and download access of already-uploaded form-filling files.

A read done via POST — nothing is mutated. Each returned item's check_status is one of check, ready, infected, error, deleted. Uploading and downloading the files themselves are binary payloads — CLI/SDK-only.

Inputs: files (required), survey_id (required).

forms_filling_getGet Forms fillable formA
Read-onlyIdempotent

The form's fill-time settings — the pages/questions to fill, submit conditions, and values.

Use this to discover a form's fillable structure: pages[].items[] are the questions (each a polymorphic question schema) and their id values are the slug keys a response is posted under. Complements surveys_get (admin settings) and questions_list (authoring view). Post a response with filling_submit.

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

Autocomplete prompts for a suggest-type question while filling a form.

Pass the question slug (from filling_get) plus the search text; each returned item's id/text is a candidate value for the answer.

Inputs: survey_id (required), text, question, parent_id, +1 more.

forms_history_listList Forms change logA
Read-onlyIdempotent

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

Capped at the configured item cap unless limit is given.

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

Delete an integration group together with its integrations and conditions.

Inputs: hook_id (required), survey_id (required).

forms_hooks_getGet Forms integration groupA
Read-onlyIdempotent

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

Inputs: hook_id (required), survey_id (required).

forms_hooks_listList Forms integration groupsA
Read-onlyIdempotent

A form's integration groups, each with its conditions and integrations.

An integration group (hook) runs its active integrations on every new answer that matches its conditions; conditions_hook_* edit the conditions, subscriptions_* the integrations.

Inputs: survey_id (required).

forms_hooks_updateModify Forms integration groupA
Idempotent

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

Delete a key set — its unused keys (personal fill links) stop working.

The API answers 200 OK with no body, so a typed acknowledgement is returned.

Inputs: keyset_id (required), survey_id (required).

forms_keysets_getGet Forms key setA
Read-onlyIdempotent

One key set's settings and usage (total keys, used count, is_enabled).

Look up keyset_id via keysets_list. To download the actual keys use the forms keysets download CLI command (binary payload — not exposed over MCP).

Inputs: keyset_id (required), survey_id (required).

forms_keysets_listList Forms key setsA
Read-onlyIdempotent

Every personal-link key set on a form, as a flat array.

A key set is a batch of single-use keys that become personal form-filling links; each item's integer id is what you pass to keysets_get. Use surveys_list to find the survey_id first. Downloading the actual keys is a binary payload — CLI/SDK-only.

Inputs: survey_id (required).

forms_keysets_updateModify Forms key setA
Idempotent

Replace a key set's settings; returns the updated Keyset.

Despite the PATCH verb, the API validates the body as a full record: name, total and is_enabled must all be set or the request is rejected with 400. total can only grow: a number smaller than the set has now is refused.

Inputs: body (required), keyset_id (required), survey_id (required).

forms_me_getGet current Forms userA
Read-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 runsA
Read-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 runC
Read-onlyIdempotent

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

Inputs: notification_id (required).

forms_notifications_listList Forms integration runsA
Read-onlyIdempotent

Runs of a form's integrations (one per answer and integration), across pages.

Give survey_id: without it the API answers 404 Not Found, and the other filters only narrow that form's runs. Capped at the configured item cap unless limit is given. Read one run's context, response and error with notifications_get.

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

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

Inputs: notification_id (required).

forms_operations_getGet Forms operationA
Read-onlyIdempotent

The status of a long-running Forms operation — poll this to watch an async export finish.

Returns {id, status, message} where status is one of ok (finished, result ready), fail, wait (still running) or not_running. Take the operation_id from the id an async trigger returned (e.g. the answers_export tool or ycli forms answers export … --no-wait); re-call until status is ok or fail.

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

Delete a question from a form; one that a display condition refers to is refused.

Delete the condition first (conditions_question_delete).

The API answers 204 No Content; the returned record confirms the accepted action.

Inputs: survey_id (required), question_id (required), force.

forms_questions_getGet Forms questionA
Read-onlyIdempotent

One question's settings by id — label, slug, type and common presentation flags.

Where questions_list returns every question grouped into pages, this fetches a single question keyed by question_id (take it from an item's id in questions_list). Type-specific detail (validators, options, conditions) comes in the fields of its type.

Inputs: survey_id (required), question_id (required), with_slugs.

forms_questions_listList Forms questionsB
Read-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 questionA
Idempotent

Replace a question's settings (same typed body as create); returns the updated Question.

The body's type must match the existing question's type; look it up with questions_get first.

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

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

Every integration of an integration group (hook), each tagged by type.

Types: email, tracker, tracker_comment, wiki, jsonrpc, http, function. hooks_list returns the same integrations nested in each hook.

Inputs: hook_id (required), survey_id (required).

forms_subscriptions_updateModify Forms integrationB
Idempotent

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

Delete a form permanently — IRREVERSIBLE: its questions and collected answers are lost.

The API answers 204 No Content; the returned record confirms the accepted action.

Inputs: survey_id (required).

forms_surveys_getGet Forms surveyC
Read-onlyIdempotent

One form's settings by id.

Inputs: survey_id (required).

forms_surveys_listList Forms surveysA
Read-onlyIdempotent

Every form (survey) the caller can see, auto-paginated over the API's offset pages.

Capped at the configured item cap unless limit is given. Each item's id is the form id you pass to surveys_get / questions_list / answers_list.

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

Patch a form's settings — only the fields set in body change; returns the Survey.

Untouched settings keep their current values, so a partial patch is safe to repeat.

Inputs: body (required), survey_id (required).

forms_variables_listList Forms integration variablesA
Read-onlyIdempotent

The variable types a form's integrations can reference in their texts.

Each item names a type (e.g. form.answer_url, form.question_answer), the arguments it takes and the renderers it supports; put one into a subscription's variables to use it.

Inputs: survey_id (required).

schema_getRead the schema of a tool's bodyA
Read-onlyIdempotent

Read one definition of a body that its tool lists as a free-form object.

Such a parameter says in its description which definition to start from. The answer refers to others as #/$defs/<name>: read those with this tool too, only the ones the task needs.

Inputs: name (required), service (required).

status_getCheck Yandex 360 auth statusA
Read-onlyIdempotent

Report whose token this is, its organization and which services accept it.

credential says which token is in use (oauth or iam), never its value. identity is the token's owner (Yandex ID; unknown for an IAM token). organization is the configured id and, when the token has the directory:read_organization scope (API 360), its name. services has one probe each, with valid and, on failure, detail.

Inputs: no named parameters.

tracker_applications_listList Tracker external applicationsA
Read-onlyIdempotent

External applications that Tracker issues can be linked to via external links.

Use this to discover which application ids/types are available before creating an external link; each application's id and type values are identical.

Inputs: no named parameters.

tracker_attachments_deleteDelete Tracker issue attachmentA
Destructive

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

Get file_id from attachments_list. Returns an acknowledgement on success.

Inputs: file_id (required), issue_key (required).

tracker_attachments_getGet Tracker attachment metadataA
Read-onlyIdempotent

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

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

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

Files attached to a Tracker issue — name, size, MIME type, uploader, download URLs.

Returns metadata only (an ItemList[Attachment]); use it to discover a file's id and name. Downloading the file's or thumbnail's raw bytes is CLI/SDK-only — run ycli tracker attachments download <ISSUE> <FILE_ID> <FILENAME> — because binary blobs are not an MCP payload.

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

One queue autoaction by id — its filter/query, actions, schedule and run stats.

An autoaction periodically applies its actions to every issue matching its filter/query. For run history use autoactions_logs_list (summaries) then autoactions_logs_get (per-issue outcomes of one run).

Inputs: queue_id (required), action_id (required).

tracker_autoactions_logs_getGet Tracker autoaction runA
Read-onlyIdempotent

The per-issue outcomes of one autoaction run — each issue touched and its result status.

Get the run_id from autoactions_logs_list. Only autoactions that auto-update issues produce these detail logs.

Inputs: run_id (required), queue_id (required), action_id (required).

tracker_autoactions_logs_listList Tracker autoaction runsA
Read-onlyIdempotent

Run summaries for an autoaction — one record per launch with hit/success/failure counts.

Each record's id is the run id you pass to autoactions_logs_get for that run's per-issue outcomes.

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

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

Returns an acknowledgement on success.

Inputs: board_id (required).

tracker_boards_getGet Tracker boardA
Read-onlyIdempotent

Look up a single agile board by its numeric id.

The board includes its columns, estimation field and burndown calendar. Use this when you already know the board id; use boards_list to browse every board, and sprints_list to enumerate the sprints defined on this board.

Inputs: board_id (required).

tracker_boards_listList Tracker boardsA
Read-onlyIdempotent

All agile boards in the organisation, sorted by ascending board id.

Auto-paginated via the relative id-cursor. Capped at the configured item cap unless limit is given. Use boards_get when you know one board id, and sprints_list to list a board's sprints.

Inputs: limit.

tracker_boards_updateEdit Tracker boardA
Idempotent

Edit an agile board; only the fields set in body are changed.

Supports renaming, toggling backlog_available/sprints_available and replacing the columns layout. Returns the updated board.

Inputs: body (required), board_id (required).

tracker_bulk_getGet Tracker bulk-change statusA
Read-onlyIdempotent

Current status of an async bulk-change operation (issues_update_bulk and its kin).

status runs CREATED → COMPLETE / FAILED; totalIssues / totalCompletedIssues show progress. Poll this after a bulk trigger returns an id; once it reports FAILED, call bulk_issues_list for the per-issue errors.

Inputs: bulk_id (required).

tracker_bulk_issues_listList Tracker bulk-change failed issuesA
Read-onlyIdempotent

The issues a bulk-change operation could NOT change, each with its per-field error.

Use after bulk_get reports a non-zero failure count to see why specific issues were rejected (e.g. an invalid resolution for the target queue/type). Successful issues are not listed here.

Inputs: bulk_id (required).

tracker_changelog_listList Tracker issue changelogA
Read-onlyIdempotent

Full changelog (edit history) for a Tracker issue.

Auto-paginated via the relative id-cursor. Capped at the configured item cap unless limit is given.

Inputs: issue_key (required), sort, field, limit, +1 more.

tracker_checklists_clearClear Tracker issue checklistA
Destructive

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

Returns the issue without its checklist.

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

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

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

Inputs: item_id (required), issue_key (required).

tracker_checklists_listGet Tracker issue checklistA
Read-onlyIdempotent

The checklist items on a Tracker issue (text, done flag, assignee, per-item deadline).

Returns a flat array; an issue with no checklist yields an empty list. Item ids from here feed checklists_update / checklists_delete.

Inputs: issue_key (required).

tracker_checklists_updateEdit Tracker checklist itemA
Idempotent

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

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

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

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

Look up a single board column by its numeric id.

The column includes the issue statuses grouped into it. Use this when you already know the board and column ids; use columns_list to enumerate every column on a board.

Inputs: board_id (required), column_id (required).

tracker_columns_listList Tracker board columnsA
Read-onlyIdempotent

Every column defined on the given agile board.

Each column carries the issue statuses whose cards land in it. Use this to inspect a board's column layout; use columns_get when you already know a column id, and boards_get for the board itself.

Inputs: board_id (required).

tracker_columns_updateEdit Tracker board columnA
Idempotent

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

Get column_id from columns_list. Returns the updated column.

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

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

All comments on a Tracker issue, auto-paginated via the relative id-cursor.

Capped at the configured item cap unless limit is given, so very long threads are truncated at the cap rather than fetched forever.

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

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

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

Inputs: component_id (required).

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

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

Inputs: group_id (required), component_id (required).

tracker_components_listList Tracker componentsA
Read-onlyIdempotent

All components created by the organisation's users.

Each component carries its queue, owner and description. Components are sub-areas used to classify issues within a queue; use this to discover valid component names/ids before filtering or creating issues.

Inputs: no named parameters.

tracker_components_list_for_queueList components of a Tracker queueA
Read-onlyIdempotent

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

Inputs: queue_id (required), fields.

tracker_components_updateEdit Tracker componentA
Idempotent

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

Get component_id from components_list. Pass version to guard against concurrent edits (optimistic locking).

Inputs: body (required), component_id (required), version.

tracker_components_user_permissions_getGet a user's rights on a Tracker componentA
Read-onlyIdempotent

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

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

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

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

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

Inputs: file_id (required), entity_id (required), entity_type (required).

tracker_entities_attachments_listList Tracker entity attachmentsA
Read-onlyIdempotent

Files attached to an entity — name, size, MIME type, uploader and download URL.

Returns metadata only. Downloading the raw bytes is CLI/SDK-only — run ycli tracker entities attachments download <FILE_ID> <FILENAME> — because binary blobs are not an MCP payload.

Inputs: entity_id (required), entity_type (required).

tracker_entities_bulk_getGet Tracker entity bulk-change statusA
Read-onlyIdempotent

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

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

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

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

To remove a single item use entities_checklists_items_delete. Returns the entity.

Inputs: entity_id (required), entity_type (required), expand, fields, +2 more.

tracker_entities_checklists_items_deleteDelete Tracker entity checklist itemA
Destructive

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

Returns the entity with its remaining checklist.

Inputs: item_id (required), entity_id (required), entity_type (required), expand, +3 more.

tracker_entities_checklists_items_updateEdit Tracker entity checklist itemB
Idempotent

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

Returns the entity with its updated checklist.

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

Replace/update a Tracker entity's checklist items in one call.

body is a bare array of items, each with id/text/checked. To edit a single item by id use entities_checklists_items_update. Returns the entity with its checklist.

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

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 commentC
Read-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 commentsB
Read-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)A
Read-onlyIdempotent

An entity's comments via the cursor-paginated …/comments/_relative endpoint.

Prefer this over entities_comments_list when the comment thread is long — it drains pages up to limit (the configured item cap by default).

Inputs: entity_id (required), entity_type (required), limit.

tracker_entities_comments_updateEdit Tracker entity commentA
Idempotent

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

comment_id addresses the comment (get it from entities_comments_list).

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

Permanently delete a Tracker entity (project/portfolio/goal) — irreversible.

Pass with_board=true to also delete a project's linked agile board. Returns an acknowledgement on success.

Inputs: entity_id (required), entity_type (required), with_board.

tracker_entities_events_listList Tracker entity historyA
Read-onlyIdempotent

An entity's event history (created/updated/commented/…), auto-paginated.

Each event carries an author, a timestamp, a display title and the individual field changes. Capped at the configured item cap unless limit is given.

Inputs: entity_id (required), entity_type (required), limit, selected, +2 more.

tracker_entities_getGet Tracker entityA
Read-onlyIdempotent

A single Tracker entity (project, portfolio or goal) by id, with its fields block.

Pass fields to pull extra parameters into the response — keyResultItems for a goal's key results, checklistItems for a project/portfolio checklist, metricItems for its metric widgets, or summary,description,entityStatus for the basics. Use entities_search to discover ids first.

Inputs: entity_id (required), entity_type (required), expand, fields.

tracker_entities_permissions_getGet Tracker entity permissionsA
Read-onlyIdempotent

An entity's access settings — the READ/WRITE/GRANT ACL plus inheritance sources.

acl lists the users, groups and roles granted each level; permissionSources names the parent entities this one inherits permissions from. Change them with entities_permissions_update.

Inputs: entity_id (required), entity_type (required).

tracker_entities_permissions_get_directGet Tracker entity direct permissionsA
Read-onlyIdempotent

An entity's direct READ / WRITE / GRANT rights — the users, groups and roles holding each.

Unlike entities_permissions_get this leaves out inheritance (permissionSources). Change the rights with entities_permissions_update_direct.

Inputs: entity_id (required), entity_type (required).

tracker_entities_permissions_updateSet Tracker entity permissionsA
Idempotent

Change an entity's access rules; returns the resulting permission set.

The acl object of body accepts only grant / revoke actions, each mapping an access level (READ/WRITE/GRANT) to users/groups/roles, e.g. {"acl": {"grant": {"READ": {"users": ["8000000000000002"]}}}}. Read the current ACL first with entities_permissions_get.

Inputs: body (required), entity_id (required), entity_type (required).

tracker_entities_permissions_update_directSet Tracker entity direct permissionsA
Idempotent

Grant and revoke an entity's direct rights; the rest stay as they are.

grant and revoke each map READ / WRITE / GRANT to users (logins or ids), groups (ids) and roles (AUTHOR, OWNER, CLIENT, FOLLOWER, MEMBER). Returns the resulting rights. Read them first with entities_permissions_get_direct.

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

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

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

Parameters of a single issue field.

They include its value schema, read-only flag, allowed options and category. Use this when you already know the field id; use fields_list to enumerate every field in the organisation.

Inputs: field_id (required).

tracker_fields_listList Tracker global fieldsA
Read-onlyIdempotent

All global (organisation-wide) issue fields, both standard and custom.

Each field carries its value schema, category and provider metadata. Use this to discover which field keys exist before filtering or reading issues; use fields_get when you already know one field id.

Inputs: no named parameters.

tracker_fields_updateEdit Tracker fieldA
Idempotent

Edit an org-global issue field; only the fields set in body are changed.

Pass version to guard against concurrent edits (optimistic locking). Returns the updated field definition.

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

Permanently delete a saved issue filter (irreversible).

Returns an acknowledgement on success.

Inputs: filter_id (required).

tracker_filters_getGet Tracker filterA
Read-onlyIdempotent

Parameters of a single saved issue filter.

They include its stored conditions, query-language string, owner, favourite flag and access permissions. Use this to inspect a filter a user references by id; the resulting conditions can then feed an issues_search query.

Inputs: filter_id (required).

tracker_filters_updateEdit Tracker filterA
Idempotent

Edit a saved issue filter; only the fields set in body are changed.

Get filter_id from filters_get / the Tracker UI. Returns the updated filter.

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

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_issues_countCount Tracker issuesA
Read-onlyIdempotent

Count of issues matching a query-language string or a filter.

body.query is a TQL string, body.filter a field → value object; an empty body counts every issue the caller can see. E.g. {"body": {"filter": {"queue": "QUEUE", "status": "open"}}}.

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

Issues matching the supplied filters (omitted filters dropped), auto-paginated.

Returns at most limit issues; exactly limit back means more may match — narrow the filters or raise limit.

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

Release the server resources of a scrolled issue search (harmless housekeeping).

body maps each X-Scroll-Id to its X-Scroll-Token from a scrolled issues.search response. Returns an acknowledgement on success.

Inputs: body (required).

tracker_issues_suggestSuggest Tracker issues by titleA
Read-onlyIdempotent

Typeahead over visible issues — issues whose summary contains text.

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

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

Update fields of a Tracker issue; only the keys present in body are changed.

Status is NOT changed here — use transitions_execute. Returns the updated issue.

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

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

Inputs: no named parameters.

tracker_issuetypes_updateEdit Tracker issue typeA
Idempotent

Edit an org-global issue type; only the fields set in body are changed.

issue_type_id is the numeric id (not the key). Pass version to guard against concurrent edits (optimistic locking).

Inputs: body (required), issue_type_id (required), version.

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

One local field's full definition (type, options, category) by queue and field key.

Returns the value schema, allowed-values provider and category of the field. Use localfields_list first to discover the field_key values available in a queue.

Inputs: queue_id (required), field_key (required).

tracker_localfields_listList Tracker local fieldsA
Read-onlyIdempotent

Custom fields scoped to one queue (its local fields), as a flat list.

Each item's key is the field key you pass to localfields_get; field_schema describes the value type. Local fields differ from global fields (fields_list) in that they exist only inside the given queue. Pass a key from queues_list as queue_id.

Inputs: queue_id (required).

tracker_localfields_updateEdit Tracker local fieldA
Idempotent

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

Get field_key from localfields_list. Returns the updated field definition.

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

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

One queue macro by id — its comment body and the field updates it applies.

Sibling macros_list enumerates every macro in the queue; pass one of its id values here.

Inputs: macro_id (required), queue_id (required).

tracker_macros_listList Tracker queue macrosA
Read-onlyIdempotent

Every macro configured on a queue — each a canned comment plus field updates.

Each item's id is what you pass to macros_get for the full body and issueUpdate rows.

Inputs: queue_id (required).

tracker_macros_updateEdit Tracker queue macroA
Idempotent

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

Get macro_id from macros_list. Returns the updated macro.

Inputs: body (required), macro_id (required), queue_id (required).

tracker_me_getGet current Tracker userA
Read-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 prioritiesB
Read-onlyIdempotent

All available issue priorities in the organisation.

Inputs: localized.

tracker_priorities_updateEdit Tracker priorityA
Idempotent

Edit an issue priority; only the fields set in body are changed.

priority_id is the numeric id (not the key). Pass version to guard against concurrent edits (optimistic locking).

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

Delete a project (irreversible). Returns an acknowledgement.

Inputs: project_id (required).

tracker_projects_getGet Tracker projectA
Read-onlyIdempotent

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

Inputs: project_id (required), expand.

tracker_projects_listList Tracker projectsA
Read-onlyIdempotent

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

entities_search is the newer way to find projects and portfolios.

Inputs: expand.

tracker_projects_queues_listList queues of a Tracker projectC
Read-onlyIdempotent

The queues whose issues belong to a project.

Inputs: project_id (required), expand.

tracker_projects_updateEdit Tracker projectA
Idempotent

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

Returns the project with its incremented version.

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

Delete a Tracker queue WITH ALL ITS ISSUES (recoverable via queues_restore).

The queue moves to the recycle bin and can be restored for a limited time. Returns an acknowledgement on success.

Inputs: queue_id (required).

tracker_queues_fields_listList Tracker queue required fieldsA
Read-onlyIdempotent

The queue's required/local fields with their schema, options and display order.

Use this to learn which fields an issue in the queue expects (and whether each is required) before creating or updating issues there.

Inputs: queue_id (required).

tracker_queues_getGet Tracker queueA
Read-onlyIdempotent

One queue's settings and configuration by key or id.

Returns the queue's owner, default type/priority, and — when expand is set — its issue types, versions, team, workflows and per-type resolution config. Sibling queues_list enumerates every queue; pass one of its key values here.

Inputs: queue_id (required), expand.

tracker_queues_group_permissions_getGet a group's rights in a Tracker queueB
Read-onlyIdempotent

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

Inputs: group_id (required), queue_id (required).

tracker_queues_listList Tracker queuesA
Read-onlyIdempotent

Every queue the caller can see, auto-paginated over the API's page/perPage pages.

Capped at the configured item cap unless limit is given. Each item's key is the queue key (e.g. TEST) you pass to queues_get and use as an issue prefix (TEST-123). Use queues_get for a single queue's full configuration (types, workflows, resolutions).

Inputs: limit, expand.

tracker_queues_permissions_updateSet Tracker queue permissionsA
Idempotent

Replace access rules on a Tracker queue (grant/revoke read/write/create/grant rights).

Each right block takes users/groups/roles arrays; omitted blocks stay unchanged. Returns the resulting permission set. A removal is not always the inverse of an addition: taking a user out of read took it out of write too (seen once, 2026-10-06), so read the returned set after a removal. Adding a member that is there already changes nothing.

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

Remove a tag from EVERY issue of a queue (irreversible; the tag disappears queue-wide).

body is {"tag": "<name>"} — pick the name from queues_tags_list. Returns an acknowledgement on success.

Inputs: body (required), queue_id (required).

tracker_queues_tags_listList Tracker queue tagsA
Read-onlyIdempotent

Every tag name that has been added to the queue, as a flat string array.

These are the tags selectable on the queue's issues (the tags field). Remove one everywhere with queues_tags_delete.

Inputs: queue_id (required).

tracker_queues_user_permissions_getGet a user's rights in a Tracker queueA
Read-onlyIdempotent

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

Each right lists who grants it: the user personally, a group or a role. To change rights use queues_permissions_update.

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

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

Inputs: version_id (required).

tracker_queues_versions_getGet Tracker queue versionB
Read-onlyIdempotent

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

Inputs: version_id (required), fields.

tracker_queues_versions_listList Tracker queue versionsA
Read-onlyIdempotent

The queue's versions — release milestones issues can be assigned to.

Each item carries the version's name, date range and released/archived flags. Create one with queues_versions_create.

Inputs: queue_id (required).

tracker_queues_versions_updateEdit Tracker queue versionB
Idempotent

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

Inputs: body (required), version_id (required), fields.

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

Every issue resolution configured in the organisation.

A resolution is the close-out result such as fixed/duplicate/won't-fix. Use this to resolve or validate a resolution key when reading a closed issue or filtering; see statuses_list for workflow stages, not close-out reasons.

Inputs: no named parameters.

tracker_resolutions_updateEdit Tracker resolutionA
Idempotent

Edit an issue resolution; only the fields set in body are changed.

resolution_id is the numeric id (not the key). Pass version to guard against concurrent edits (optimistic locking).

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

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

Returns an acknowledgement on success.

Inputs: sprint_id (required).

tracker_sprints_getGet Tracker sprintA
Read-onlyIdempotent

Look up a single sprint by its numeric id.

The sprint includes its status, planned start/end dates, actual start/end datetimes and parent board. Use this when you already know the sprint id; use sprints_list to enumerate all sprints on a board.

Inputs: sprint_id (required).

tracker_sprints_listList Tracker board sprintsA
Read-onlyIdempotent

Every sprint defined on the given agile board, in the order Tracker returns them.

Each sprint carries its status, planned dates and parent board. Use this to enumerate a board's sprints; use sprints_get when you already know a sprint id, and boards_get for the board itself.

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

Edit a sprint; only the fields set in body (name, dates) are changed.

Get sprint_id from sprints_list. Pass version (the sprint's current version, from sprints_get) — the API requires it for optimistic locking and answers 428 without one. Returns the updated sprint.

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

Every issue status configured in the organisation's workflows.

Each status has a key, a name and a type such as new/inProgress/done. Use this to resolve or validate a status key before filtering or transitioning issues; see resolutions_list for close-out results and priorities_list for priorities.

Inputs: no named parameters.

tracker_statuses_updateEdit Tracker statusA
Idempotent

Edit an issue status; only the fields set in body are changed.

status_id is the numeric id (not the key). Pass version to guard against concurrent edits (optimistic locking).

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

One queue trigger by id — its actions, firing conditions, order and active flag.

Triggers run actions on an issue when their conditions match. The webhook-action run log is triggers_webhook_log_list.

Inputs: queue_id (required), trigger_id (required).

tracker_triggers_listList Tracker queue triggersA
Read-onlyIdempotent

Every trigger of a queue, ascending by id: name, actions, conditions and active flag.

Auto-paginated and capped at the configured item cap unless limit is given. Use triggers_get for one trigger by id.

Inputs: queue_id (required), limit.

tracker_triggers_updateEdit Tracker queue triggerA
Idempotent

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

Get trigger_id from triggers_get / the queue settings. Pass version to guard against concurrent edits (optimistic locking).

Inputs: body (required), queue_id (required), trigger_id (required), version.

tracker_triggers_webhook_log_listList Tracker trigger webhook logsA
Read-onlyIdempotent

The execution log of a trigger's HTTP-request (Webhook) action, newest first.

Each record holds the outbound request and received response for one run. Only Webhook actions produce these; a trigger with no HTTP action returns an empty list.

Inputs: queue_id (required), trigger_id (required), limit, date_to, +2 more.

tracker_users_getGet Tracker userA
Read-onlyIdempotent

Look up a single organisation user account by login or uid.

The account includes name, email and licence/dismissal status. Use this when you already know one user; use users_list to browse or enumerate the whole directory. Pass expand="groups" to include the user's groups.

Inputs: login_or_id (required), expand.

tracker_users_listList Tracker usersA
Read-onlyIdempotent

All users registered in the organisation, sorted by ascending uid.

Auto-paginated via the relative id-cursor. Capped at the configured item cap unless limit is given; use users_get instead when you already know the specific login or uid.

Inputs: limit, expand.

tracker_workflows_actions_updateEdit Tracker workflow actionA
Idempotent

Edit one action (transition) of a workflow step; only the fields set in body change.

Returns the whole workflow with its incremented version.

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

Delete a workflow (irreversible). Returns an acknowledgement.

Inputs: workflow_id (required).

tracker_workflows_getGet Tracker workflowA
Read-onlyIdempotent

One workflow with its steps, initial action, queue binding and version.

A step is a status with the transitions leaving it; version is needed to edit the workflow.

Inputs: workflow_id (required).

tracker_workflows_listList Tracker workflowsA
Read-onlyIdempotent

Every workflow of the organization (deleted ones excluded) with its steps and actions.

A workflow is the status graph an issue type follows. Use workflows_get for one by id and workflows_list_for_queue to see which workflow each issue type of a queue uses.

Inputs: no named parameters.

tracker_workflows_list_for_queueList workflows of a Tracker queueB
Read-onlyIdempotent

The workflows a queue uses: a map from workflow id to the issue types that follow it.

Inputs: queue_id (required).

tracker_workflows_updateEdit Tracker workflowA
Idempotent

Edit a workflow.

Only the fields set in body change, and a given steps list replaces the whole step list. Returns the workflow with its incremented version.

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

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

All time-tracking entries logged against a single Tracker issue.

Auto-paginated via the relative id-cursor. Capped at the configured item cap unless limit is given.

Scoped to one issue by issue_key. To search worklog across the whole org (by author and/or a creation-time range) use worklog_search instead.

Inputs: issue_key (required), limit.

tracker_worklog_list_globalList Tracker org-wide worklogA
Read-onlyIdempotent

Org-wide worklog entries via GET /worklog query filters (author, creation time).

A lighter sibling of worklog_search; every filter is optional.

Inputs: created_by, created_to, created_from.

tracker_worklog_updateEdit Tracker worklog recordA
Idempotent

Edit a worklog record on a Tracker issue (duration and/or comment).

Get record_id from worklog_list. Returns the updated record.

Inputs: body (required), issue_key (required), record_id (required).

wiki_access_clearClear Wiki page accessesA
Destructive

Revoke every personal access on a wiki page except the owner's.

Everyone but the owner falls back to the page's access policy. Irreversible: the revoked entries are not kept.

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

Revoke one access entry on a wiki page — the holder loses that grant at once.

The page owner's own entry cannot be revoked.

Inputs: page_id (required), access_id (required), prevent_selflock.

wiki_access_updateUpdate Wiki page accessA
Idempotent

Change the role or reach of one access entry on a wiki page.

The page owner's own entry cannot be changed.

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

Delete an attachment from a wiki page — irreversible (no recovery token).

The API answers 204 No Content; a typed acknowledgement is returned instead. Find file_id with attachments_list and double-check it before calling.

Inputs: file_id (required), page_id (required).

wiki_attachments_getGet Wiki attachmentA
Read-onlyIdempotent

Metadata of one attachment (GET /pages/{id}/attachments/{file_id}).

Name, size, MIME type, download URL, whether a preview exists and the virus-check status. Yandex does not document this operation (it is in the live OpenAPI only) and may change it. Fetching the bytes (download, preview) is CLI/SDK-only.

Inputs: file_id (required), page_id (required).

wiki_attachments_listList Wiki attachmentsA
Read-onlyIdempotent

Attachments (name, size, mime type) on a page id, auto-paginated (drains next_cursor).

Capped at the configured item cap unless limit is given. This is the list surface; downloading an attachment's bytes is CLI/SDK-only (binary blobs are not an MCP payload).

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

Delete a comment from a wiki page — irreversible (no recovery token).

Returns the page's remaining comments_count. Verify the target with comments_list / comments_thread_list first: deleting a parent orphans its replies' threading.

Inputs: page_id (required), comment_id (required).

wiki_comments_listList Wiki commentsA
Read-onlyIdempotent

Comments on a page id, auto-paginated (drains the next_cursor internally).

Capped at the configured item cap unless limit is given. Pair with pages_get_meta (its attributes.comments_count tells you how many exist).

Inputs: page_id (required), limit, order_by, status_filter, +1 more.

wiki_comments_thread_getGet Wiki comment thread from the serverA
Read-onlyIdempotent

The thread of a comment as the Wiki server returns it — an empty list for every real thread.

Checked live on 2026-10-02: the server's /thread endpoint has no replies to give, for a root comment or a reply, plain or inline. Use comments_thread_list, which rebuilds the thread from the page's comment list.

Inputs: page_id (required), comment_id (required), limit.

wiki_comments_thread_listList Wiki comment threadA
Read-onlyIdempotent

A comment and its replies, reconstructed from the page's comment list.

The Wiki /thread endpoint (comments_thread_get) is dead (returns no replies), so this fetches every comment on the page and chains parent_id from the target: the comment comes first, then its descendants in depth-first order. Capped at the configured item cap unless limit is given. Use comments_list first to discover a root comment id, then this to read its thread.

Inputs: page_id (required), comment_id (required), limit.

wiki_grids_cells_updateUpdate Wiki grid cellsA
Idempotent

Set the value of individual grid cells (addressed by row id + column slug).

Repeating the same call sets the same values (idempotent). Returns the updated cells plus the grid's new revision.

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

Delete columns from a grid by slug — irreversible (every cell in them is lost).

A rare DELETE-with-body: slugs and revision travel in the JSON body. Returns the grid's new revision.

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

Check whether a column slug is free in a grid and get free alternatives (read-only).

The call is a POST but changes nothing. Yandex does not document this operation (it is in the live OpenAPI only) and may change it.

Inputs: body (required), grid_id (required).

wiki_grids_columns_updateUpdate Wiki grid columnA
Idempotent

Edit a grid column in place: only the fields sent change; its type and slug stay.

Repeating the same call leaves the same column (idempotent). revision is accepted but not enforced, and every call moves the grid's revision on. Returns the grid's new revision and the column as saved. Yandex does not document this operation (it is in the live OpenAPI only) and may change it.

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

Delete a grid — irreversible (grids have NO recovery token, unlike pages).

Verify the target with grids_get first. The API answers 204 No Content; the result is a typed acknowledgement.

Inputs: grid_id (required).

wiki_grids_getGet Wiki gridA
Read-onlyIdempotent

A single dynamic table (grid) by its UUID, with structure, rows and revision.

Grids are the modern dynamic tables attached to a page; find a grid's id with pages_grids_list. Use row_filter/only_cols/only_rows/sort to narrow large grids server-side, and fields=attributes,user_permissions for extra blocks. The returned revision is what any subsequent write must send back.

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

Delete rows from a grid by id — irreversible.

A rare DELETE-with-body: ids and revision travel in the JSON body. Find row ids with grids_get. Returns the grid's new revision.

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

Pin or colour one grid row (cell values are set by grids_cells_update).

Repeating the same call leaves the same row (idempotent). The reply is a bare acknowledgement without the new revision (read it with grids_get); revision is accepted but not enforced. Yandex does not document this operation (it is in the live OpenAPI only) and may change it.

Inputs: body (required), row_id (required), grid_id (required).

wiki_grids_updateUpdate Wiki gridA
Idempotent

Rename or re-sort a grid (POST-not-PATCH quirk handled by the SDK).

body.revision must match the grid's current revision (read it off grids_get); a mismatch fails the write. Returns the grid's new revision.

Inputs: body (required), grid_id (required).

wiki_me_getGet current Wiki userA
Read-onlyIdempotent

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

Inputs: no named parameters.

wiki_operations_clone_getGet Wiki page-clone statusA
Read-onlyIdempotent

Status of an async page-clone operation — poll it until it finishes.

pages clone (a CLI/SDK write) returns an operation.id; pass it here and re-read until status is success or failed. On success the result.page names the clone. The sibling operations_clone_inline_grid_get polls inline-grid clones instead.

Inputs: task_id (required).

wiki_operations_clone_inline_grid_getGet Wiki grid-clone statusA
Read-onlyIdempotent

Status of an async inline-grid-clone operation — poll it until it finishes.

grids clone (a CLI/SDK write) returns an operation.id; pass it here and re-read until status is success or failed. On success the result.grid_id names the copy. The sibling operations_clone_get polls page clones instead.

Inputs: task_id (required).

wiki_operations_move_getGet Wiki page-move statusA
Read-onlyIdempotent

Status of an async page-move operation — poll it until it finishes.

pages_move returns an operation.id; pass it here and re-read until status is success or failed. On success the result.page_count says how many pages moved. This operation is undocumented by Yandex (it is in the live OpenAPI only) and may change.

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_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 pageA
Destructive

Delete a wiki page by numeric id (DELETE /pages/{id}).

KEEP the returned recovery_token — it is the only handle to undo the delete (redeem it with recovery_recover). Deleting removes the page's descendants' anchor too, so double-check the id (pages_get_by_id) before calling.

Inputs: page_id (required), recursive.

wiki_pages_descendants_listList Wiki page descendantsA
Read-onlyIdempotent

All descendant refs under SLUG, auto-paginated.

Capped at the configured item cap unless limit is given; narrow by SLUG for large trees.

Inputs: slug (required), limit, show_all, actuality, +1 more.

wiki_pages_descendants_list_by_idList Wiki page descendants by idA
Read-onlyIdempotent

All descendant page refs under a numeric page id, auto-paginated.

The id-based twin of pages_descendants_list. Capped at the configured item cap unless limit is given; each ref carries the child's numeric id and permanent slug.

Inputs: page_id (required), limit, show_all, actuality, +1 more.

wiki_pages_getGet Wiki pageB
Read-onlyIdempotent

The page's markdown body for SLUG.

Inputs: slug (required), revision_id, raise_on_redirect.

wiki_pages_get_by_idGet Wiki page by idA
Read-onlyIdempotent

A single page by its numeric id — the id-based twin of pages_get/pages_get_meta.

Use it when you hold a numeric page id (e.g. from a descendants listing or a write's response) instead of the slug. fields follows the standard Wiki selector rules: without it the response carries id/slug/title only; ask for content or attributes explicitly.

Inputs: page_id (required), fields, revision_id, raise_on_redirect.

wiki_pages_get_metaGet Wiki page metadataC
Read-onlyIdempotent

Page metadata for SLUG (attributes + owner).

Inputs: slug (required).

wiki_pages_grids_listList Wiki page gridsA
Read-onlyIdempotent

Dynamic tables (grids) attached to a page id, auto-paginated (drains next_cursor).

Each grid ref is a UUID id + title + created_at. Capped at the configured item cap unless limit is given. Reads a page's numeric id — pair with pages_get_meta / pages_descendants_list (whose refs carry the ids) to find one.

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

Saved revisions of a page, auto-paginated (GET /pages/{id}/revisions).

Each revision has an id (what GET /pages takes as revision_id), its author, created_at, page_type and publication state. Yandex does not document this operation (it is in the live OpenAPI only) and may change it.

Inputs: page_id (required), ids, limit.

wiki_pages_updateUpdate Wiki pageA
Idempotent

Change a wiki page by numeric id: only the fields set in body change.

body.content REPLACES the whole text — to add to an existing page use pages_append instead. The Wiki API updates via POST, not PATCH (PATCH returns 405); the SDK already handles that quirk. Repeating the same call yields the same page state (idempotent). E.g. {"page_id": 7, "body": {"title": "New name"}}.

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

A page's resources — attachments AND grids — as {type, item} envelopes, auto-paginated.

The unified single-pass listing over what attachments_list and pages_grids_list expose separately (drains next_cursor internally). Capped at the configured item cap unless limit is given; narrow with q (title) or types (attachment,grid).

Inputs: page_id (required), q, limit, types, +2 more.

wiki_uploadsessions_abortAbort Wiki upload sessionA
Destructive

Cancel one in-progress upload session, discarding its uploaded parts.

Frees the session's quota; the session cannot be resumed afterwards. Returns the session with status: aborted.

Inputs: session_id (required).

wiki_uploadsessions_abort_allAbort all Wiki upload sessionsA
Destructive

Cancel EVERY active upload session of the caller, discarding all uploaded parts.

A quota-freeing sweep — use it when stale sessions block new uploads; prefer uploadsessions_abort to cancel a single known session.

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

Current state of a Wiki file upload session by its UUID (status, file name/size, storage).

Poll this to watch a session move not_started → in_progress → finished before the file is attached to a page.

Inputs: session_id (required).

wiki_uploadsessions_parts_uploadUpload Wiki file partA
Idempotent

Upload one file part to an open session — step 2 of the upload pipeline.

The base64 data is decoded and sent as raw application/octet-stream bytes. Parts may be 5-16 MB except the last; a small file fits in a single part_number=1 call. Returns the session (poll status via uploadsessions_get).

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

    C2.9/5.0

    Scored across 457 tools

    Disambiguation2/5

    Many tools overlap heavily: issue list/search/count/suggest, worklog list/search/global, wiki comment list/thread variants, multiple DataLens chart get/update/delete tools split by chart type, and direct vs inherited permission tools. Detailed descriptions often label siblings, but with 457 tools the boundaries blur and misselection is likely.

    Naming Consistency3/5

    Most names follow a snake_case service_resource_action pattern, but there are notable deviations such as tracker_me_get, status_get, schema_get, tracker_bulk_issues_list versus tracker_issues_update_bulk, and inconsistent noun/verb ordering. The pattern is still mostly readable, but not uniformly applied.

    Tool Count1/5

    457 tools is an extreme mismatch for any server, far beyond the 3-15 well-scoped range and well past the 25+ threshold. The surface spans Tracker, Wiki, Forms, and DataLens with many experimental and rarely used operations, making the set unwieldy.

    Completeness3/5

    Core CRUD coverage exists for many resources, but there are conspicuous gaps: dashboards have create and one widget tool but no list/get/delete, several org-global objects have no delete endpoint, and some binary download operations are CLI-only. Agents can work around some gaps, but notable dead ends remain.

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Exposes 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
    • A
      license
      Not graded
      quality
      B
      maintenance
      Exposes 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