Atlas / MCP servers / bim-ba / ycli

ycliBLOCK

mcp/bim-ba/ycli

Yandex 360 toolkit — Tracker, Wiki & Forms via CLI, MCP server, Python SDK & Claude Code plugin ✨

Verdict
BLOCK
Grade
F
Trust score
35 /100
Exposed tools
200 62r · 95w · 43d
Transport
stdio · streamable-http
License
MIT
Stars
5
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

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

[](https://github.com/bim-ba/ycli/actions/workflows/ci.yml) [](https://github.com/bim-ba/ycli) [](https://pypi.org/project/yandex-cli/) [](https://www.python.org/) [](LICENSE) [](https://ycli.savaznatnov.dev/) [](https://deepwiki.com/bim-ba/ycli)

  • 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 
Read from source at commit ff78c252a655OBSERVED · 2026-10-11
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (pypi)
claude mcp add yandex-cli --env YANDEX_ID_OAUTH_TOKEN=${YANDEX_ID_OAUTH_TOKEN} --env YANDEX_ID_OAUTH_TOKEN=${YANDEX_ID_OAUTH_TOKEN} -- uvx yandex-cli==0.142.0 mcp start
claude-code (oci)
claude mcp add ycli:0.142.0 --env YANDEX_ID_OAUTH_TOKEN=${YANDEX_ID_OAUTH_TOKEN} --env YANDEX_ID_OAUTH_TOKEN=${YANDEX_ID_OAUTH_TOKEN} -- docker run -i --rm ghcr.io/bim-ba/ycli:0.142.0:None
03

Exposed tools (200)

62 read · 95 write · 43 destructive. Blast radius: 43 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
access_cleardestructiveRevoke every personal access on a wiki page except the owner
access_deletedestructiveRevoke one access entry on a wiki page — the holder loses that grant at once.
access_listwriteWho may edit (``change``) and who may fill (``submit``) a form, one entry per action.
answers_exportwriteStart an async export of a form
applications_listreadExternal applications that Tracker issues can be linked to via external links.
autoactions_createwriteCreate an autoaction on a queue — actions applied on a schedule to matching issues.
boards_createwriteCreate an agile board; returns the new board with its id.
boards_deletedestructivePermanently delete an agile board (irreversible; its issues are not affected).
boards_updatewriteEdit an agile board; only the fields set in ``body`` are changed.
charts_editor_deletedestructiveDelete a chart; the dashboards that show it lose it.
charts_editor_getreadOne chart written in the editor: its kind (``entry.type``) and its tabs of code.
charts_ql_deletedestructiveDelete a chart; the dashboards that show it lose it.
charts_ql_getreadOne QL chart. Unlike a chart of the wizard it comes flat, with no ``entry`` around it.
charts_wizard_deletedestructiveDelete a chart; the dashboards that show it lose it.
charts_wizard_getreadOne chart built in the wizard: the datasets it reads and what it shows.
checklists_cleardestructivePermanently delete the ENTIRE checklist of a Tracker issue (all items, irreversible).
checklists_createwriteAdd an item to a Tracker issue
checklists_deletedestructivePermanently remove one item from a Tracker issue
checklists_updatewriteEdit one checklist item on a Tracker issue (text, checked state, assignee, deadline).
cloudenvironments_deletedestructiveDelete a cloud environment and return the operation that deletes it.
cloudenvironments_getreadOne cloud environment: its cloud, its subnet, its status and its storage.
cloudenvironmentstorage_bucket_download_url_createwriteA signed link to read one object of the bucket.
cloudenvironmentstorage_bucket_object_metadata_getreadThe size of an object, in bytes as a string, and when it last changed.
collections_breadcrumbs_listreadThe collections from the root down to this one.
collections_deletedestructiveDelete a collection with everything it holds: nested collections, workbooks, entries.
collections_getreadOne collection by id: its title, description and parent.
collections_permissions_get_rootwriteWhether the caller may create a collection and a workbook in the root.
columns_createwriteAdd a column to an agile board; returns the new column.
columns_deletedestructivePermanently remove a column from an agile board (irreversible).
columns_updatewriteEdit a board column; only the fields set in ``body`` are changed.
comments_createwriteAdd a comment to a Tracker issue; returns the created comment.
comments_deletedestructivePermanently delete one comment from a Tracker issue (irreversible).
comments_importwriteImport a comment onto an issue preserving its original author and timestamp (admin-only).
comments_updatewriteReplace the text of an existing comment on a Tracker issue.
components_createwriteCreate a component in a queue (a sub-area for classifying its issues).
components_listreadAll components created by the organisation
conditions_hook_createwriteAdd a condition group to an integration group; returns it with its ``id``.
conditions_hook_deletedestructiveDelete one condition group from an integration group; the others stay untouched.
conditions_hook_getreadOne condition group of an integration group by id — its ``operator`` and clauses.
conditions_hook_listreadAn integration group
conditions_hook_updatewriteReplace an integration group
conditions_hook_update_operatorwriteSet the boolean operator BETWEEN an integration group
conditions_page_createwriteAdd a condition group to a page — the page shows only when its conditions match.
conditions_page_deletedestructiveDelete one condition group from a page; the other groups stay untouched.
conditions_page_getreadOne condition group of a page by id — its ``operator`` and clause ``items``.
conditions_page_listreadA page
conditions_page_updatewriteReplace a page
conditions_page_update_operatorwriteSet the boolean operator BETWEEN a page
conditions_question_createwriteAdd a condition group to a question — it shows only when its conditions match.
conditions_question_deletedestructiveDelete one condition group from a question; the other groups stay untouched.
conditions_question_getreadOne condition group of a question by id — its ``operator`` and clause ``items``.
conditions_question_listreadA question
conditions_question_updatewriteReplace a question
conditions_question_update_operatorwriteSet the boolean operator BETWEEN a question
conditions_submit_createwriteAdd a condition group gating the form
conditions_submit_deletedestructiveDelete one condition group from the submit button; the other groups stay untouched.
conditions_submit_getwriteOne condition group of the submit button by id — its ``operator`` and clauses.
conditions_submit_listwriteThe submit button
conditions_submit_updatewriteReplace a submit-button condition group — a FULL replacement, not a partial update.
conditions_submit_update_operatorwriteSet the boolean operator BETWEEN the submit button
connections_deletedestructiveDelete a connection; the datasets built on it lose their source.
dashboards_createwriteCreate a personal Tracker dashboard; returns it with the id used to add widgets.
dashboards_deletedestructiveDelete a dashboard.
datasets_deletedestructiveDelete a dataset; the charts built on it lose their data.
embeddingsecrets_deletedestructiveDelete a key for embedding. Deleting again answers 404.
embeddingsecrets_getreadOne key for embedding: its name, its workbook, who made it. Never its private key.
embeds_deletedestructiveDelete an embed; its links stop working. Deleting again answers 404.
embeds_updatewriteSave an embed as given and return it.
entities_attachments_listreadFiles attached to an entity — name, size, MIME type, uploader and download URL.
entities_checklists_createwriteAdd checklist item(s) to a Tracker entity; returns the entity with its checklist.
entities_checklists_deletedestructivePermanently delete the ENTIRE checklist of a Tracker entity (all items, irreversible).
entities_checklists_updatewriteReplace/update a Tracker entity
entities_comments_createwriteAdd a comment to a Tracker entity; returns the created comment.
entities_comments_listreadAll comments on an entity — author, text, timestamps and summoned users.
entities_createwriteCreate a Tracker entity (project, portfolio or goal); returns it with its id.
entities_links_createwriteLink a Tracker entity to another entity (e.g. ``relates``, ``depends on``).
entities_links_listreadAn entity
entities_permissions_getreadAn entity
entities_permissions_get_directreadAn entity
entities_permissions_updatewriteChange an entity
entities_permissions_update_directdestructiveGrant and revoke an entity
entities_reports_createwriteRequest a report over Tracker entities (``POST /entities/report/``).
entities_updatewriteEdit a Tracker entity; only the ``fields`` keys present in ``body`` are changed.
entities_update_bulkwriteStart an async bulk field update over many entities; returns the operation.
entries_permissions_getreadWhat the caller may do with each entry, as a map by id.
fields_categories_createwriteCreate a field category (a grouping bucket for issue fields in the UI).
fields_createwriteCreate an org-global custom issue field.
fields_listreadAll global (organisation-wide) issue fields, both standard and custom.
filters_createwriteCreate a saved issue filter owned by the calling user.
gaps_createwriteCreate up to 100 employee absences; needs Tracker administrator rights.
getreadReport whose token this is, its organization and which services accept it.
grids_deletedestructiveDelete a grid — irreversible (grids have NO recovery token, unlike pages).
honest_writewriteProbe.
hooks_deletedestructiveDelete an integration group together with its integrations and conditions.
hooks_getreadOne integration group by id, with its conditions and integrations.
hooks_listreadA form
htmlpages_deletedestructiveDelete an HTML page.
issues_countreadCount of issues matching a query-language string or a filter.
issues_createwriteCreate a Tracker issue; returns the new issue with its key.
issues_getreadA single Tracker issue by key.
issues_importwriteImport an issue preserving its original history (admin-only back-fill).
issues_move_bulkwriteStart an async bulk move of many Tracker issues to another queue; returns the operation.
issues_transition_bulkwriteStart an async bulk status transition over many Tracker issues; returns the operation.
issues_updatewriteUpdate fields of a Tracker issue; only the keys present in ``body`` are changed.
issues_update_bulkwriteStart an async bulk field update over many Tracker issues; returns the operation.
issuetypes_createwriteCreate an org-global issue type (e.g. a new kind of task).
issuetypes_listreadAll available issue types (e.g. task, bug, epic).
licensing_limit_getdestructiveHow many licences the instance may hold: the limit in force and the one that takes over.
links_createwriteLink a Tracker issue to another issue; returns the created link.
links_importwriteImport an issue link preserving its original creation metadata (admin-only).
links_listreadAll links on a Tracker issue (linked issues, type, direction).
linktypes_listreadAll available link types (e.g. relates, depends on, blocks).
localfields_createwriteCreate a custom field scoped to one queue (a local field).
macros_createwriteCreate a macro on a queue (a canned comment plus field updates applied on demand).
macros_deletedestructivePermanently delete a macro from a queue (irreversible).
macros_updatewriteEdit a queue macro; only the fields set in ``body`` are changed.
me_getreadThe authenticated Yandex Forms user (a safe auth probe).
notifications_cancelwriteStop an integration run that has not finished.
notifications_getwriteOne integration run with what the integration was given, answered and failed with.
notifications_restartwriteRun the integration again for that answer.
notifications_status_getwriteThe state of one integration run: pending, success, error or canceled.
pages_createwriteCreate a wiki page at ``body.slug`` (``POST /pages``).
pages_getreadThe page
pages_get_metareadPage metadata for SLUG (attributes + owner).
pages_searchreadFull-text search over wiki pages and files; returns one page of hits.
priorities_createwriteCreate an org-global issue priority.
projects_createwriteCreate a project (legacy Projects API).
projects_deletedestructiveDelete a project (irreversible). Returns an acknowledgement.
projects_getwriteOne project: name, lead, stage, dates and ``version`` (needed to edit it).
projects_listreadEvery project of the organization (the legacy Projects API).
questions_listreadA form
queues_createwriteCreate a Tracker queue (the container issues live in; its key prefixes issue keys).
queues_deletedestructiveDelete a Tracker queue WITH ALL ITS ISSUES (recoverable via ``queues_restore``).
queues_permissions_updatedestructiveReplace access rules on a Tracker queue (grant/revoke read/write/create/grant rights).
queues_restorereadRestore a previously deleted Tracker queue (and its issues) from the recycle bin.
queues_tags_deletedestructiveRemove a tag from EVERY issue of a queue (irreversible; the tag disappears queue-wide).
queues_versions_createwriteCreate a version (release milestone) on a queue.
readreadRead it.
reads_onlyreadSays it writes, and under `dry_run` only reads, through the guarded client.
renamewriteRename it.
reports_deletedestructiveDelete a report.
resolutions_createwriteCreate an org-global issue resolution (a close-out reason such as fixed/duplicate).
resolutions_listreadEvery issue resolution configured in the organisation.
retagreadAnswers a list, which FastMCP puts under `result`.
sparkapplications_cancelwriteStop a Spark application and return the operation that cancels it.
sparkapplications_getreadOne Spark application: its status, its times and what it runs.
sparkclusters_deletedestructiveDelete a Spark cluster and return the operation; ``lakehouseoperations_get`` reads it.
sparkclusters_getreadOne Spark cluster: its settings, health and status. Experimental API, not measured.
sparkclusters_startwriteStart a stopped Spark cluster and return the operation.
sparkclusters_stopwriteStop a running Spark cluster and return the operation; ``lakehouseoperations_get`` reads it.
sprints_archivereadArchive a finished sprint (hides it from the board
sprints_createwriteCreate a sprint on an agile board; returns the new sprint.
sprints_deletedestructivePermanently delete a sprint (irreversible; its issues are not affected).
sprints_startwriteStart a sprint (sets its status to ``inProgress`` and stamps the actual start time).
sprints_updatewriteEdit a sprint; only the fields set in ``body`` (name, dates) are changed.
sqlqueries_deletedestructiveDelete a saved SQL query.
statuses_createwriteCreate an org-global issue status for use in workflows.
statuses_listreadEvery issue status configured in the organisation
subscriptions_deletedestructiveDelete one integration from a hook; the hook
subscriptions_getreadOne integration of a hook by id, with its type-specific settings.
subscriptions_listreadEvery integration of an integration group (hook), each tagged by ``type``.
surveys_createwriteCreate a new form from the given settings; returns the created ``Survey`` (note its ``id``).
surveys_deletedestructiveDelete a form permanently — IRREVERSIBLE: its questions and collected answers are lost.
surveys_getreadOne form
surveys_publishwritePublish a form so respondents can fill it; fails if the form is blocked or at its cap.
surveys_unpublishreadTake a published form offline (respondents can no longer fill it); reversible via publish.
surveys_updatewritePatch a form
tagged_readreadProbe.
tenant_details_getreadThe DataLens instance the credentials reach (a safe auth probe).
things_createwriteProbe.
things_updatewriteProbe.
touchwriteAnswers nothing, and has no schema to put a plan beside.
transitions_listreadAvailable workflow transitions for a Tracker issue.
trinoclusters_deletedestructiveDelete a Trino cluster and return the operation that deletes it.
trinoclusters_getreadOne Trino cluster: its configuration, its health, its status and its coordinator.
trinoclusters_startwriteStart a stopped Trino cluster and return the operation that starts it.
trinoclusters_stopwriteStop a running Trino cluster and return the operation that stops it.
unannotatedreadProbe.
unguardedreadA tool that writes with a client it built by itself: the guard is not in it.
untagged_writewriteProbe.
uploadsessions_abortwriteCancel one in-progress upload session, discarding its uploaded parts.
uploadsessions_abort_allwriteCancel EVERY active upload session of the caller, discarding all uploaded parts.
uploadsessions_finishwriteClose an upload session after its last part — step 3 of the upload pipeline.
workbookexports_cancelwriteStop an export: its status becomes ``error``, with ``WORKBOOK_EXPORT_CANCELLED``.
workbookexports_result_getreadThe exported workbook: every entry it holds, as one document.
workbookexports_status_getreadHow far an export is: ``pending``, ``success`` or ``error``, and the progress in percent.
workbooks_deletedestructiveDelete a workbook with everything it holds: connections, datasets, charts, dashboards.
workbooks_delete_bulkdestructiveDelete several workbooks with everything they hold.
workbooks_getreadOne workbook by id: its title, description and collection.
workbooks_move_bulkwriteMove several workbooks into a collection, or into the root when none is given.
workflows_createwriteCreate a workflow; returns it with its generated id and version.
workflows_deletedestructiveDelete a workflow (irreversible). Returns an acknowledgement.
workflows_getreadOne workflow with its steps, initial action, queue binding and ``version``.
workflows_listreadEvery workflow of the organization (deleted ones excluded) with its steps and actions.
workflows_updatewriteEdit a workflow.
worklog_createwriteLog spent time on a Tracker issue; returns the created worklog record.
worklog_deletedestructivePermanently delete a worklog record from a Tracker issue (irreversible).
worklog_importwriteImport a worklog record preserving its original author and timestamps (admin-only).
worklog_searchreadOrg-wide worklog entries filtered by author and/or a creation-time range.
worklog_updatewriteEdit a worklog record on a Tracker issue (duration and/or comment).
04

Trust audit

BLOCKgrade F · trust 35/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (1 observation(s))
Network
declared (4 observation(s))
Shell
declared (3 observation(s))
Dependencies
pinned
Secrets in source
found

Findings (25)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
scripts/api_drift.py:275
hints[name] = eval(annotation, namespace) if isinstance(annotation, str) else annotation
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
.agents/skills/yandex-360-tracker/SKILL.md:49
The CLI, MCP tools, and SDK all read credentials from the environment:
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
.claude/skills/yandex-360-tracker/SKILL.md:51
The CLI, MCP tools, and SDK all read credentials from the environment:
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
.opencode/skills/yandex-360-tracker/SKILL.md:51
The CLI, MCP tools, and SDK all read credentials from the environment:
Why it matters. asks the agent to read credentials
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.rulesync/skills/yandex-360
.rulesync/skills/yandex-360
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.rulesync/skills/yandex-360-datalens
.rulesync/skills/yandex-360-datalens
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.rulesync/skills/yandex-360-forms
.rulesync/skills/yandex-360-forms
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.rulesync/skills/yandex-360-tracker
.rulesync/skills/yandex-360-tracker
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.rulesync/skills/yandex-360-wiki
.rulesync/skills/yandex-360-wiki
Why it matters. link not followed
MEDIUMCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
scripts/api_drift.py:252
source = importlib.import_module(statement.module)
MEDIUMCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
scripts/api_drift.py:350
module = importlib.import_module(f"ycli.yandex.{domain}.{resource}.mcp")
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/yandex/status/test_login_cli.py:27
TOKEN = "y0_AgAAAABsecret_TOKEN_value_1234"
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
tests/unit/yandex/test_cloud_credentials.py:26
KEY = {"id": "key-1", "service_account_id": "sa-1", "private_key": "-----BEGIN PRIVATE KEY-----"}
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
access_clear, access_delete, boards_delete, charts_editor_delete, charts_ql_delete, charts_wizard_delete, checklists_clear, checklists_delete, cloudenvironments_delete, collections_delete, columns_del
Why it matters. 43 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.binary · CWE-1104
tests/unit/yandex/wiki/uploadsessions/part3.bin
part3.bin
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.hidden_file · CWE-1104
.envrc
.envrc
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.gitmodules
.gitmodules
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.graphifyignore
.graphifyignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.pre-commit-config.yaml
.pre-commit-config.yaml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
e2e/recording.py:101
importlib.import_module(module.name)
LOWCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
e2e/surfaces.py:438
local = importlib.import_module(f"ycli.yandex.{service}.{resource}.mcp").mcp
LOWCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
tests/architecture/test_arch1.py:529
server = importlib.import_module(f"ycli.yandex.{domain}.{directory.name}.mcp").mcp
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
e2e/recording.py:139
return eval(returned, getattr(endpoint.parser, "__globals__", {}))
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/unit/cli/test_cli_api.py:329
"path", ["../queues/DE", "/issues/../../queues", "issues/%2e%2e/x", f"{TRACKER_BASE}/../v2/x"]
LOWObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
docs/en/how-to/install-in-your-harness.md:35
| [Cursor](#cursor) | [install link](cursor://anysphere.cursor-deeplink/mcp/install?name=yandex-360&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyItLWZyb20iLCJ5YW5kZXgtY2xpW21jcF0iLCJ5Y2xpIiwibWNwIiwic3Rhc

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha ff78c252a655full audit observations/trust-audit/mcp-server/bim-ba__ycli.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11ff78c252a655BLOCKF35first audit
06

Questions

What is the ycli MCP server?

Yandex 360 toolkit — Tracker, Wiki & Forms via CLI, MCP server, Python SDK & Claude Code plugin ✨

What tools does ycli expose?

200 in total: 62 read-only, 95 that write, and 43 that can delete or overwrite (access_clear, access_delete, boards_delete, charts_editor_delete, charts_ql_delete). Every one is listed on this page with its risk.

Is ycli safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (35/100) and found 4 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 43 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does ycli need?

It reads YANDEX_ID_OAUTH_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does ycli run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on PyPI as yandex-cli.

How current is this page?

The grade is for one exact copy of the source (ff78c252a655), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement