Yandex Music MCP
An unofficial Yandex Music MCP server that lets you browse, analyze, and manage your Yandex Music library from Claude.
Check account connection, login, and Plus subscription status.
Search Yandex Music for tracks, albums, artists, and playlists.
Read liked tracks, listening history by day, your playlists, playlist tracks, album tracks, artist top tracks, similar tracks, My Wave recommendations, and the current chart.
Create new playlists (private by default) and add/remove tracks in your playlists.
Like and unlike tracks.
Export all liked tracks or a playlist to local .txt and .csv files.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Yandex Music MCPwhat did I listen to this week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
yandex-music-mcp
Неофициальный MCP-сервер для Яндекс Музыки. Подключается к Claude Desktop, Claude Code и другим MCP-клиентам и даёт ассистенту доступ к вашей библиотеке: лайкам, истории прослушиваний, «Моей волне» и плейлистам.
Сервер работает локально на вашем компьютере (stdio). Токен хранится только у вас и никуда не передаётся. Поддерживаются Windows, macOS и Linux.
⚠️ Неофициальный проект. Не связан с ООО «Яндекс» и не одобрен им. Использует неофициальную библиотеку yandex-music: если Яндекс изменит API, сервер может временно перестать работать. Аудио сервер не скачивает — только работает с метаданными, лайками и плейлистами вашего аккаунта.
Что умеет
Чтение | Изменения |
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
Воспроизведением сервер не управляет: музыку вы слушаете, как обычно, в приложении Яндекс Музыки, а новые плейлисты и лайки появляются там сразу.
Примеры запросов
«Проанализируй мои последние 300 лайков: какие жанры и десятилетия я слушаю?»
«Что я слушал на этой неделе?»
«Собери приватный плейлист "Осень" из 25 треков, похожих на мои последние лайки»
«Вот плейлист друга: <ссылка>. Что из него уже есть в моих лайках?»
«Выгрузи все мои лайки в файл»
Related MCP server: soundcloud-mcp-server
Быстрая установка
1. Установите uv — он скачает и запустит коннектор:
Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"macOS / Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
Закройте терминал, откройте заново и проверьте: uv --version.
2. Войдите в Яндекс (один раз):
uvx --from yandex-music-mcp yandex-music-mcp-auth3. Подключите к клиенту:
Claude Code — одна команда:
claude mcp add yandex-music -- uvx yandex-music-mcpClaude Desktop — откройте Settings → Developer → Edit Config и добавьте в файл
claude_desktop_config.json:{ "mcpServers": { "yandex-music": { "command": "uvx", "args": ["yandex-music-mcp"] } } }
Если что-то не получилось, ниже — пошаговая установка из исходников с подробностями.
Установка из исходников
Понадобятся uv и аккаунт Яндекса. Для части функций (например, «Моей волны») может понадобиться подписка Плюс.
1. Установите uv
Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"macOS / Linux:
curl -LsSf https://astral.sh/uv/install.sh | shЗакройте терминал, откройте заново и проверьте: uv --version.
2. Скачайте проект
git clone https://github.com/kenzolika/yandex-music-mcp.gitИли нажмите Code → Download ZIP на странице репозитория и распакуйте архив.
3. Получите токен (один раз)
cd yandex-music-mcp
uv run yandex-music-mcp-authОткроется страница входа Яндекса (ya.ru/device), а в терминале появится код. Войдите в аккаунт, введите код и дождитесь в терминале строки «Готово!». Токен сохранится в ~/.yandex-music-mcp/token. Скрипт использует официальный вход Яндекса и вашего пароля не видит.
4. Узнайте полный путь к папке проекта
Клиенту нужно знать, где лежит проект. Самый простой способ — в терминале, в папке проекта (после шага 3 вы уже в ней):
Windows (PowerShell):
(Get-Location).Path→ например,C:\Users\Ivan\Documents\yandex-music-mcpmacOS / Linux:
pwd→ например,/Users/ivan/yandex-music-mcp
На Windows можно и мышкой: в Проводнике зажмите Shift, щёлкните по папке правой кнопкой и выберите «Копировать как путь».
Важно для Windows: в JSON-конфиге обратный слэш нужно удваивать:
C:\\Users\\Ivan\\Documents\\yandex-music-mcp. Можно вместо этого писать прямые слэши — Windows их понимает:C:/Users/Ivan/Documents/yandex-music-mcp.
5а. Подключите к Claude Desktop
В Claude Desktop откройте Settings → Developer → Edit Config — откроется файл claude_desktop_config.json. Добавьте в него блок mcpServers, подставив свой путь из шага 4:
{
"mcpServers": {
"yandex-music": {
"command": "uv",
"args": ["--directory", "C:/Users/Ivan/Documents/yandex-music-mcp", "run", "yandex-music-mcp"]
}
}
}В файле уже есть другие настройки? Не удаляйте их: добавьте
"mcpServers": { ... }на верхний уровень рядом с ними, отделив запятой.Claude не находит
uv? Укажите в"command"полный путь к нему. Его покажетwhere.exe uv(Windows) илиwhich uv(macOS/Linux) — обычно этоC:/Users/Ivan/.local/bin/uv.exeили~/.local/bin/uv.
Полностью закройте Claude Desktop (на Windows — через значок в трее → Quit, крестика окна недостаточно) и откройте снова.
5б. Или подключите к Claude Code
Вместо шага 5а — одна команда с путём из шага 4:
claude mcp add yandex-music -- uv --directory "C:/Users/Ivan/Documents/yandex-music-mcp" run yandex-music-mcp6. Проверьте
Напишите в новом чате: «Проверь подключение к Яндекс Музыке». Если в ответе ваш логин — всё работает.
Настройки
Переменная | Назначение |
| Токен напрямую (вместо файла) |
| Путь к файлу с токеном |
| Куда сохранять выгрузки (по умолчанию |
Безопасность и приватность
Токен даёт полный доступ к вашему аккаунту Музыки. Не публикуйте его и не добавляйте в git —
.gitignoreуже исключает файлы токена и выгрузки.Отозвать доступ можно на id.yandex.ru в разделе устройств и сервисов.
Все инструменты, которые что-то меняют, помечены для MCP-клиента как изменяющие, и Claude по умолчанию спрашивает подтверждение перед их вызовом.
delete_playlistдополнительно требует точное название плейлиста.
Решение проблем
Сервер не появился в Claude. Проверьте JSON на лишние или пропущенные запятые, путь к проекту и путь к
uv. Логи:%APPDATA%\Claude\logs\mcp-server-yandex-music.log(Windows) или~/Library/Logs/Claude/(macOS).«Нет токена». Выполните шаг 3 ещё раз и не закрывайте терминал, пока не появится «Готово!». В сообщении об ошибке перечислены пути, где сервер искал токен.
Не видно новых инструментов после обновления. Перезапустите Claude и откройте новый чат.
English
Unofficial MCP server for Yandex Music. It connects Claude Desktop, Claude Code and other MCP clients to your Yandex Music library: likes, listening history, My Wave and playlists.
The server runs locally on your machine (stdio). Your token is stored only on your computer and is never sent anywhere else. Works on Windows, macOS and Linux.
⚠️ Unofficial project. Not affiliated with or endorsed by Yandex. Built on the unofficial yandex-music library, so it may break temporarily if Yandex changes its API. The server does not download audio; it only works with metadata, likes and playlists in your account.
Tools
Read | Write |
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
The server does not control playback: listen in the Yandex Music app as usual; new playlists and likes show up there immediately.
Example prompts: "Analyze my last 300 likes: which genres and decades do I listen to?" · "What did I listen to this week?" · "Build a private playlist 'Autumn' with 25 tracks similar to my recent likes" · "Here's my friend's playlist: . Which of these tracks are already in my likes?" · "Export all my likes to a file"
Quick install
Install uv. Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"; macOS/Linux:curl -LsSf https://astral.sh/uv/install.sh | sh. Reopen the terminal and checkuv --version.Sign in to Yandex (once):
uvx --from yandex-music-mcp yandex-music-mcp-authConnect a client:
Claude Code:
claude mcp add yandex-music -- uvx yandex-music-mcpClaude Desktop: open Settings → Developer → Edit Config and add to
claude_desktop_config.json:{ "mcpServers": { "yandex-music": { "command": "uvx", "args": ["yandex-music-mcp"] } } }
Install from source
Install uv. Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"; macOS/Linux:curl -LsSf https://astral.sh/uv/install.sh | sh. Reopen the terminal and checkuv --version.Get the code:
git clone https://github.com/kenzolika/yandex-music-mcp.git, or Code → Download ZIP on the repository page.Get a token (once):
cd yandex-music-mcp, thenuv run yandex-music-mcp-auth. A Yandex sign-in page (ya.ru/device) opens and a code appears in the terminal. Sign in, enter the code and wait for the "Готово!" ("Done!") line. The token is saved to~/.yandex-music-mcp/token. This is Yandex's official OAuth device flow; the script never sees your password.Find the full path to the project folder. In the project folder run
(Get-Location).Path(Windows PowerShell) orpwd(macOS/Linux). On Windows you can also Shift + right-click the folder in Explorer → Copy as path. In JSON, either double the backslashes (C:\\Users\\Ivan\\yandex-music-mcp) or use forward slashes (C:/Users/Ivan/yandex-music-mcp).Connect a client.
Claude Desktop: Settings → Developer → Edit Config opens
claude_desktop_config.json. Add:{ "mcpServers": { "yandex-music": { "command": "uv", "args": ["--directory", "/absolute/path/to/yandex-music-mcp", "run", "yandex-music-mcp"] } } }Keep any existing settings and add
"mcpServers"next to them, separated by a comma. If Claude can't finduv, put its full path in"command"(where.exe uvon Windows,which uvon macOS/Linux). Then fully quit Claude Desktop (on Windows: tray icon → Quit) and start it again.Claude Code:
claude mcp add yandex-music -- uv --directory /absolute/path/to/yandex-music-mcp run yandex-music-mcp
Check: in a new chat ask "Check my Yandex Music connection". If the answer shows your login, you're all set.
Configuration
Variable | Purpose |
| Pass the token directly instead of a file |
| Path to the token file |
| Where exports are saved (default: |
Security and privacy
The token gives full access to your Yandex Music account. Never publish or commit it;
.gitignorealready excludes token files and exports.You can revoke access at id.yandex.ru under devices and services.
Every tool that changes something is marked as such for the MCP client, so Claude asks for confirmation before calling it.
delete_playlistalso requires the playlist's exact title.
Troubleshooting
The server doesn't show up in Claude. Check the JSON for missing or extra commas, the project path and the path to
uv. Logs:%APPDATA%\Claude\logs\mcp-server-yandex-music.log(Windows) or~/Library/Logs/Claude/(macOS)."No token" error. Run step 3 again and keep the terminal open until "Готово!" appears. The error message lists every path where the server looked for the token.
New tools are missing after an update. Restart Claude and open a new chat.
Авторы · Authors
Сделано Kenzolika & Claudiea 🎧 — человеком и его ИИ-напарницей (Claude) за один осенний вечер. Made by Kenzolika & Claudiea, a human and his AI sidekick (Claude), in one autumn evening.
Лицензия · License
MIT, см. LICENSE. Использует библиотеку yandex-music (LGPL-3.0) как зависимость, без изменений. MIT, see LICENSE. Uses yandex-music (LGPL-3.0) as an unmodified dependency.
Available Tools
19 toolsaccount_infoARead-only
Проверка подключения: логин, имя и статус подписки Плюс.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful context that this is a connection/auth probe and enumerates the returned fields, but says nothing about failure behavior (e.g. what an unauthenticated result looks like) or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that front-loads the tool's function and appends the returned fields. No filler, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and zero parameters, the description needn't explain return values or arguments; it still names the key fields. The only gap is the absence of guidance on when this probe should be invoked relative to the other tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The field list in the description concerns outputs, not inputs, and the output schema already covers those.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource in 'Проверка подключения' (connection check) and names the returned fields: login, name, Plus subscription status. This clearly separates it from the music-content siblings (search, get_liked_tracks, etc.), though it doesn't explicitly name an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrase 'Проверка подключения' suggests it is the way to verify authentication/connectivity, but the description never states when to call it versus other tools or what precondition it validates. No exclusions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_tracks_to_playlistC
Добавляет треки в мой плейлист. track_ids — id из других инструментов ("123:456" или "123").
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| at_start | No | ||
| track_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the write/safety profile is covered. The description adds almost nothing behavioral beyond that — no mention of permissions, duplicate handling, or what the required 'kind' parameter controls. It corroborates rather than extends the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the purpose leads and the id format follows. It is appropriately sized for such a small tool, though it is arguably too terse given the undocumented required parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, a required parameter ('kind') with no meaning anywhere, no usage guidance, and no behavioral context beyond the annotations leave the definition under-specified for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden of explaining three parameters. It documents only track_ids, giving the id format ('123:456' or '123'), while the required 'kind' integer and the 'at_start' boolean remain completely unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource in Russian ('Добавляет треки в мой плейлист' — adds tracks to my playlist), which clearly distinguishes it from remove_tracks_from_playlist. It scopes to 'my' playlists, but does not explicitly name alternatives or state the boundary against like_tracks or create_playlist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or alternatives are given. The only implied usage is 'my playlist', and nothing tells the agent when to prefer this over remove_tracks_from_playlist, like_tracks, or create_playlist. The agent must infer context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_playlistB
Создаёт новый плейлист (по умолчанию приватный). Возвращает его kind.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| visibility | No | private |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read, non-destructive, open-world write, so the safety profile is covered. The description notes the default visibility is private, but this merely repeats the schema default rather than adding new behavioral context (no auth, side-effect, or idempotency detail).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and default behavior, with no wasted words. The mention of the return value is redundant given the output schema but very brief.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return details need not be described, and annotations cover the safety profile. However, the undocumented required title parameter and lack of any usage or permission context leave a modest gap for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, but it only alludes to the visibility default ('по умолчанию приватный') and says nothing about the required 'title' parameter. It fails to compensate for the documentation gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Создаёт новый плейлист'), which clearly distinguishes it from read-side siblings like list_my_playlists and get_playlist_tracks. It does not explicitly name or contrast with any alternative, but the create action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative guidance. The intent (make a new playlist) is only implied by the verb, and nothing routes the agent versus siblings like add_tracks_to_playlist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_playlistADestructive
НЕОБРАТИМО удаляет мой плейлист целиком. Перед вызовом обязательно спроси пользователя. confirm_title — точное название удаляемого плейлиста (защита от удаления не того плейлиста).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| confirm_title | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds important context beyond that: the operation is 'НЕОБРАТИМО' (irreversible) and requires explicit user confirmation. These two facts are not encoded in the annotations and materially improve safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the irreversible nature and the user-confirmation requirement. Every clause adds distinct operational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return values need not be explained. However, with both parameters required and 0% schema coverage, the description should clarify 'kind' and the exact matching semantics of 'confirm_title'. The safety guidance is complete but parameter guidance is not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description only explains 'confirm_title' as a protection mechanism. The 'kind' parameter is left unexplained, forcing the agent to infer its meaning. The description partially compensates but leaves a required parameter opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('удаляет') and resource ('мой плейлист целиком') with irreversible scope ('НЕОБРАТИМО'). No sibling is similarly named, so the destructive intent is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly requires asking the user before invocation, which is clear precondition guidance. Does not reference alternative tools like create_playlist or list_my_playlists, but for a destructive operation the primary guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_tracks_to_fileA
Выгружает ВСЕ треки (лайки или плейлист) в текстовые файлы на компьютер, не загружая их в чат: .txt («Исполнитель — Название», по строке) и .csv (с альбомом, годом, жанром, id). Файлы кладутся в «Документы/Yandex Music exports» (или в YANDEX_MUSIC_EXPORT_DIR). Для source="playlist" нужен kind.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| source | No | likes | |
| file_name | No | ||
| owner_uid | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, openWorldHint=true, destructiveHint=false. The description goes well beyond them: it discloses that two files are produced, their exact formats and fields, the destination folder, the YANDEX_MUSIC_EXPORT_DIR override, and the source/kind dependency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the core action and scope, followed by format/prerequisite detail. Dense but every clause carries information; only the parenthetical field list is slightly granular.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the side effect (files written to a known location) is fully covered. The remaining gap is the undocumented file_name and owner_uid, which an agent would have to guess at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry all four parameters. It meaningfully explains source (likes/playlist) and kind (required for playlist), but file_name and owner_uid are never mentioned, leaving half the parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (export/write to file), the exact resource (ALL tracks — likes or a playlist), and the output form (.txt and .csv), explicitly noting it does NOT push them into chat. That phrase alone separates it from siblings like get_liked_tracks and get_playlist_tracks, which do load results into chat.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context for use — when you want files on disk rather than chat output — and it states a concrete prerequisite: kind is required when source="playlist". No exclusions or named alternative tools are given, so it stops short of the explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_album_tracksCRead-only
Информация об альбоме и его треклист.
| Name | Required | Description | Default |
|---|---|---|---|
| album_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing behavioral on top of that — no note on whether album info and tracklist are always both returned, no pagination or availability caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no filler or repetition. It is efficient, though its brevity reflects under-specification rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the tool is low-complexity with one parameter. Even so, the description supplies no usage context, no parameter meaning, and is in a different language from the sibling tool names, leaving real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single album_id parameter has 0% schema description coverage, and the description never explains it — only the word 'альбом' hints that an album identifier is expected. No format, no note that it is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The phrase 'Информация об альбоме и его треклист' names the resource (album + its tracklist), which loosely distinguishes it from get_playlist_tracks and get_artist_tracks, but it is a bare noun phrase with no verb and no scope details, so the purpose is only implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of any alternative tool. The agent is left to infer that this is the album-scoped counterpart of get_playlist_tracks/get_artist_tracks entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_artist_tracksCRead-only
Популярные треки артиста.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| artist_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description contributes nothing beyond that: no ordering rule, no limit behavior, no mention of what 'popular' means or whether results are scoped to the user's region/library.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence is front-loaded and technically waste-free, but the sizing is under-specification rather than conciseness: too little content for a tool with two parameters and a popularity-ordering concept that needs explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and annotations cover safety. But with zero parameter documentation, no usage routing, and an unexplained 'popular' notion, the definition is not complete enough for an agent to call it confidently versus its many siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across two parameters, so the description must carry the burden and does not. 'Popular tracks' only faintly implies a popularity ordering that relates to the undocumented limit parameter, and artist_id is never explained as a required integer identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states what the tool returns — the popular tracks of an artist — which is a clear resource with an implicit retrieval verb, so it is not a tautology. However, it names no sibling and gives no scope boundaries, so an agent cannot distinguish it from get_album_tracks, get_similar_tracks, or get_chart without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative tool guidance at all. With 15 sibling tools including several other track-listing tools, the absence of routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_chartCRead-only
Текущий чарт Яндекс Музыки.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and network reach are covered. The description adds nothing beyond that — no indication of chart region/scope, freshness, or what the chart represents, which is the kind of context that would justify credit here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded fragment with zero waste, but it is under-specified rather than concise: the entire description is four words and carries no operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but the undocumented limit parameter and the total absence of usage context leave the definition materially incomplete for a tool with one sibling-overlapping competitor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the single 'limit' parameter (default 50) is undocumented in both the schema and the description. The description does not compensate at all, so the agent must guess what limit bounds — number of chart entries versus something else.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The phrase names a specific resource ('current Yandex Music chart'), so an agent knows this returns chart data rather than playlists or tracks. However it is a bare noun phrase with no verb and no differentiation from siblings like get_my_wave or get_listening_history, which also return ranked/streamed music data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no usage guidance at all: nothing says when to call this instead of get_my_wave, search, or get_listening_history, and no prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_liked_tracksARead-only
Треки из «Мне нравится», от последних лайков к старым. Для анализа вкуса бери limit побольше (до 500).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely new behavior beyond the annotations: the newest-to-oldest ordering and a practical cap of 500 on limit, which is useful operational context for a read-only listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the resource plus ordering come first and the limit advice follows. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only listing tool with an output schema (so return values need no explanation) and solid annotations, the description supplies ordering and the limit cap. The only real gap is the undocumented offset parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter burden, and it only partially does. It clarifies limit (value 'up to 500' for analysis) but says nothing about offset, leaving half the parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: it returns tracks from the 'Liked' (Мне нравится) collection, and defines the ordering as newest likes to oldest. This is clear enough to distinguish it from like_tracks/unlike_tracks and get_listening_history, though it never names a sibling to differentiate explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one implied usage scenario – use a large limit (up to 500) for taste analysis – which hints at the tool's analytical purpose. But it offers no explicit when-to-use/when-not guidance and never points to an alternative tool (e.g. get_listening_history or search) for adjacent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_listening_historyBRead-only
Недавно прослушанные треки (история прослушиваний), сгруппированные по дням.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the genuinely useful disclosure that results are grouped by day, which the agent could not infer from annotations, but says nothing about pagination, time window, or how 'limit' interacts with the day grouping.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, and the grouping behavior is front-loaded alongside the resource. It is efficient, though it omits the detail that would have made it complete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the annotations cover the read-only nature. However, the limit parameter is undocumented and the time window of 'recently' is undefined, so an agent cannot call it fully informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the single 'limit' parameter (default 50) is undocumented everywhere. The description never mentions it, leaving the agent to guess whether it caps tracks, days, or groups.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('прослушанные треки' / listening history) and adds a scope detail ('сгруппированные по дням'), which lets an agent separate it from get_liked_tracks or get_chart. It stops short of explicitly naming siblings or contrasting behaviors, so it stays at 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives like get_liked_tracks, get_my_wave, or get_chart, and no prerequisites or exclusions. Usage must be inferred entirely from the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_waveARead-only
Порция треков из «Моей волны» — персональных рекомендаций. batches — сколько порций (≈5 треков каждая).
| Name | Required | Description | Default |
|---|---|---|---|
| batches | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external-data behavior are covered. The description adds a useful behavioral detail — that each batch is roughly 5 tracks — but says nothing about freshness, deduplication, or whether repeated calls return the same recommendations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the core purpose front-loaded and the parameter explained second. No filler; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and the single parameter is explained. The main gap is the absence of any routing guidance against sibling recommendation tools, but otherwise the definition is adequate for this simple one-parameter read.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the burden, and it does explain 'batches' as the number of portions and clarifies the ≈5-track size per portion, which is exactly the kind of meaning the bare integer schema lacks. It stops short of stating bounds or the default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('Моя волна' — personal recommendations) and states it returns a portion of tracks, which an agent can distinguish from search, get_liked_tracks, or get_similar_tracks. The verb is implicit ('Порция треков') rather than explicit, and it doesn't name a sibling to contrast with, so it falls short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this over alternatives like get_similar_tracks or get_chart, nor any stated prerequisite such as authentication being required for personalized data. Usage is only loosely implied by 'персональных рекомендаций'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_playlist_by_urlARead-only
Треки по ссылке на Яндекс Музыку — в том числе чужого публичного плейлиста. Понимает ссылки вида music.yandex.ru/users/<логин>/playlists/<номер>, music.yandex.ru/playlists/ (новый формат, в т.ч. lk.…) и ссылки на альбом /album/. Подходит любой домен Яндекс Музыки (.ru, .com, .by, .kz и т.д.).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely useful behavioral context beyond them: it operates on others' public playlists and accepts any Yandex Music domain (.ru/.com/.by/.kz), which tells the agent about reach and input flexibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences: purpose first, then supported URL formats, then domain coverage. No filler, though the URL enumeration is dense and could be slightly tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and readOnly/openWorld annotations cover safety. The description is nearly complete for a two-parameter read tool, with the only gap being the undocumented limit parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the load. It compensates well for the url parameter by enumerating the accepted link shapes (user/playlist number, new uuid/lk format, /album/<id>), but it says nothing about the limit parameter (default 300), leaving half the parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fetch tracks) and resource (by Yandex Music URL), and scopes it clearly: it works for other people's public playlists and accepts album links. The URL-based framing implicitly separates it from ID-based siblings like get_playlist_tracks, but it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent infers 'use this when you have a link.' There is no explicit when/when-not, no comparison to get_playlist_tracks or get_album_tracks, and no note on prerequisites, so the routing guidance is only suggestive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_playlist_tracksBRead-only
Треки плейлиста. По умолчанию — мой плейлист; owner_uid — для чужого публичного.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| limit | No | ||
| owner_uid | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety and open-world profile is covered by structured data. The description adds one useful behavioral fact — that owner_uid reaches other users' PUBLIC playlists — but says nothing about pagination, result size, or what happens when a playlist is private or inaccessible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses, front-loaded with the resource and then the owner_uid scoping rule. No filler sentences; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, but for a tool with a mandatory 'kind' parameter the description is incomplete: an agent cannot determine what value 'kind' expects or what it selects. The owner_uid note is good, but the central required input is left a mystery.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, so the description must carry the load. It explains owner_uid's semantics well, but the REQUIRED parameter 'kind' is completely undefined in both schema and description, and 'limit' (default 200) is never mentioned. This leaves the primary parameter opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource (retrieving playlist tracks) and its default scope is clear, distinguishing it from siblings like get_liked_tracks or list_my_playlists. However, it never explains the required 'kind' discriminator, which is the core selector for WHICH playlist is fetched, so the purpose is only partially pinned down.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'По умолчанию — мой плейлист; owner_uid — для чужого публичного' gives a usable rule for when to pass owner_uid versus omit it. But there is no guidance on when to use this tool over get_liked_tracks, list_my_playlists, or get_album_tracks, and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similar_tracksBRead-only
Похожие треки по версии Яндекса (track_id в формате "123" или "123:456").
| Name | Required | Description | Default |
|---|---|---|---|
| track_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds no behavioral context beyond annotations—it does not describe result freshness, personalization, rate limits, or other operational traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero waste. It efficiently conveys the tool's purpose and the parameter format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter, an output schema, and annotations covering safety, the description is largely complete. It states purpose and input format, though it could benefit from brief usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides concrete format examples for track_id ('123' or '123:456'), which are essential for correct invocation, though it does not explain the meaning of the colon-separated variant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: 'Похожие треки' (similar tracks) and adds 'по версии Яндекса' to clarify the source. It is clear what the tool returns, though it does not explicitly differentiate itself from siblings like search or get_artist_tracks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives such as search or get_artist_tracks. It simply states what the tool returns, leaving the agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
like_tracksC
Ставит лайк («Мне нравится») трекам.
| Name | Required | Description | Default |
|---|---|---|---|
| track_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a mutation (readOnlyHint=false) that is non-destructive and open-world. The description adds nothing beyond that — no mention of whether the call is idempotent, whether IDs that are already liked cause errors, batch-size limits, or rate limiting. With annotations covering the safety profile, the description still has an empty behavioral slot it could have filled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the action front-loaded. It is efficient, though its brevity is partly under-specification rather than disciplined conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but for a batch mutation tool with a fully undocumented parameter and zero usage context, the definition is too thin. An agent cannot determine batching behavior, error semantics, or how it pairs with unlike_tracks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter track_ids is completely undocumented. The plural 'трекам' weakly implies multiple IDs are accepted, but the description gives no format, count limits, or behavior for invalid/already-liked IDs, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('likes tracks'), which is unambiguous on its own. However, it makes no attempt to differentiate itself from the sibling unlike_tracks or explain its relationship to get_liked_tracks, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus unlike_tracks, no note about prerequisites (e.g. being authenticated), and no mention of how it relates to get_liked_tracks. The agent must infer everything from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_playlistsARead-only
Все мои плейлисты (kind — идентификатор плейлиста для других инструментов).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint/openWorldHint annotations already establish that this is a safe, non-mutating read, so the bar is lower. The description adds one genuinely useful cross-tool fact (the 'kind' value is the playlist identifier consumed by other tools), but says nothing about ordering, result limits, or whether private/collaborative playlists are included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded with the core capability and followed by a compact parenthetical. No filler; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters, an output schema present, and annotations covering the safety profile, the description needs little more. It is adequate for this simple listing tool, though a note on scope (own playlists only, ordering) would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The parenthetical about 'kind' describes an output field rather than an input, which is helpful but belongs more to return-value context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: retrieves all of the caller's playlists. It is clearly distinguishable from track-fetching siblings like get_playlist_tracks or create_playlist, but it never names or contrasts with an alternative, so the differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: you list playlists to obtain them. The parenthetical hint that 'kind' serves as the playlist identifier for other tools faintly suggests a chaining workflow, but there is no explicit when-to-use or when-not-to-use guidance, nor any named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_tracks_from_playlistCDestructive
Удаляет указанные треки из моего плейлиста.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| track_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond the annotations: no mention of irreversibility, permission requirements, or the 'my playlist' ownership constraint stated as a real limitation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no waste and the action front-loaded. But it is under-specified rather than genuinely concise, since brevity comes at the cost of any useful detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A destructive mutation tool with an output schema (no return-value explanation needed) but zero parameter documentation and no usage context. An agent cannot determine what 'kind' means or when this tool should be preferred, so the definition is incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and neither parameter is explained. 'Kind' (an integer) is completely opaque, and 'track_ids' is only vaguely implied by 'указанные треки'. The description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Удаляет указанные треки из моего плейлиста' = removes specified tracks from my playlist), which is clearly distinct from the sibling add_tracks_to_playlist. However, it does not explicitly reference siblings or delimit itself beyond the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives such as add_tracks_to_playlist, nor any prerequisites (e.g., ownership of the playlist). The description only restates the operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchBRead-only
Поиск по каталогу Яндекс Музыки. type сужает поиск; limit — сколько результатов в каждой категории.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | all | |
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds a useful behavioral nuance not in the schema — that 'limit' controls results per category rather than a total — but says nothing about result shape, pagination, or the read-only scope beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the purpose front-loaded and no filler; each clause maps to a real function or parameter. Slightly terse given the missing query semantics, but sized appropriately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and read-only, the output schema exists so return values need not be explained, and the description covers the two optional parameters. The main gap is the undefined required 'query' parameter, but overall the description is adequate for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the full burden and it only partially compensates: it explains that 'type' narrows the search and that 'limit' is per-category (a genuinely useful detail not derivable from the schema). The required 'query' parameter is left entirely undefined, and the enum values for 'type' are only in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Поиск по каталогу Яндекс Музыки' / search the Yandex Music catalog), which is clear and immediately distinguishable from the specific retrieval siblings like get_chart or get_liked_tracks since it is the only general search tool. It does not, however, explicitly name or contrast itself with any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the many specialized siblings (get_chart, get_similar_tracks, get_liked_tracks, etc.). The sentence 'type сужает поиск' describes a parameter effect, not a usage condition or alternative, leaving the agent to infer when a general catalog search is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlike_tracksCDestructive
Убирает треки из «Мне нравится».
| Name | Required | Description | Default |
|---|---|---|---|
| track_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation semantics are covered structurally. The description adds nothing beyond restating the effect: no note on reversibility, idempotency, or whether removed tracks must currently be liked.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though its brevity borders on under-specification for a destructive operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, but for a destructive write tool with zero annotation-independent behavioral detail and an undocumented required parameter, the description leaves significant gaps an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required track_ids parameter, and the description never mentions it. No detail is given on accepted ID format, array size limits, or whether invalid/absent IDs cause failure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Убирает треки из «Мне нравится»'), making the operation unmistakable and distinguishable from like_tracks. It lacks any explicit differentiation from siblings beyond the obvious name-level distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives such as remove_tracks_from_playlist, nor any prerequisites or exclusions. The agent must infer the context entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.2.0- Added
delete_playlist - Added
get_playlist_by_url
17 tool updates
v0.1.0- First observed
account_info - First observed
add_tracks_to_playlist - First observed
create_playlist - First observed
export_tracks_to_file - First observed
get_album_tracks - First observed
get_artist_tracks - First observed
get_chart - First observed
get_liked_tracks - First observed
get_listening_history - First observed
get_my_wave - First observed
get_playlist_tracks - First observed
get_similar_tracks - First observed
like_tracks - First observed
list_my_playlists - First observed
remove_tracks_from_playlist - First observed
search - First observed
unlike_tracks
TDQS
Scored across 19 tools
Most tools have distinct resource+action targets. There is minor overlap between get_playlist_tracks and get_playlist_by_url (both return playlist tracks via different identifiers) and between get_liked_tracks and export_tracks_to_file, but descriptions clarify their separate purposes.
The set strongly follows a verb_noun snake_case pattern (get_liked_tracks, create_playlist, add_tracks_to_playlist, delete_playlist). Only account_info (noun-only) and search (verb-only) deviate slightly, which is still readable.
19 tools is slightly heavy but well justified for a music service covering catalog, playlists, likes, recommendations, and export. Each tool earns its place with little redundancy.
Full lifecycle coverage of likes (like/unlike), playlists (list/get/create/add/remove/delete), plus search, album, artist, chart, history, recommendations, and export. Minor gaps like playlist metadata editing or track detail lookup are workable.
Maintenance
Related MCP Connectors
MCP server for Yoto: manage cards, tracks, icons and family devices from any MCP client.
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Zotero MCP server for Claude and ChatGPT: search, citations, safe writes, PDF passages and pages.
YouTube MCP — wraps the YouTube Data API v3 (BYO API key)
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for the Spotify Web API — gives Claude and other AI assistants tools to search music, control playback, manage playlists, library, and podcasts.472MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that gives Claude access to your SoundCloud library, allowing you to manage playlists and tracks through natural language.2AGPL 3.0
- FlicenseNot gradedqualityDmaintenanceMCP server for YouTube Music that enables searching songs and artists, managing playlists, and authenticating via Google OAuth, using STDIO transport.-
- AlicenseNot gradedqualityCmaintenanceAn MCP server that turns Yandex Music into tools an AI agent can call directly — search, queue, play, build playlists — with no browser involved.1MIT