keyso-mcp
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., "@keyso-mcpShow domain dashboard for ozon.ru"
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.
keyso-mcp
Готовый MCP-сервер для Keys.so API (https://api.keys.so), сгенерированный по спецификации из https://apidoc.keys.so.
Quick Start
Установить зависимости:
npm installДобавить сервер в
~/.codex/config.toml:
[mcp_servers.keyso]
command = "node"
args = ["/Users/alexanderbukreev/git/keyso-mcp/src/index.js"]
[mcp_servers.keyso.env]
KEYSO_TOKEN = "<ваш_api_токен>"Перезапустить Codex CLI.
Сделать первый запрос:
Используй skill keyso-domain-dashboard-lite. Проверь domain=ozon.ru, base=msk и дай короткий snapshot.Если skills не нужны, можно сразу работать через MCP:
Через Keys.so MCP проверь domain=ozon.ru, base=msk и покажи основные SEO-метрики.Сервер регистрирует:
keyso_api_request— универсальный ручной вызов API.Автотулы для всех операций OpenAPI (сейчас: 150).
Related MCP server: Haloscan MCP Server
Требования и запуск
Node.js 18+
Локальный запуск:
export KEYSO_TOKEN="<ваш_api_токен>"
npm startОпционально:
KEYSO_API_BASE_URL— переопределить базовый URL API (по умолчаниюhttps://api.keys.so).
Smoke-test MCP handshake:
npm run smoke:mcpСкрипт поднимает сервер как дочерний процесс, делает initialize и listTools, затем проверяет, что клиент реально видит keyso_api_request и полный набор tools.
Как проверить после настройки
После того как вы:
добавили
keysoв~/.codex/config.toml;установили skills в
~/.codex/skills;перезапустили Codex CLI;
проверьте систему в 2 шага.
1. Проверить MCP handshake локально
Запустите:
npm run smoke:mcpОжидаемый результат:
ok: trueserver.name = keyso-api-mcptoolCountоколо151hasGenericTool: true
Это подтверждает, что:
MCP server стартует;
initializeпроходит;listToolsпроходит;клиент реально видит инструменты сервера.
2. Проверить skill на живом сценарии
В Codex после перезапуска выполните, например:
Используй skill keyso-domain-dashboard-lite. Проверь domain=ozon.ru, base=msk и дай короткий snapshot.Или:
Используй skill keyso-quick-audit. Проверь domain=ozon.ru, base=msk и покажи organic competitors.Что считать нормальным результатом:
агент не сообщает, что
keysoMCP недоступен;ответ строится на реальных данных Keys.so, а не на абстрактных рассуждениях;
keyso-domain-dashboard-liteиспользует один базовый endpoint;keyso-quick-auditне разрастается дальше одного follow-up endpoint без необходимости.
Обновление спецификации
npm run update:openapiСкрипт заново вытаскивает OpenAPI из apidoc.keys.so и обновляет openapi.json.
Конфиги MCP
Конфиг для Codex CLI уже показан в Quick Start. Ниже оставлен только вариант для Claude Code.
Claude Code (MCP config JSON)
{
"mcpServers": {
"keyso": {
"command": "node",
"args": ["src/index.js"],
"env": {
"KEYSO_TOKEN": "<ваш_api_токен>"
}
}
}
}Skills для экономии контекста
В репозитории добавлены skills:
skills/keyso-api-router— широкий роутер по всему API.skills/keyso-quick-audit— узкий режим для быстрых domain/keyword проверок.skills/keyso-domain-dashboard-lite— micro-режим для single endpoint/report/simple/domain_dashboard.
keyso-api-router нужен для больших задач, чтобы:
не грузить весь OpenAPI в контекст;
выбирать только релевантные endpoint-группы;
начинать с минимального набора вызовов.
keyso-quick-audit нужен для коротких задач, чтобы:
использовать только 1 основной endpoint;
добавлять максимум 1 дополнительный endpoint;
держать минимальный размер контекста.
Установка skill в локальные Codex skills:
mkdir -p ~/.codex/skills
cp -R skills/keyso-api-router ~/.codex/skills/keyso-api-router
cp -R skills/keyso-quick-audit ~/.codex/skills/keyso-quick-audit
cp -R skills/keyso-domain-dashboard-lite ~/.codex/skills/keyso-domain-dashboard-liteСравнение вариантов в HTML:
docs/keyso-options-comparison.html
Примеры использования skills
Ниже готовые copy-paste prompts для Codex/агента.
1. keyso-domain-dashboard-lite
Когда использовать:
нужен один быстрый снимок по домену;
не нужны конкуренты, keywords, compare или monitoring.
Пример prompt:
Используй skill keyso-domain-dashboard-lite. Проверь domain=ozon.ru, base=msk и дай короткий snapshot.Что ожидается:
1 вызов
/report/simple/domain_dashboard;короткий ответ по основным метрикам домена.
2. keyso-quick-audit
Когда использовать:
нужен быстрый аудит домена или ключа;
допустим максимум 1 follow-up endpoint.
Пример prompt по домену:
Используй skill keyso-quick-audit. Быстро оцени domain=wildberries.ru, base=msk и покажи ещё organic competitors.Пример prompt по ключу:
Используй skill keyso-quick-audit. Проверь keyword=купить велосипед, base=msk и покажи похожие запросы.Что ожидается:
домен:
/report/simple/domain_dashboard+ опционально/report/simple/organic/concurents;ключ:
/report/simple/keyword_dashboard+ опционально/report/simple/similarkeys.
3. keyso-api-router
Когда использовать:
задача шире одного snapshot;
нужен подбор минимального набора endpoint'ов под вопрос;
возможны compare, monitoring, serp, async flows.
Пример prompt для compare:
Используй skill keyso-api-router. Сравни ozon.ru и wildberries.ru по органике и покажи пересечение конкурентов.Пример prompt для paid search:
Используй skill keyso-api-router. Сделай paid search обзор по domain=leroymerlin.ru, base=msk.Что ожидается:
агент сам выбирает минимальный набор релевантных endpoint'ов;
начинает с 1-3 вызовов и расширяет набор только если это действительно нужно.
Короткое правило выбора
keyso-domain-dashboard-lite— один быстрый snapshot домена.keyso-quick-audit— быстрый аудит домена или ключа плюс один дополнительный срез.keyso-api-router— всё, что шире или сложнее этого.
Примеры использования MCP без skills
Этот режим нужен, если вы не хотите подключать skills и хотите ходить в API напрямую через MCP tools.
1. Через generic tool keyso_api_request
Пример запроса:
Вызови tool keyso_api_request с такими аргументами:
{
"method": "GET",
"path": "/report/simple/domain_dashboard",
"query": {
"domain": "ozon.ru",
"base": "msk"
}
}Когда подходит:
endpoint известен заранее;
нужен полный ручной контроль над методом, path и query/body;
имя автосгенерированного tool неудобно искать.
2. Через автосгенерированный tool для конкретного endpoint
Пример запроса:
Вызови tool для /report/simple/domain_dashboard с аргументами:
{
"domain": "ozon.ru",
"base": "msk"
}Другой пример:
Вызови tool для /report/simple/keyword_dashboard с аргументами:
{
"keyword": "купить велосипед",
"base": "msk"
}Когда подходит:
endpoint понятен;
нужен более короткий вызов без ручной сборки
methodиpath.
3. Прямые user prompts без явного skill
Пример prompt:
Проверь domain=ozon.ru через Keys.so MCP и покажи основные SEO-метрики.Пример prompt:
Через Keys.so MCP сравни ozon.ru и wildberries.ru по органике.Что обычно происходит:
агент либо выберет подходящий автосгенерированный tool;
либо использует
keyso_api_request, если так быстрее или надёжнее.
Компромисс этого режима:
больше свободы;
меньше guardrails;
выше шанс использовать лишние endpoint'ы или потратить больше контекста, чем при работе через skills.
Частые сценарии
Ниже готовые prompts для повседневных задач.
1. Проверить домен
Рекомендуемый режим:
keyso-domain-dashboard-lite
Prompt:
Используй skill keyso-domain-dashboard-lite. Проверь domain=ozon.ru, base=msk и дай краткий SEO snapshot.2. Проверить домен и конкурентов
Рекомендуемый режим:
keyso-quick-audit
Prompt:
Используй skill keyso-quick-audit. Проверь domain=ozon.ru, base=msk и покажи organic competitors.3. Проверить ключ
Рекомендуемый режим:
keyso-quick-audit
Prompt:
Используй skill keyso-quick-audit. Проверь keyword=купить велосипед, base=msk и дай краткий snapshot.4. Проверить ключ и похожие запросы
Рекомендуемый режим:
keyso-quick-audit
Prompt:
Используй skill keyso-quick-audit. Проверь keyword=купить велосипед, base=msk и покажи похожие запросы.5. Найти top organic keywords домена
Рекомендуемый режим:
keyso-quick-audit
Prompt:
Используй skill keyso-quick-audit. Проверь domain=ozon.ru, base=msk и покажи top organic keywords.6. Сравнить два домена по органике
Рекомендуемый режим:
keyso-api-router
Prompt:
Используй skill keyso-api-router. Сравни ozon.ru и wildberries.ru по органике, base=msk.7. Сделать paid search обзор
Рекомендуемый режим:
keyso-api-router
Prompt:
Используй skill keyso-api-router. Сделай paid search обзор по domain=leroymerlin.ru, base=msk.8. Посмотреть backlinks домена
Рекомендуемый режим:
keyso-api-router
Prompt:
Используй skill keyso-api-router. Покажи backlinks profile для domain=ozon.ru, base=msk.9. Работать без skills, только через MCP
Рекомендуемый режим:
MCP only
Prompt:
Через Keys.so MCP проверь domain=ozon.ru, base=msk и покажи основные SEO-метрики.Примечания
Во всех запросах токен автоматически ставится в оба заголовка:
X-Keyso-TOKENиauth-token.Для операций с path-параметрами (например,
/serp/<id>) MCP-тулы ожидают аргументid.
Available Tools
151 toolskeyso_api_requestD
Universal request tool for Keys.so API
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body for write methods | |
| path | Yes | Path like /report/simple/domain_dashboard | |
| query | No | Query params object | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| method | Yes | ||
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it reveals none: no authentication/authorization notes, no rate-limit caveats, no mention that arbitrary mutating calls are possible, no response-shape hint. 'Request' gives no behavioral signal beyond what the name already implies.
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 single sentence is compact, but it is under-specification rather than useful conciseness. No structured, front-loaded guidance exists for a tool with 6 parameters and no annotations.
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 low-level universal API caller with no annotations, no output schema, and 6 parameters, this one-line description is inadequate. It fails to explain expected output format, error behavior, URL/path construction, or when raw requests are appropriate, leaving the agent poorly equipped.
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 83%, with path, query, body, token, and base_url already documented in the schema, so the description does not need to repeat them. It adds no parameter insight, but the schema carries the burden, keeping this at the baseline 3.
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 'Universal request tool for Keys.so API' indicates this executes arbitrary Keys.so API calls, which is meaningful against the many sibling endpoint-specific tools. However, it is largely a restatement of the name and does not state its role as a fallback/raw-call tool or what operations it supports beyond the schema's method enum.
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 is given about when to use this generic tool versus the many sibling tools, nor any statement that it should be used only for endpoints without a dedicated tool. The agent must infer all selection logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_delete_ai_tracker_idB
Трекер ИИ - удаление проекта
Method: DELETE
Path: /ai_tracker/
Пример запроса https://api.keys.so/ai_tracker/<id>
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the HTTP method (DELETE) and path, which imply destruction, but it does not state whether deletion is permanent, whether it cascades to associated data (prompts, competitors), or what authentication is required. This leaves significant behavioral ambiguity for a destructive operation.
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 lines: a clear Russian label, method+path, and an example request. All information is relevant and front-loaded; no fluff or redundant 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?
For a mutation tool with no annotations and no output schema, the description omits essential context: irreversibility, cascade effects, permission requirements, or what response to expect. The typical agent needs more than a path to safely invoke a delete operation.
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 100%, so the baseline is 3. The description's example URL with <id> adds minimal meaning beyond the schema, though it does reinforce that id is a path parameter. It does not explicitly explain that id is the AI tracker project ID, but the title provides that 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?
The description states a specific verb (delete) and resource (AI tracker project) in Russian ('удаление проекта' = delete project) plus the HTTP method and path. This clearly differentiates from sibling tools like keyso_delete_ai_tracker_id_prompts or keyso_delete_ai_tracker_id_competitors, which delete sub-resources rather than the project itself.
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 is given on when to use this tool versus alternatives. There is no mention of alternatives or exclusions; an agent must infer from the name and sibling list that this handles project-level deletion only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_delete_ai_tracker_id_competitorsC
Трекер ИИ - удаление конкурентов
Method: DELETE
Path: /ai_tracker//competitors
Пример запроса https://api.keys.so/ai_tracker/<id>/competitors
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| body | Yes | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does reveal that this is a DELETE operation and implies destructive removal of competitors, which is helpful. However, it does not explain whether all competitors are removed, whether the request body selects specific competitors, whether the operation is reversible, or what happens if the id is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the purpose, followed by method and path. The example URL is slightly redundant with the path, but the overall structure is clean and free of filler. It is not bloated, though it errs on the side of being too sparse.
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 tool with no annotations, no output schema, and a required but opaque JSON body, this description is incomplete. An agent cannot reliably construct a valid request body or understand the exact scope of the deletion. The method and path alone are not enough 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 100%, so the baseline is 3 even though the description itself adds little parameter detail. The path example demonstrates how id is used, but the required 'body' parameter remains semantically empty in both schema and description, leaving the actual competitor-deletion payload unspecified.
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 the action clearly: 'Трекер ИИ - удаление конкурентов' translates to 'AI Tracker - delete competitors', which identifies the verb (delete) and resource (competitors of an AI tracker). It is distinguishable from sibling delete_ai_tracker_id and delete_ai_tracker_id_prompts, though it does not explicitly contrast itself with post_ai_tracker_id_competitors or get_ai_tracker_id_competitors.
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 is given about when to use this tool versus alternatives, what prerequisites exist, or what body payload is required. The Method and Path lines are useful but do not constitute usage guidance for an agent deciding between this and sibling competitor-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_delete_ai_tracker_id_promptsC
Трекер ИИ - удаление промптов
Method: DELETE
Path: /ai_tracker//prompts
Пример запроса https://api.keys.so/ai_tracker/<id>/prompts
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It identifies a DELETE operation but does not state that deletion is permanent, what scope of data is removed, whether authentication is required, or how related data is affected. This is minimal rather than misleading.
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 short and leads with the core purpose, method, and path. The example request is useful and the text avoids unnecessary filler, though it could include a bit more explanatory context without becoming verbose.
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 destructive tool with no annotations and no output schema, the description lacks important context such as success/error behavior, return value, whether all prompts are deleted, and any warning about irreversibility. The example URL helps, but the description is not complete enough for an agent to fully anticipate the outcome.
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 100%, so the parameters are already documented. The description adds a concrete URL example showing the id in the path, but it does not meaningfully enrich the meaning of the id, body, token, or base_url parameters beyond what the schema already provides.
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 the action ('удаление промптов' — deleting prompts) and the resource (AI tracker prompts), along with the HTTP method and path, so an agent can understand what the tool does. It does not explicitly differentiate from sibling tools like delete_ai_tracker_id_prompts_group, but the path and noun are specific enough to avoid major confusion.
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 about when to use this tool versus the POST prompts, delete prompt group, or delete tracker siblings. The description only provides method/path facts and an example URL, leaving the agent to infer the appropriate context 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.
keyso_delete_ai_tracker_id_prompts_groupC
Трекер ИИ - удаление промптов из групп
Method: DELETE
Path: /ai_tracker//prompts/group
Пример запроса https://api.keys.so/ai_tracker/<id>/prompts/group
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| body | Yes | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only repeats the HTTP method and path. It fails to mention side effects, permission requirements, irreversibility, response behavior, or whether the group itself is deleted.
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 short and front-loaded with the purpose, followed by method, path, and an example URL. It contains no filler, though its brevity leaves important details unstated.
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 destructive DELETE operation with an unstructured body and no output schema, the description omits critical information: how to construct the body, how groups are identified, and what response is expected. An agent would likely fail to call it correctly without additional documentation.
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 100%, so the baseline is 3. However, the 'body' parameter is described only as 'JSON body' with no structure or meaning, and the description adds no clarification about what group or prompt identifiers the body should contain.
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 ('удаление' / delete), a resource (prompts within groups of an AI tracker), and provides the endpoint path. It doesn't explicitly contrast with sibling tools like keyso_delete_ai_tracker_id_prompts, but the name and path make the targeted operation reasonably clear.
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 about when to use this tool versus deleting prompts without a group, or when a group-scoped deletion is appropriate. No prerequisites, context cues, or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_delete_clustering_uidC
Кластеризация - удаление проекта
Method: DELETE
Path: /clustering/
Пример запроса https://api.keys.so/clustering/b8095aa8g82defb29f9a1660640fa7f9
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | in: path | Идентификатор отчёта | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose that this is a DELETE operation and that it removes a clustering project, but it does not state whether deletion is permanent, what consequences it has, whether special permissions are needed, or what the response looks like.
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 short and front-loaded with the core intent, followed by method, path, and an example. No unnecessary filler is present, though the 'Кластеризация - удаление проекта' line is more of a title than a full explanatory sentence.
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 delete operation with one required parameter, the description gives enough to make the request. However, with no annotations and no output schema, it omits response/status information and any note about irreversibility or authorization, and it slightly conflates 'project' with 'report'.
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 100%, so the uid parameter is already documented as a path parameter. The description adds a concrete path template and example URL, which helps clarify the uid placement, but it does not add meaningful semantics for token or base_url beyond what the schema already provides.
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 clearly states the operation is deleting a clustering project and provides the HTTP method and path. It is specific enough to distinguish from the clustering creation/list/get siblings, though it does not explicitly name any sibling alternatives.
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 gives no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The delete intent is implied by the wording, but the description does not explain the conditions or context for using it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_delete_monitoring_idA
Мониторинг позиций - удаление проекта
Method: DELETE
Path: /monitoring/
Пример запроса https://api.keys.so/monitoring/<id>
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. The DELETE method and 'удаление' make the destructive nature and target clear. It does not disclose permanence, related-data effects, authentication needs, or response behavior, which would improve transparency for a delete operation.
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 compact and front-loaded, containing only the essential operational facts: purpose, HTTP method, endpoint path, and an example request. Every line earns its place with no redundant filler.
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 one-required-parameter DELETE endpoint with a fully covered schema, the provided method, path, and example are enough to call it correctly. The main gaps are the lack of response/status expectations and no mention of destructive side effects, which matter given there is no output schema or annotations.
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 100%, so the input schema already documents id, body, token, and base_url. The description adds only an example URL and does not clarify the id format or semantics beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'удаление проекта' (deletion of a project) under the monitoring domain and specifies the HTTP method DELETE and path /monitoring/<id>. This makes the action and resource unambiguous and distinguishes it from sibling tools that create, update, or read monitoring 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?
The intended use is implied by the delete verb and the path, so an agent can infer this tool removes a monitoring project. However, there is no explicit when-to-use guidance, no mention of alternatives (e.g., patch to update), and no prerequisites such as the project needing to exist or deletion being permanent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_delete_serp_idB
Онлайн парсер выдачи - удаление проекта
Method: DELETE
Path: /serp/
Пример запроса https://api.keys.so/serp/<id>
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of conveying the destructive behavior, and it does by saying 'deletion of a project' and specifying Method: DELETE. It does not, however, state whether deletion is permanent, whether associated SERP data is removed, what authorization is needed, or what response is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: it states the purpose first, then the method and path, then an example request. The example URL repeats the path, but this redundancy is minor and helps make the endpoint immediately actionable.
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 delete operation with one required parameter and no output schema, the method, path, and target resource are enough to understand the core call. It is incomplete, though, because it does not mention response/error behavior, authorization requirements, or any effect beyond deleting the project.
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 100%, so the baseline is 3. The description adds the path template /serp/<id>, confirming that the id parameter identifies the resource in the URL, but it does not add meaningful semantics beyond what the input schema already provides.
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 clearly states this tool deletes a project ('удаление проекта') and specifies the HTTP method DELETE and path /serp/<id>, so an agent can identify the target resource. It is not a 5 because it does not explicitly distinguish this SERP-project deletion from sibling delete tools such as keyso_delete_wordstat_delete_project or keyso_post_projects_delete, though the path helps disambiguate.
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 intended use is implied: call this tool when you need to delete a specific SERP/project by its id. However, there is no explicit when/when-not guidance, no mention of alternatives, and no cautionary context about destructive consequences for a tool with many sibling delete operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_delete_wordstat_delete_projectC
Онлайн парсер Wordstat - удаление проекта
Method: DELETE
Path: /wordstat/delete-project
Пример запроса https://api.keys.so/wordstat/delete-project
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral transparency burden. It reveals that the operation is destructive via 'DELETE' and 'удаление', but it does not disclose what exactly is removed, whether deletion cascades to related data, whether authentication is required, or whether the operation is idempotent.
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 short and front-loaded, with no wasted words. However, the brevity is closer to under-specification than effective conciseness, because it omits the essential request-body details needed to invoke the tool correctly.
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?
Given no annotations, no output schema, and a schema whose body has no defined properties, the description is not complete enough. The endpoint is clear, but the absence of any information about how to identify the project and what the response will be leaves a significant gap for an agent.
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 schema describes token and base_url, but the critical body parameter is an empty 'additionalProperties' object with no documented project identifier. The description does not explain how or where the project to delete is specified, so an agent cannot determine the required request payload.
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 concrete action ('удаление проекта' – deleting a project) and the resource it acts on, reinforced by the explicit DELETE method and path. Among sibling Wordstat tools, this is clearly distinct from creating/updating projects and from deleting words.
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 gives no guidance on when to choose this tool instead of related tools such as keyso_post_wordstat_create_project, keyso_post_wordstat_id_update_project, or keyso_delete_wordstat_delete_words. Usage context is only implied by the DELETE verb and endpoint path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_delete_wordstat_delete_wordsC
Онлайн парсер Wordstat - удаление слов
Method: DELETE
Path: /wordstat/delete-words
Пример запроса https://api.keys.so/wordstat/delete-words
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses the HTTP method DELETE and the endpoint, which indicates a destructive operation, but it does not state what is actually deleted, whether the action is irreversible, or what authentication/payload requirements exist. For a delete operation, this is insufficient.
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 very short and front-loads the intended action before giving method, path, and an example URL. It contains no wasted words and is easy to scan. However, the brevity comes at the cost of omitting behavioral and payload details, so it is efficient rather than well-rounded.
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?
There is no output schema and no annotations, and the main body parameter is left unspecified, so an agent cannot know what payload to send. The example URL confirms the endpoint but not the required request body, authentication context, or response behavior. This is inadequate for a destructive operation.
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 100%, so the baseline is 3; token and base_url are adequately described as overrides in the schema. However, the main body parameter has an empty object schema with only 'JSON body', and the description does not explain what the body must contain (e.g., word IDs or project context). The description adds no parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description contains 'удаление слов' (delete words), naming the action and the Wordstat resource, and the path makes it clear this targets /wordstat/delete-words. It does not explicitly contrast with sibling tools like keyso_delete_wordstat_delete_project or keyso_post_wordstat_id_update_words, so it stops short of full differentiation. Clear overall, but not sibling-aware.
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 provides no guidance on when to use this tool versus the many sibling Wordstat tools, and no exclusions or prerequisites are mentioned. The example request shows how to call the endpoint, but not when it should be chosen over alternatives. This is effectively no usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_ai_trackerC
Трекер ИИ - список проектов
Method: GET
Path: /ai_tracker
Пример запроса https://api.keys.so/ai_tracker
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| search | No | in: query | Поиск по названию проекта или бренду | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral disclosure burden. It does state Method: GET, which implies a read-only operation, and provides a request example, but it does not disclose authentication requirements, pagination behavior, response shape, or any other behavioral traits an agent would need to anticipate.
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 brief and front-loads the core purpose before giving method, path, and an example. Every line serves a purpose with no filler, though the summary line is more of a fragment than a complete sentence.
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 no output schema and no annotations, the description is too sparse to be fully actionable. It omits return-value details, authentication context, pagination defaults, and any guidance on how the optional parameters affect the returned project list.
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 100%, so the input schema already documents all parameters including page, per_page, token, search, and base_url. The description adds no additional parameter meaning beyond the example URL, and since the schema handles semantics, a baseline score of 3 is appropriate.
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 identifies the resource ('/ai_tracker') and the result ('список проектов'), and the Method: GET line supplies the verb. It is clear enough to understand that this tool lists AI Tracker projects, and it is implicitly distinct from siblings like get_ai_tracker_state or post_ai_tracker, though it does not explicitly name any 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?
No when-to-use guidance is provided. The description gives endpoint details and an example URL but does not explain when this tool should be selected over related tools, when not to use it, or how it fits into a workflow such as listing projects before inspecting a specific one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_ai_tracker_id_chartB
Трекер ИИ - данные для графика
Method: GET
Path: /ai_tracker//chart
Получение агрегированных данных по позициям фраз проекта для графика. Пример запроса: https://api.keys.so/ai_tracker/<id>/chart?date_from=2025-10-01&date_to=2025-10-06&per_page=25&page=1&systems[]=6&systems=7&groups[]=— без группы —
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| groups | No | in: query | Группы | |
| date_to | No | in: query | Конечная дата периода | |
| systems | No | in: query | Массив идентификаторов систем ИИ:<br> `1` - GigaChat<br> `3` - DeepSeek<br> `6` - OpenAI<br> `7` - Grok | |
| base_url | No | Override API base URL | |
| date_from | No | in: query | Начальная дата периода |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The description states it is a GET request returning aggregated data for a chart, but it does not disclose pagination behavior, default date ranges, whether systems/groups filters are optional, authentication requirements, or any rate limits. For a read tool with no annotations, this is a meaningful gap even though the method is apparent.
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 short, but its structure is awkwardly front-loaded with a Russian fragment ('Трекер ИИ - данные для графика') followed by method/path lines, then a complete sentence and a long example URL. It is not verbose, but the example URL consumes space without much incremental guidance, and the title repetition does not earn 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 GET chart endpoint with no output schema and no annotations, the description covers the endpoint, method, and a sample request, and the schema covers all parameters with 100% description coverage. However, it does not explain the response shape, chart series semantics, how pagination works, or whether a tracker must be started/built before calling, which an agent would reasonably need for a correct call.
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 100%, but the description adds value by clarifying systems values with named AI models (1=GigaChat, 3=DeepSeek, 6=OpenAI, 7=Grok) and showing the systems[] array format in the example URL. However, it adds little to date_from/date_to beyond 'start/end date of period' and does not clarify the groups parameter format (e.g., the example uses '— без группы —'), so semantics are not fully fleshed out.
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 the verb (получение/retrieve), the resource (aggregated data on phrase positions for a project's AI tracker chart), and the endpoint path. It is clearly distinguishable from sibling tools like keyso_get_ai_tracker_id_report (report data) or keyso_get_monitoring_id_report_chart (monitoring chart). However, the primary phrase is repetitive with the title and the first line is fragmentary, which slightly weakens clarity.
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 indicates that it returns aggregated data for a chart and shows a sample request with date range, pagination, and system filters. It does not explicitly state when to choose this tool over sibling alternatives such as keyso_get_ai_tracker_id_report or keyso_get_ai_tracker_id_mentions, nor does it give exclusions or prerequisites (e.g., tracker must exist or be built). Usage context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_ai_tracker_id_competitorsB
Трекер ИИ - видимость по конкурентам
Method: GET
Path: /ai_tracker//competitors
Возвращает список конкурентов и их видимость по системам ИИ Пример запроса https://api.keys.so/ai_tracker/<id>/competitors
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| page | No | in: query | Порядковый номер страницы результатов | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| search | No | in: query | Поиск по брендам конкурентов | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does disclose the HTTP method (GET) and that the operation returns data, signaling a read-only call, but it does not mention pagination behavior, output format, auth requirements, or any response 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?
The description is compact and front-loaded: it gives the AI-tracker context, method, path, purpose, and an example URL. It contains minimal redundancy and is easy to scan, though the title line and return line are somewhat repetitive.
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 tool with seven parameters and no output schema, the description is thin. It states the high-level return value but does not explain the output structure, pagination defaults, filtering/search behavior, or how this endpoint fits into the broader AI-tracker workflow.
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 100%, so the parameter documentation already explains each field. The description adds no extra parameter semantics beyond the endpoint example, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource and purpose: it returns a list of competitors and their visibility across AI systems via GET /ai_tracker/<id>/competitors. It is specific enough to distinguish from related competitor endpoints by method and path, though it does not explicitly contrast itself with sibling tools.
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 is provided. The description does not mention alternatives, prerequisites, or scenarios where another AI-tracker endpoint would be more appropriate, leaving the agent to infer usage from the tool name and path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_ai_tracker_id_datesB
Трекер ИИ - все даты, по которым есть данные по фильтру ИИ и папок
Method: GET
Path: /ai_tracker//dates
Пример запроса https://api.keys.so/ai_tracker/<id>/dates?groups[]=— без группы —&systems[]=6
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| groups | No | in: query | Группы | |
| systems | No | in: query | Массив идентификаторов систем ИИ:<br> `1` - GigaChat<br> `3` - DeepSeek<br> `6` - OpenAI<br> `7` - Grok | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does say 'Method: GET' and that it returns dates with available data, but it does not describe authentication requirements, response format, pagination, error behavior, or what happens when no data matches the filters. For a simple read endpoint this is somewhat informative, but still limited.
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 compact, front-loaded with the core purpose, and includes method, path, and a working example URL. Every line contributes useful information without unnecessary elaboration.
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 GET dates endpoint with schema-complete parameters, the description plus example is nearly sufficient for invocation. However, no output schema exists and the description does not clarify response format, sort order, or how the date list should be used alongside sibling report/chart tools. This leaves some contextual gaps for an agent deciding how to use the result.
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 100%, so the baseline is 3. The description adds a concrete example showing groups[]=— без группы — and systems[]=6, which demonstrates query array syntax and hints at valid group values. However, it does not add substantial meaning beyond the schema's parameter descriptions.
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 identifies a clear resource ('AI Tracker') and action: retrieve all dates for which data exists under the AI/folder filter. The explicit path /ai_tracker/<id>/dates and example query help an agent understand the endpoint's scope. It does not explicitly differentiate from sibling AI Tracker endpoints like entity or chart, but the purpose is specific enough.
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 is given for when to use this tool versus alternatives such as keyso_get_ai_tracker_id_entity, keyso_get_ai_tracker_id_report, or keyso_get_ai_tracker_id_chart. The example implies query parameters for filtering, but there is no mention of prerequisites, expected use cases, or situations where a different tool should be chosen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_ai_tracker_id_entityA
Трекер ИИ - сущность проекта
Method: GET
Path: /ai_tracker//entity
Возвращает полное описание сущности проекта, включая настройки поиска, расписания обновления и оповещений. Пример запроса https://api.keys.so/ai_tracker/<id>/entity
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It explicitly states 'Method: GET', gives the full path, and says the response includes search settings, update schedules, and notifications, making clear this is a read-only entity lookup. It does not discuss auth or rate limits, but the schema already exposes token and base_url parameters for authentication.
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 compact and well structured: a resource label, method/path, one sentence about return content, and an example URL. Every element is useful, and the key facts appear early.
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 GET entity endpoint with no output schema, the description is reasonably complete: it provides method, path, example, and return-value categories. It omits response shape details, but those are not essential for correctly invoking this low-complexity read operation.
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 100% for id, token, and base_url, so the baseline of 3 applies even though the description adds no parameter-specific meaning. The path template partially reinforces the role of id.
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 clearly states the action and resource: it 'returns the full description of the project entity' and enumerates content such as search settings, update schedules, and notifications. This distinguishes it from chart/report/dates siblings in substance, though it does not explicitly name a competing tool.
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 use case is implied: if the agent needs the full project-entity description, this is the endpoint. However, there is no explicit when-to-use or when-not-to-use guidance, and no alternatives are mentioned despite many closely related AI-tracker sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_ai_tracker_id_mentionsB
Трекер ИИ - все упоминания
Method: GET
Path: /ai_tracker//mentions
Возвращает список всех упоминаний, включая информацию о времени нахождения и типе упоминания. Пример запроса https://api.keys.so/ai_tracker/<id>/mentions
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| last | No | in: query | Вернуть упоминания только по последнему съему | |
| page | No | in: query | Порядковый номер страницы результатов | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| search | No | in: query | Поиск по ответам | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses that this is a GET read operation returning a list with time and type fields, which is useful, but it omits pagination behavior, response shape, auth requirements, and how the `last` or `filter` parameters affect results.
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 compact and includes essential HTTP details plus an example URL. There is mild redundancy between the opening title, the path declaration, and the example request, but overall the description stays focused and readable.
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 has eight parameters, no output schema, and no annotations, yet the description only covers the basic list-returning behavior. Missing context includes pagination semantics, filtering, auth requirements, and what the returned mention objects contain beyond time and type.
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 100%, so the schema already documents all eight parameters thoroughly. The description adds no additional parameter-level meaning beyond the schema, meeting the baseline but not exceeding it.
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 clearly names the resource (AI tracker mentions), states the HTTP method and path, and says it returns a list of all mentions with time and mention type. This distinguishes it from sibling AI-tracker tools like `keyso_get_ai_tracker_id_entity`, `chart`, `report`, and `dates`.
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 gives no guidance on when to choose this tool over alternative AI-tracker endpoints. It does not state use cases, exclusions, or relationships to sibling tools, leaving the agent to infer appropriate usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_ai_tracker_id_reportB
Трекер ИИ - данные для таблицы проекта
Method: GET
Path: /ai_tracker//report
Получение отчета по упоминаниям промптов за указанный период с фильтрацией системам ИИ и папкам. Пример запроса: https://api.keys.so/ai_tracker/<id>/report?date_from=2025-10-01&date_to=2025-10-06&per_page=25&page=1&systems[]=6&systems[]=7&groups[]=— без группы —
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| page | No | in: query | Порядковый номер страницы результатов | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| groups | No | in: query | Группы | |
| search | No | in: query | Поисковый запрос по промптам | |
| date_to | No | in: query | Конечная дата периода | |
| systems | No | in: query | Массив идентификаторов систем ИИ:<br> `1` - GigaChat<br> `3` - DeepSeek<br> `6` - OpenAI<br> `7` - Grok | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице | |
| date_from | No | in: query | Начальная дата периода |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It does disclose the read-only GET nature and provides a concrete example URL demonstrating filtering and pagination behavior, which is genuinely useful. But it omits response format, pagination semantics of the returned data, error behavior, and auth requirements — for an unannotated tool this is a noticeable gap.
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 purpose sentence is reasonably front-loaded and the example URL earns its place. However, «Method: GET / Path: /ai_tracker/<id>/report» largely duplicates what the tool name and the schema's 'in: path (auto-detected)' already communicate, and the raw <br> HTML tag is noise. Length is acceptable but not tight.
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 tool with 11 parameters, no annotations, and no output schema, the description covers purpose, method, and a worked example but leaves meaningful gaps: no hint of the response shape, the filter parameter references a documentation section an agent cannot access, and there is no guidance on how this report differs from sibling report/mentions/chart endpoints. Adequate for basic invocation, incomplete for fully confident use.
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 100%, so the baseline is 3, and the description itself does not restate parameter meanings. The example adds real value beyond the schema: it shows the array query syntax (systems[]=6&systems[]=7), the special groups value «— без группы —», and how date_from, date_to, per_page, and page combine, none of which the one-line schema descriptions convey.
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: «Получение отчета по упоминаниям промптов за указанный период с фильтрацией системам ИИ и папкам» — clearly identifies this as a period-filtered report on AI prompt mentions. The header «данные для таблицы проекта» adds placement context, and the GET /ai_tracker/<id>/report path reinforces the resource. It does not explicitly distinguish itself from sibling endpoints like keyso_get_ai_tracker_id_mentions or keyso_get_ai_tracker_id_chart, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied rather than stated: the header implies it feeds the project table, and the example query implies it is for period-based mention reporting with system/folder filters. However, there is no explicit when-to-use guidance, no exclusions, and no mention of alternatives such as keyso_get_ai_tracker_id_chart or keyso_get_ai_tracker_id_mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_ai_tracker_stateB
Трекер ИИ - прогресс обновления проектов
Method: GET
Path: /ai_tracker/state
Пример запроса https://api.keys.so/ai_tracker/state?ids[]=123&ids[]=456&ids[]=789
| Name | Required | Description | Default |
|---|---|---|---|
| ids[] | Yes | in: query | Список идентификаторов проектов для получения прогресса | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavior. It indicates a GET request, implying read-only, but does not mention authentication requirements, rate limits, error handling, or the response structure. The description is confined to request details and adds little behavioral context beyond the method.
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 concise, front-loaded with the purpose, and includes the method, path, and an example in just three lines. There is no redundant text, and it is appropriately sized for a simple GET endpoint.
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 no output schema, the description should explain what the response contains (e.g., progress percentage, status) and when to use this endpoint relative to others. It provides none of that, leaving the agent to infer the response format and the tool's role in the AI tracker workflow.
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 100% as each parameter has a description. The tool description adds value by showing an example request with the array syntax for ids[] (ids[]=123&ids[]=456), clarifying how to pass multiple IDs. The token and base_url parameters are standard and adequately described in the schema, so the example fills a practical 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 the tool's purpose as 'Трекер ИИ - прогресс обновления проектов' (AI tracker - progress of project updates) and provides the HTTP method and path. This is a clear verb-resource pairing, but it does not explicitly differentiate it from sibling tools like keyso_get_ai_tracker_id_entity or keyso_get_ai_tracker_id_report, so it lacks sibling 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?
The description provides no guidance on when to use this tool versus alternatives. It only shows an example request and does not mention conditions like 'after starting an update' or which other endpoints to consider for different data. This is a significant gap for an agent deciding between many AI tracker endpoints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_clustering_listB
Список проектов кластеризатора
Method: GET
Path: /clustering/list
Пример запроса https://api.keys.so/clustering/list?sort=access_date%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| isMain | No | in: query | **Список проектов:**<br> `true` — только созданные вручную<br> `false` — все проекты, включая созданные автоматически родительскими типами проектов<br><br> **Иерархия проектов:**<br> `Мониторинг » Кластеризатор » Выдача | Wordstat` | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does disclose 'Method: GET' and provides an example request, implying a read-only list operation. However, it does not mention response shape, pagination behavior, authentication expectations, or rate-limit considerations.
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 compact and front-loaded: a one-line purpose statement, method/path, and a concrete request example. There is no filler or redundant repetition of the schema.
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 GET-list endpoint with complete schema documentation, this is minimally adequate for constructing a request. However, there is no output schema or annotations, and the description does not describe the returned project objects or related clustering workflow steps, leaving some context 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?
All 6 parameters are fully described in the schema (100% coverage), so the baseline applies. The example URL demonstrates usage of sort, page, and per_page, adding minor concrete value, but it does not add meaning beyond what the schema descriptions already provide for token, base_url, or isMain.
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 opening phrase 'Список проектов кластеризатора' identifies the action (list) and resource (clustering projects), and the explicit 'Method: GET /clustering/list' makes the operation unmistakable. It does not directly contrast with sibling tools like keyso_get_projects or keyso_get_clustering_state_uid, but the endpoint path and resource scope are specific enough to distinguish.
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 is given about when to use this tool versus related tools such as keyso_get_projects, keyso_get_clustering_state_uid, or keyso_post_clustering. The description states the endpoint but never explains when to prefer it or when to use a sibling instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_clustering_node_uidB
Получение папок кластеризации
Method: GET
Path: /clustering/node/
Пример запроса https://api.keys.so/clustering/node/59f2bо9004be5449891467f07a4eb5a9
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | in: path | Идентификатор отчёта | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral burden. It explicitly declares 'Method: GET' and uses 'Получение' (retrieval), which signals a read-only operation, and gives an example request. However, it does not mention auth requirements, response format, error behavior, 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?
The description is short and well-structured: purpose comes first, followed by method, path, and example. Every line earns its place, with no unnecessary filler.
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 GET with one required parameter, the description gives the essential endpoint mechanics: method, path, and example. However, there is no output schema and no description of what the returned 'folders' data looks like, nor any guidance on when this endpoint should be preferred over related clustering 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?
Schema description coverage is 100%, and the schema already explains uid, token, and base_url. The description adds a URL template and a concrete example for uid, which helps confirm how the path parameter is used, but it does not add significant meaning beyond 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?
The description states a specific action ('Получение' — retrieving) and resource ('папок кластеризации' — clustering folders), and gives the API path. It is clear, but it does not explicitly differentiate this from the very similar sibling keyso_get_clustering_node_uid_id_keywords.
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 usage guidance is provided: there is no statement of when to use this tool versus alternatives, no exclusions, and no context about which workflow requires it. The sibling list contains many similar clustering endpoints, so an agent gets no selection criteria from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_clustering_node_uid_id_keywordsD
Результат кластеризации, ключи в папке
Method: GET
Path: /clustering/node///keywords
Пример запроса https://api.keys.so/clustering/node/59f2b99604be5449891467f07a4eb5a7/46984224/keywords?sort=wsk%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path | Идентификатор папки | |
| uid | Yes | in: path | Идентификатор отчёта | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not mention pagination, sorting behavior, filtering capabilities, response structure, or what 'keys' means. The example URL hints at query parameters but does not explain expected behavior or outcomes.
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 extremely short but under-specified rather than concise. It consists of a vague phrase and a raw API path/example, lacking structure and front-loaded key information. It does not effectively communicate the tool's purpose or usage.
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 tool with 8 parameters, no output schema, and no annotations, the description is severely incomplete. It does not explain what the response contains, how filters work, or how to construct a valid request beyond the example. An agent would have to infer most behavior from the schema and example, which is insufficient.
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 100%, so the baseline is 3. The description does not add any semantic meaning beyond the schema; it only shows an example URL with sort and pagination parameters, which is not an explanation. The parameter descriptions in the schema are self-explanatory, so the description adds minimal value.
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 'clustering result, keys in the folder' which is vague and lacks a clear verb or resource description. It does not explicitly say it retrieves keywords for a specific node; the name implies it, but the text is ambiguous and could be interpreted as a label rather than an action. It does not distinguish this from sibling tools like keyso_get_clustering_node_uid.
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 alternatives. No mention of prerequisites, when it is appropriate, or which sibling tools to choose instead. The description provides only a path and example URL, with no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_clustering_state_uidB
Статус обработки отчета
Method: GET
Path: /clustering/state/
Пример запроса https://api.keys.so/clustering/state/0906fcc65ea67fcc8f090bd00ade39ada
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | in: path | Идентификатор отчёта | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It correctly indicates a GET request (read-only) and shows an example URL, but does not describe the response format (e.g., status codes, fields like 'processing', 'completed', 'error'), whether it requires authentication beyond the token parameter, or any polling semantics. The method and path are disclosed, but critical behavior such as expected response structure is missing.
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 very short and front-loads the purpose ('Статус обработки отчета'), followed by method, path, and an example. It avoids unnecessary words and is efficiently structured, though it could add a sentence on usage without becoming verbose.
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 status-checking tool, the description is incomplete. It lacks information about what the response contains (no output schema), how the UID is obtained (e.g., from a prior clustering creation), and when to use it relative to other clustering operations. The agent may not know if the response is a JSON object with status fields or how to interpret it. More context is needed for reliable 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 100%, so all parameters (uid, token, base_url) are documented in the schema. The description adds an example URL that illustrates the UID format (hex string), which is mildly helpful, but does not enrich the parameter semantics beyond what the schema already provides. Baseline 3 is appropriate given full schema coverage.
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 clearly states the tool's purpose as 'report processing status' and provides the HTTP method and path. The name and context make it distinct from sibling clustering tools (e.g., post_clustering, delete_clustering_uid, get_clustering_list), and it correctly identifies the resource (clustering state) and the required UID parameter.
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 provides no guidance on when to use this tool versus other clustering endpoints. It does not mention that it should be used after submitting a clustering job, nor does it reference any alternatives like keyso_post_clustering or keyso_get_clustering_list. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_limits_allB
Лимиты по инструментам
Method: GET
Path: /limits/all
Пример запроса https://api.keys.so/limits/all
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the HTTP method, path, and an example request, which conveys this is a read-style call, but it does not mention authentication implications, rate-limit behavior, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the essential resource, method, path, and example request. It avoids filler, though the Russian noun phrase rather than a proper sentence slightly reduces clarity for non-Russian agents.
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 zero-required-parameter GET tool, the description is minimally sufficient: it provides the endpoint and example URL. However, with no output schema and no usage guidance, it leaves the agent to infer what the returned limits represent and when to prefer this over sibling limit-related 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?
Schema description coverage is 100%, so token and base_url are already documented in the input schema. The description adds no additional meaning about these parameters, which is acceptable given full schema coverage.
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 identifies the resource as tool limits ('Лимиты по инструментам') and gives the exact endpoint path /limits/all with GET method, so an agent can infer this retrieves all tool limits. It doesn't explicitly use an imperative verb or contrast with sibling tools, but the endpoint and example URL make the purpose clear.
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 alternatives such as keyso_get_monitoring_id_limits, and no mention of prerequisites or context. The intended use is only implied by the endpoint name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_monitoringC
Мониторинг позиций - список проектов
Method: GET
Path: /monitoring
Пример запроса https://api.keys.so/monitoring
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| search | No | in: query | Поиск по названию проекта и ключевым словам | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It discloses that this is a GET request and gives an example URL, implying a read-only list operation. However, it does not describe the response shape, whether pagination behavior is relevant, authentication requirements, or any other behavioral characteristics beyond the route.
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 very short and includes only the endpoint summary, HTTP method, path, and an example request. There is no fluff, and the key intent is front-loaded, though the brevity leaves behavioral gaps.
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 no output schema and no annotations, the description should explain what the list contains, how results are returned, and how pagination works. It only gives a minimal phrase and an example URL, which is insufficient for a 6-parameter tool with many sibling endpoints.
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 100%, so all six parameters are already documented in the input schema. The description itself adds no parameter-level meaning, which is acceptable at baseline level, but it does not go beyond 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?
The description states a clear resource: 'Мониторинг позиций - список проектов' (position monitoring - list of projects), with GET /monitoring, so an agent can tell it is a list operation. It does not explicitly differentiate it from sibling tools like keyso_get_projects or other monitoring endpoints, so it is clear but not fully distinguishing.
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 is given about when to use this tool versus alternatives such as keyso_get_projects, keyso_get_monitoring_state, or keyso_get_monitoring_id_* endpoints. The HTTP path is provided but not framed as usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_monitoring_id_datesA
Мониторинг позиций - все даты, по которым есть данные по фильтру регионов
Method: GET
Path: /monitoring//dates
Пример запроса https://api.keys.so/monitoring/<id>/dates?searchSettings[]={"regionId":38,"engine":0}
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL | |
| searchSettings[] | No | in: query | JSON строка с настройками.<br> - `regionId` — ID региона:<br> [ID региона для Яндекс](https://yandex.ru/dev/xml/doc/ru/reference/regions) или [ID региона для Google](https://analyticscodes.com/) - `engine` — ID поисковой системы:<br> `0` — Yandex Desktop `1` — Yandex Mobile `3` — Google Mobile `4` — Google Desktop - `language` — ID языка (опционально, пока только `0`) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose useful behavioral traits: the HTTP method (GET), the path template `/monitoring/<id>/dates`, and the core trait that only dates with existing data are returned. However, it omits response format, error behavior, and auth prerequisites, which matters more given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: one purpose sentence, then method/path, then a single example. Every element earns its place and there is no redundancy. The dash-constructed first sentence is slightly telegraphic but efficient.
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 endpoint with 1 required parameter and full schema coverage, the description covers purpose, path, and example invocation. The main gap is the exact response shape, which is not described and there is no output schema, though 'all dates' gives a reasonable hint. The endpoint's simplicity limits the impact of this omission.
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 100%, and the schema's searchSettings[] description is already detailed (regionId, engine ID mapping, optional language). The description adds concrete value with a real request example, `searchSettings[]={"regionId":38,"engine":0}`, which clarifies the exact JSON string format for the query parameter beyond what the schema states.
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 identifies a specific resource (dates for position monitoring) and scope (filtered by region): 'все даты, по которым есть данные по фильтру регионов'. It distinguishes itself from the many monitoring_id_* siblings by being clearly about date availability rather than reports, limits, or entities. However, the verb is only implied, and it doesn't explicitly contrast with a sibling like keyso_get_monitoring_id_report.
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 use case is implied: call this to discover which dates have position data under a given region filter. The Method/Path block and the example request show how to invoke it. But there is no explicit statement of when to prefer it over alternatives or when not to use it, and no relation to sibling report endpoints is explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_monitoring_id_entityB
Мониторинг позиций - сущность проекта
Method: GET
Path: /monitoring//entity
Возвращает полное описание сущности проекта, включая настройки поиска, расписания обновления, оповещений и дочерних проектов. Пример запроса https://api.keys.so/monitoring/<id>/entity
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the HTTP method (GET), the path, and the kind of content returned, which implies a read-only operation. However, it does not go deeper into response format, authentication requirements, pagination, or error behavior, leaving some behavioral gaps.
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 compact and front-loaded with the tool's purpose, followed by method, path, return summary, and an example URL. There is minimal redundancy, though the opening 'Мониторинг позиций - сущность проекта' is somewhat label-like and could be merged more elegantly.
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 GET with one required parameter and no output schema, the description gives enough to attempt a call: path, example, and return content categories. However, it lacks response format details and any mention of authentication requirements or error cases, which would make it fully self-sufficient for an agent.
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 100%, so the baseline is 3. The description does not add semantic meaning for `id`, `token`, or `base_url` beyond what the schema states; the path example hints at how `id` is used, but the parameter descriptions themselves remain thin.
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 clearly states the tool returns a full entity description for a monitoring project, naming the resource (`/monitoring/<id>/entity`) and the verb (GET). It lists what the response includes (search settings, update schedules, alerts, child projects), which is specific enough to distinguish it from report/date/limit siblings, though it never names a sibling 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?
There is no explicit guidance about when to use this tool versus alternatives such as `keyso_get_monitoring`, `keyso_get_monitoring_id_limits`, or `keyso_get_monitoring_id_report`. The phrase 'full description of the project entity' implies usage for retrieving entity configuration, but no when-to-use or when-not-to-use conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_monitoring_id_limitsC
Мониторинг позиций - необходимые лимиты для обновления
Method: GET
Path: /monitoring//limits
Количество необходимых лимитов для обновления, если не указаны данные - всего проекта. Пример запроса https://api.keys.so/monitoring/<id>/limits?searchSettings[]={"regionId":38,"engine":0}&aids[]=-1
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| aids[] | No | in: query | Массив ID папок кластеризатора | |
| base_url | No | Override API base URL | |
| searchSettings[] | No | in: query | JSON строка с настройками.<br> - `regionId` — ID региона:<br> [ID региона для Яндекс](https://yandex.ru/dev/xml/doc/ru/reference/regions) или [ID региона для Google](https://analyticscodes.com/) - `engine` — ID поисковой системы:<br> `0` — Yandex Desktop `1` — Yandex Mobile `3` — Google Mobile `4` — Google Desktop - `language` — ID языка (опционально, пока только `0`) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral context. It states it is a GET request (implying read-only) and mentions the default behavior of returning limits for the whole project when no data is provided. However, it does not disclose authentication requirements, rate limits, error conditions, or the exact response format beyond a count. This is minimal disclosure.
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 compact, containing a brief purpose statement, the method and path, a clarification about default behavior, and an example. The information is front-loaded with the main purpose first. It is well-structured and avoids 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?
For a simple GET endpoint with five parameters (all documented in schema) and no output schema, the description provides the essential context: the endpoint, method, and an example. However, it does not specify the response format beyond 'number of limits' or address authentication requirements. While adequate for a basic read operation, it leaves some 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?
Schema coverage is 100%, so the schema already documents all parameters. The description adds a practical example with searchSettings and aids, and clarifies the default behavior when these are omitted. This adds a small amount of value beyond the schema, but does not deeply explain each parameter's meaning or constraints.
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 ('get limits') and resource ('monitoring positions'), and provides the exact endpoint path and HTTP method. It distinguishes itself from other monitoring tools by focusing on 'necessary limits for updating' but does not explicitly contrast with sibling tools. It is clear enough, though the term 'limits' could be more precise.
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 does not specify when to use this tool versus other monitoring tools. It only notes that if no data is provided, limits for the entire project are returned, which is more about parameter behavior than usage guidance. There is no mention of prerequisites, exclusions, or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_monitoring_id_reportB
Мониторинг позиций - данные для таблицы проекта
Method: GET
Path: /monitoring//report
Получение отчета по позициям проекта за указанный период с фильтрацией по регионам, папкам и поисковым системам. Пример запроса: https://api.keys.so/monitoring/146/report?dateFrom=2025-04-09&dateTo=2025-04-16&per_page=25&page=1&sort=superwsk|desc&searchSettings[]={"regionId":38,"engine":0}
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| aids | No | in: query | Массив папок кластеризатора | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| dateTo | Yes | in: query | Конечная дата периода в формате YYYY-MM-DD | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| search | No | in: query | |
| base_url | No | Override API base URL | |
| dateFrom | Yes | in: query | Начальная дата периода в формате YYYY-MM-DD | |
| per_page | No | in: query | Количество результатов на одной странице | |
| searchSettings[] | No | in: query | JSON строка с настройками.<br> - `regionId` — ID региона:<br> [ID региона для Яндекс](https://yandex.ru/dev/xml/doc/ru/reference/regions) или [ID региона для Google](https://analyticscodes.com/) - `engine` — ID поисковой системы:<br> `0` — Yandex Desktop `1` — Yandex Mobile `3` — Google Mobile `4` — Google Desktop - `language` — ID языка (опционально, пока только `0`) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the HTTP method (GET) and shows an example request, implying a read operation. However, it does not explain response format, pagination behavior, sorting details, authentication requirements, or rate limits. The example shows per_page and page, but without explanation, which is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loads the purpose, then includes method, path, and an example. It avoids fluff and is efficiently written, though it could be slightly better structured with explicit sections. The length is appropriate.
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?
Given the tool's complexity (12 params) and absence of an output schema, the description is minimal. It provides a basic idea of what the report contains (positions for a project) but does not explain the returned fields, sorting, pagination, or how to interpret the data. It also lacks guidance on selecting this tool over siblings. Schema covers parameters, but the description leaves out important 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 100%, so all 12 parameters are documented in the schema. The description adds marginal value by showing a real usage example, particularly for the searchSettings[] parameter with JSON syntax. But it does not compensate for any missing schema details; the schema is the primary source of parameter meaning.
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 action (получение отчета по позициям проекта) and resource (monitoring/<id>/report). It differentiates from the broader monitoring endpoints by specifying 'данные для таблицы проекта' and includes a concrete example. However, it does not explicitly name sibling tools like keyso_get_monitoring_id_report_chart or report_compare, leaving some ambiguity.
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 provides context (period, filters) and an example, but does not explicitly state when to use this tool over alternatives such as the chart or compare reports. There is no guidance on when not to use it or prerequisites. The phrase 'данные для таблицы проекта' hints at the table view, but it's implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_monitoring_id_report_chartC
Мониторинг позиций - данные для графика
Method: GET
Path: /monitoring//report-chart
Получение агрегированных данных по позициям фраз проекта для графика. Пример запроса: https://api.keys.so/monitoring/146/report-compare?dateFrom=2025-04-09&dateTo=2025-04-16&per_page=25&page=1&sort=superwsk|desc&searchSettings[]={"regionId":38,"engine":0}
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| aids | No | in: query | ID папок кластеризатора | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| dateTo | Yes | in: query | Конечная дата периода | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| search | No | in: query | Поисковый запрос по фразам | |
| base_url | No | Override API base URL | |
| dateFrom | Yes | in: query | Начальная дата периода | |
| per_page | No | in: query | Количество результатов на одной странице | |
| searchSettings[] | No | in: query | JSON строка с настройками.<br> - `regionId` — ID региона:<br> [ID региона для Яндекс](https://yandex.ru/dev/xml/doc/ru/reference/regions) или [ID региона для Google](https://analyticscodes.com/) - `engine` — ID поисковой системы:<br> `0` — Yandex Desktop `1` — Yandex Mobile `3` — Google Mobile `4` — Google Desktop - `language` — ID языка (опционально, пока только `0`) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden, but it only states GET, the path, and that data is aggregated. It omits response shape, pagination behavior, required dates, auth/token handling, and the endpoint is internally inconsistent because the example calls report-compare rather than report-chart.
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 compact and front-loaded, but the opening line and the subsequent purpose sentence largely repeat the same chart-data idea. The example is useful yet introduces a mismatched endpoint, so the structure is acceptable but not tight.
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 12-parameter tool with no output schema and no annotations, the description is too thin: it does not explain what the returned chart data looks like, how parameters interact, or what prerequisites exist. An agent would need to infer most call details from the schema and the partially inconsistent example.
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 100%, so the schema already documents all parameters; the description adds little beyond an example query showing dateFrom, dateTo, per_page, page, sort, and searchSettings. This is useful context, but it does not materially improve on the schema descriptions.
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 clear purpose: Получение агрегированных данных по позициям фраз проекта для графика, so an agent can understand it returns chart data for monitoring positions. It does not explicitly differentiate from sibling monitoring report endpoints, and the example path uses report-compare instead of the declared report-chart, which slightly weakens precision.
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 about when to prefer this tool over siblings such as keyso_get_monitoring_id_report or keyso_get_monitoring_id_report_compare. The only implicit hint is данные для графика, but no exclusions, alternatives, or preconditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_monitoring_id_report_compareB
Мониторинг позиций - данные сравнения c предыдущим съёмом
Method: GET
Path: /monitoring//report-compare
Получение агрегированных сравнительных данных по фразам между текущим и предыдущим съёмом. Пример запроса: https://api.keys.so/monitoring/146/report-compare?dateFrom=2025-04-09&dateTo=2025-04-16&per_page=25&page=1&sort=superwsk|desc&searchSettings[]={"regionId":38,"engine":0}
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| aids | No | in: query | ID папок кластеризатора (aids) | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| dateTo | Yes | in: query | Дата окончания периода | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| search | No | in: query | Строка поиска | |
| base_url | No | Override API base URL | |
| dateFrom | Yes | in: query | Дата начала периода | |
| per_page | No | in: query | Количество результатов на одной странице | |
| searchSettings[] | No | in: query | JSON строка с настройками.<br> - `regionId` — ID региона:<br> [ID региона для Яндекс](https://yandex.ru/dev/xml/doc/ru/reference/regions) или [ID региона для Google](https://analyticscodes.com/) - `engine` — ID поисковой системы:<br> `0` — Yandex Desktop `1` — Yandex Mobile `3` — Google Mobile `4` — Google Desktop - `language` — ID языка (опционально, пока только `0`) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that this is a GET request returning aggregated comparative data, but it doesn't mention pagination behavior, sorting defaults, required date range semantics, or what happens if no previous snapshot exists. The example request is helpful but doesn't cover edge cases or response format.
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 compact: one sentence of purpose plus an example request. The example is valuable and front-loaded. It could be slightly more structured, but it earns its place and doesn't waste words.
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 GET endpoint with 12 parameters and no output schema, the description provides the core purpose and a working example, which is adequate for basic invocation. However, it lacks guidance on response structure, error cases, and how this compare report differs from other monitoring reports. Given the tool's complexity and the absence of annotations, a bit more context would be needed for full completeness.
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 100%, so the schema already documents all 12 parameters. The description adds a concrete example URL showing how dateFrom, dateTo, per_page, page, sort, and searchSettings[] are used together, which adds some value beyond the schema. However, it doesn't explain the meaning of the response or how parameters interact beyond the example.
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: 'Получение агрегированных сравнительных данных по фразам между текущим и предыдущим съёмом' (getting aggregated comparative data on phrases between current and previous snapshot). It also includes the HTTP method and path, which helps identify the endpoint. However, it doesn't explicitly distinguish itself from sibling tools like keyso_get_monitoring_id_report or keyso_get_report_compare_view_organic, so it's clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: it's for comparing current vs previous monitoring snapshot data, and the example request shows how to call it. But it doesn't explicitly state when to use this tool versus alternatives like keyso_get_monitoring_id_report or the report_compare_view tools. No exclusions or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_monitoring_stateC
Мониторинг позиций - прогресс обновления проектов
Method: GET
Path: /monitoring/state
Пример запроса https://api.keys.so/monitoring/state?ids[]=123&ids[]=456&ids[]=789
| Name | Required | Description | Default |
|---|---|---|---|
| ids[] | Yes | in: query | Список идентификаторов проектов для получения статусов | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it only provides the HTTP method, path, and an example query. It does not disclose whether the operation is read-only beyond the implied GET method, what the response shape contains, whether an API token is required, or any rate-limit/error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the purpose, followed by method, path, and a concrete example. Every line earns its place, though the dash-fragment phrasing is telegraphic rather than a complete sentence.
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 tool with no annotations and no output schema, the description omits crucial context about what the 'state' response looks like and what fields an agent should expect. It is sufficient to construct the GET request but not to interpret the result or handle failure cases.
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 100%, so the schema already documents ids[], token, and base_url. The example request adds a concrete encoding detail (repeated ids[]= query parameters) that is not explicit in the schema, but it does not materially extend the meaning of the parameters.
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 identifies the resource as monitoring state and the concept as 'progress of updating projects' ('Мониторинг позиций - прогресс обновления проектов'), which is enough to infer it returns update progress. It does not use an explicit verb like 'retrieves' and does not name a sibling, but the state/progress framing differentiates it from the broader get_monitoring/list tools.
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 is given on when to prefer this over sibling tools such as keyso_get_monitoring or other state endpoints. The 'progress update' phrase implies a status-check use case, but there are no prerequisites, exclusions, or alternative routes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_projectsC
Список проектов
Method: GET
Path: /projects
Пример запроса /projects
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does include 'Method: GET', which implies a read-only operation and suggests no side effects, but it does not state this explicitly nor mention authentication requirements, rate limits, or whether the endpoint returns sensitive data. The minimal information is insufficient for an agent to fully assess behavior.
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 extremely concise with three short lines: a purpose statement, the HTTP method, and the path. It front-loads the purpose and avoids superfluous text. The example request is redundant with the path but not harmful. Slightly less polished than the ideal because of that redundancy, but still well-structured.
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 list endpoint with no required parameters and no output schema, the description gives enough to make the call (method and path), but it omits any indication of the response shape, such as whether it returns project IDs, names, or other fields. Given the large set of sibling tools that likely consume project IDs, this missing context makes it harder for an agent to chain calls effectively.
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 input schema fully describes the two parameters (token and base_url) with 100% coverage. The description adds no additional parameter meaning, but since the schema already handles semantics, the baseline of 3 is appropriate.
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 explicitly states 'Список проектов' (List of projects) and provides the HTTP method GET and path /projects, which clearly identifies the operation as retrieving a list of projects. It does not explicitly contrast with sibling tools like keyso_post_projects or keyso_get_projects_competitors, but the name and path make the resource and action 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?
The description offers no guidance on when to use this tool versus alternatives. It merely lists the endpoint and method without any context such as 'use this to enumerate all projects' or 'compare with keyso_post_projects for creation'. There is no mention of prerequisites, typical workflows, or exclusions, leaving the agent to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_projects_competitorsC
Сравнение с конкурентами
Method: GET
Path: /projects/competitors
Пример запроса https://api.keys.so/projects/competitors?projectId=12333
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL | |
| projectId | No | in: query | Идентификатор проекта |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It states method and path but does not mention read-only semantics, authentication requirements, rate limits, pagination, or what happens on failure. It gives a sample URL but nothing about the actual behavior beyond that it is a GET request.
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 very short and free of fluff, presenting the essential endpoint information. It is front-loaded with the purpose phrase. However, it lacks crucial details, so while concise, it is under-specified. Still, for what it includes, it is efficient.
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?
Given there is no output schema, the description should explain the return format, but it does not. It also does not differentiate among the numerous sibling tools. For a tool with a clear API endpoint, an agent would need more context to know if this is the right call and what to expect back.
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 100%, so the baseline is 3. The description shows an example using projectId, which adds a concrete context, but it doesn't clarify semantics beyond what the schema already provides. The token and base_url parameters are standard and not elaborated.
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 gives a Russian phrase 'Сравнение с конкурентами' (comparison with competitors) plus method, path, and example. It indicates the tool retrieves competitor comparison data for a project, but doesn't specify what the response contains or how it differs from other competitor-related tools. The verb 'get' is implied by method, but the purpose is not sharply defined.
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 tool versus the many sibling tools that also deal with competitors (e.g., keyso_get_projects_recommended_competitors, keyso_get_report_simple_organic_concurents, keyso_get_ai_tracker_id_competitors). There is no mention of alternatives or conditions for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_projects_recommended_competitorsC
Рекомендуемые конкуренты
Method: GET
Path: /projects/recommended-competitors
Пример запроса /projects/recommended-competitors?domain=notisend.ru
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It reveals the HTTP method (GET) and an example, implying a read operation, but it does not state whether the operation is safe, any side effects, authentication requirements, or response format. The agent cannot know what happens beyond the call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, front-loading the purpose and immediate technical details (method, path, example) without fluff. It is easily scannable, though the example could be seen as redundant given the schema, but overall it is appropriately compact.
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?
Given the absence of an output schema and annotations, the description is incomplete. It does not describe the response structure, expected data shape, or any post-processing steps. For a tool that returns recommended competitors, the agent lacks information to interpret results, making the definition insufficient for effective use.
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 100%, so all three parameters (token, domain, base_url) already have descriptive documentation. The description adds minimal value by showing an example with the required 'domain' parameter, but it does not elaborate on parameter behavior or constraints beyond the schema. This matches the baseline for high schema coverage.
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 the exact purpose (recommended competitors) and gives the HTTP method, path, and example. It clearly identifies a read operation for a specific resource (competitors for a domain), but does not explicitly differentiate from sibling tools like keyso_get_projects_competitors, which may have similar scope. Still, the naming and example make the purpose clear.
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 is provided on when to use this tool versus alternatives. There is no mention of prerequisites, scenarios, or differentiators from similar competitor-endpoint tools. The description only supplies the endpoint and example, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_ads_rsyaD
Объявления в РСЯ
Method: GET
Path: /report/ads/rsya
Пример запроса https://api.keys.so/report/ads/rsya?sort=&page=1&per_page=25&groupingBy=erir&filter=titleLIKE%25D0%259A%25D1%2580%25D0%25BE%25D1%2581%25D0%25BE%25D0%25B2%25D0%25BA%25D0%25B8%255EORlegalLIKE%25D0%259A%25D1%2580%25D0%25BE%25D1%2581%25D0%25BE%25D0%25B2%25D0%25BA%25D0%25B8%255EORtarget_urlLIKE%25D0%259A%25D1%2580%25D0%25BE%25D1%2581%25D0%25BE%25D0%25B2%25D0%25BA%25D0%25B8
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице | |
| groupingBy | No | in: query | Группировка. Данный параметр работает только при наличии фильтра.<br> `img_path` - по изображению<br> `inn` - по рекламодателю(ИНН)<br> `domain` - по домену<br> `erir` - по ЕРИР<br> |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the HTTP method (GET) and path, implying a read operation, but says nothing about response format, pagination behavior, constraints (e.g., groupingBy requires filter), authentication, or side effects. This is a major gap for a tool with no structured metadata.
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 short and front-loads the resource name, but it lacks structure and completeness. The example URL is a long, dense string that is hard to parse, and the overall content is under-specified for an agent. It is concise but not effectively organized for decision-making.
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?
Given 7 parameters, no output schema, and no annotations, the description is severely incomplete. It does not explain what the tool returns, how results are structured, or any important constraints (e.g., groupingBy only works with filter). The minimal text leaves the agent with insufficient information to call the tool correctly and interpret results.
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 100%, giving a baseline of 3. The description adds a concrete example URL that demonstrates the syntax for filter (using LIKE and OR operators) and shows how to combine sort, page, per_page, groupingBy, and filter. This goes beyond the schema, which only links to a documentation section for filtering, and clarifies parameter usage in practice.
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 is essentially a Russian noun phrase 'Объявления в РСЯ' ('Ads in RSYA') that restates the tool name without any verb or explicit action. It does provide the HTTP method and path, but fails to state what the tool does (e.g., retrieve, list, filter) or how it differs from sibling tools like keyso_get_report_ads_rsya_domains_domain.
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 alternatives. No mention of prerequisites, typical scenarios, or exclusions. The description simply gives a label and technical details, leaving the agent without any decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_ads_rsya_domains_domainC
Объявления в РСЯ сайта
Method: GET
Path: /report/ads/rsya/domains/
Пример запроса https://api.keys.so/report/ads/rsya/domains/dodopizza.ru?sort=found_at%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: path | Домен | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure, but it only states the purpose and shows a request example. It omits auth requirements (the token parameter appears only in the schema), rate limits, pagination semantics, and response characteristics.
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?
Four short lines with the purpose front-loaded, followed by method, path, and a concrete example. The example is slightly verbose with URL-encoded values, but there is no wasted prose.
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 seven parameters, no output schema, and no annotations, the burden falls entirely on the description, which omits the response format, accepted filter values (it only references a docs section), and authentication details. This is inadequate for an agent to call the tool correctly and safely.
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 100%, so the baseline is 3. The example URL demonstrates `sort=found_at%7Casc`, `page=1`, and `per_page=25` in real usage, adding slight value beyond the terse schema descriptions, but the description itself adds no new parameter semantics.
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?
Объявления в РСЯ сайта names a specific resource (ads in the Yandex Advertising Network) scoped to a domain, and the path template `/report/ads/rsya/domains/<domain>` confirms the intent. However, the description does not differentiate it from the sibling `keyso_get_report_ads_rsya`; the agent must infer the per-domain scope from the name and path alone.
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 tool versus alternatives such as `keyso_get_report_ads_rsya` or other report siblings. There are no exclusions, prerequisites, or selection criteria stated anywhere in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_compare_view_backlinksC
Сравнение сайтов по ссылкам
Method: GET
Path: /report/compare?view=backlinks
Пример запроса https://api.keys.so/report/compare?base=msk&incl=keys.so,text.ru&excl=&view=backlinks&sort=numurl%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| excl | Yes | in: query | Список доменов через запятую | |
| incl | Yes | in: query | Список доменов через запятую | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| view | No | in: query | Тип отчета `backlinks`, для данного инструмента необходимо явно указывать данный тип отчета | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does reveal the HTTP method (GET) and path, which implies a read operation, but it does not state what the comparison output looks like, whether authentication or a token is required, how pagination works, or any limits. This is minimal beyond the name and schema.
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 compact: a one-line purpose, the method and path, and a single concrete example. There is no fluff, and the example earns its place by demonstrating the required `incl`/`excl` and the fixed `view=backlinks` 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?
Given 10 parameters, no output schema, and no annotations, the description is too thin. It omits the response format, token/auth expectations, when to set `view` versus relying on the path, and does not orient the agent among the large sibling toolset. The example shows usage but leaves critical operational context implicit.
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 100%, so the baseline is 3. The example URL does add practical meaning by showing concrete values for `base`, `incl`, `excl`, `view`, `sort`, `page`, and `per_page`. However, the description does not explain the meaning of the parameters themselves; that burden remains on 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?
The description states a specific verb and resource: 'Сравнение сайтов по ссылкам' ('Compare sites by links'), and the path `/report/compare?view=backlinks` clarifies the exact scope. It distinguishes from the organic and context compare siblings through the 'backlinks' focus, though it does not explicitly name or contrast those alternatives.
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 choose this tool over the sibling compare tools (`view_organic`, `view_context`) or any other report tool. The example request is helpful but does not explain prerequisites, ideal use cases, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_compare_view_contextC
Сравнение сайтов в контекстной рекламе
Method: GET
Path: /report/compare?view=context
Пример запроса https://api.keys.so/report/compare?base=msk&incl=keys.so,text.ru&excl=&view=organic&sort=numwords%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| excl | Yes | in: query | Список доменов через запятую | |
| incl | Yes | in: query | Список доменов через запятую | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| view | No | in: query | Тип отчета `context`, для данного инструмента необходимо явно указывать данный тип отчета | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden of behavioral disclosure. It does disclose the HTTP method GET and the endpoint path, which indicates a read-only report call, and provides an example query. However, it does not describe the response format, pagination behavior, authentication requirements, or any limitations.
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 short and front-loaded with the purpose statement, and the method/path information is useful. The example is somewhat redundant and contains a mismatched view value, making the overall structure less clean and trustworthy than it could be.
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 10-parameter report endpoint with no output schema and no annotations, this description is incomplete. It does not explain what the returned comparison contains, how to authenticate, or when to use this tool instead of the sibling compare views. The schema covers parameters, but tool-level context is missing.
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 100%, so the baseline is 3. The example query adds concrete formats for sort (`numwords|desc`), page, per_page, and the required incl/excl parameters. However, the example uses `view=organic` for a tool named and described as `context`, which undermines its usefulness and could mislead an agent.
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 opens with 'Сравнение сайтов в контекстной рекламе' (compare sites in contextual advertising), giving a specific verb and resource. This clearly identifies the context-advertising variant of the compare report, matching the tool name and the view enum. It does not explicitly contrast with the organic/backlinks sibling views, but the domain term is specific enough.
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 is provided on when to use this tool versus keyso_get_report_compare_view_organic or keyso_get_report_compare_view_backlinks. The description states only what the tool does, with no selection criteria, exclusions, or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_compare_view_organicA
Сравнение сайтов в органическом поиске
Method: GET
Path: /report/compare?view=organic
Пример запроса https://api.keys.so/report/compare?base=msk&incl=keys.so,text.ru&excl=&view=organic&sort=numwords%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| excl | Yes | in: query | Список доменов через запятую | |
| incl | Yes | in: query | Список доменов через запятую | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| view | No | in: query | Тип отчета `organic` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It reveals the HTTP method and path, but does not describe the response format, pagination behavior, authentication needs, rate limits, or any other runtime behavior. The GET method implies a read operation, but that is not explicitly stated.
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 compact and front-loaded with the purpose, followed by method, path, and a single useful example. Every part earns its place, though a slightly more structured layout would improve scannability.
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?
Given 10 parameters, no output schema, and no annotations, the description is too thin. It does not explain what the response contains, how pagination defaults work, what `base` means, what filtering is possible, or what authentication is required. An agent can copy the example but cannot fully reason about edge cases.
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 100%, but the example URL adds practical meaning beyond the bare 'in: query' descriptions: it shows comma-separated domains for `incl`/`excl`, the pipe-separated `sort` format, and the use of `page`/`per_page`. It also gives context to the otherwise undocumented `base` parameter via `base=msk`.
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 clearly states 'Сравнение сайтов в органическом поиске' and includes the exact path `/report/compare?view=organic`, identifying both the resource and the specific organic view. This differentiates it from the sibling context and backlinks compare tools.
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 gives a concrete example query and states this is for organic search comparison, so the intended context is clear. However, it does not explicitly say when to use this tool instead of `keyso_get_report_compare_view_context` or `keyso_get_report_compare_view_backlinks`, leaving the choice implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_group_context_ads_facts_ridC
Контекстная реклама - объявления, уникальные факты группы
Method: GET
Path: /report/group/context/ads/facts/
Пример запроса https://api.keys.so/report/group/context/ads/facts/696b62ec6bceaf00529c4dd4bce02b47?sort=cnt%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| rid | Yes | in: path | Идентификатор отчёта | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does not mention return format, side effects, authentication, rate limits, pagination behavior, or any operational details beyond an example URL. The method and path are given, but these are structural rather than behavioral. The lack of any behavioral context is a significant gap.
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 extremely brief, which is concise, but it is not well-structured: it starts with a fragment, then gives method/path, then an example. The key purpose is not front-loaded clearly. It lacks a proper sentence structure and mixes unrelated elements. It is under-specified rather than efficiently concise.
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?
Given the tool has 7 parameters, 1 required, and no output schema, the description should explain what the response contains and how it fits into the broader report group workflow. With many sibling tools, it does not help the agent understand when to choose this endpoint. The example query hints at pagination and sorting but does not describe the result structure or use case. It is incomplete for effective use.
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 input schema has 100% coverage with descriptions for all 7 parameters, including format details for 'sort' and pagination parameters. The description adds no additional parameter semantics beyond what the schema already provides, so a baseline score of 3 is appropriate.
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 'Contextual advertising - ads, unique facts of the group' which identifies the resource type but does not use a clear verb or fully describe the action. It relies on the tool name for the 'get' intent. It distinguishes from sibling tools like context_ads and context_ads_links by specifying 'unique facts', but the phrasing is fragmentary and lacks explicit action.
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 sibling tools (e.g., keyso_get_report_group_context_ads_rid, keyso_get_report_simple_context_ads_facts). The only differentiator is the name and the fragment, which implies it retrieves unique facts for a group. No exclusions or alternative suggestions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_group_context_ads_links_ridC
Контекстная реклама - объявления, уникальные ссылки группы
Method: GET
Path: /report/group/context/ads/links/
Пример запроса https://api.keys.so/report/group/context/ads/links/696b62ec6bceaf00529c4dd4bce02b47?sort=cnt%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| rid | Yes | in: path | Идентификатор отчёта | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the HTTP method and path plus an example URL, but discloses nothing about response shape, pagination semantics, sorting behavior, or what data fields are returned for these 'unique links'.
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 text is compact and the example URL is useful, but it reads as a sparse noun-phrase header plus boilerplate method/path lines. It earns its brevity but sacrifices explanatory 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?
For a moderately complex report tool, the schema covers all parameters and the example shows realistic usage. However, without an output schema and without any behavioral description of what the 'unique links' payload contains, an agent cannot anticipate the response.
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 100%, so all seven parameters are documented in the schema. The example request adds a little value by demonstrating sort (`cnt|asc`), page, and per_page usage, but the description itself adds no parameter meaning beyond that.
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 the resource ('Contextual advertising - ads, unique links of the group') and the path/method make the GET action clear. However, it's a noun phrase rather than an action statement, and it does not differentiate this tool from close siblings like keyso_get_report_group_context_ads_rid or keyso_get_report_group_context_ads_facts_rid.
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 alternatives. With roughly twenty report-group siblings (context_ads, context_ads_facts, context_keywords, context_concurents, etc.), the absence of any selection criteria is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_group_context_ads_ridB
Контекстная реклама - объявления группы
Method: GET
Path: /report/group/context/ads/
Пример запроса https://api.keys.so/report/group/context/ads/696b62ec6bceaf00529c4dd4bce02b47?sort=keyscnt%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| rid | Yes | in: path | Идентификатор отчёта | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of behavioral disclosure. It only gives the HTTP method and path, plus an example URL. It does not describe pagination behavior, default sort, response format, or whether filters apply to ads in any particular way.
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 short and includes the method, path, and an example request. The example is useful and front-loaded. It could be slightly more structured, but overall it is concise and informative without unnecessary filler.
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?
Given the tool has no output schema and no annotations, the description provides only the HTTP endpoint and a sample call. It lacks information about return shape, error cases, or how ads differ from related context group endpoints. It is minimally adequate for a simple retrieval endpoint but leaves operational 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?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds minimal value beyond the example URL, which demonstrates rid, sort, page, and per_page usage. It does not explain the rid semantics beyond 'Идентификатор отчёта' or clarify filter syntax, but the schema already covers the basics.
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 'Контекстная реклама - объявления группы' identifies the resource as context ads group records, and the path clarifies it fetches ads for a specific report group. It is clear enough to distinguish from siblings like group context keywords or concurents, though it does not explicitly name a sibling or state the action verb (e.g., 'get').
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 implies this tool is for retrieving context ads data within a report group, which is suggested by the path and sibling names. However, it does not explicitly state when to use this versus alternatives like context_ads_links or context_ads_facts, nor does it mention prerequisites such as having a valid report rid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_group_context_concurents_ridC
Контекстная реклама - конкуренты группы
Method: GET
Path: /report/group/context/concurents/
Пример запроса https://api.keys.so/report/group/context/concurents/696b62ec6bceaf00529c4dd4bce02b47?sort=cnt%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| rid | Yes | in: path | Идентификатор отчёта | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It does reveal that this is a GET request with the path and example query parameters, but it does not disclose response shape, pagination behavior, authorization needs, rate limits, or how the 'competitors' data is derived. This is minimal coverage for a tool with no 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?
The description is compact and follows a logical structure: domain label, method/path, and a real example URL. There is no filler or redundant prose. Although the opening label is vague, the technical details are efficiently presented.
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?
This is a report endpoint with no output schema, no annotations, and seven parameters, yet the description provides no information about the returned competitor data, how it relates to the parent group report, or what distinguishes it from similar context/organic competitor endpoints. The example query is helpful but insufficient for confident tool selection and 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 100%, so the schema already documents all parameters. The example URL adds a concrete illustration of sort, page, and per_page usage, but it does not add significant meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is essentially a noun phrase: 'Контекстная реклама - конкуренты группы' ('Contextual advertising - group competitors'). It restates what the tool name already conveys without using a verb or stating what data is returned. The method/path/example provide technical routing but do not clarify the tool's purpose beyond the name.
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 about when to use this tool versus its many siblings, such as the organic competitors endpoint or the context keywords/ads endpoints. The example request implies usage but never states a selection condition, prerequisites, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_group_context_keywords_ridB
Контекстная реклама - ключевые слова группы
Method: GET
Path: /report/group/context/keywords/
Пример запроса https://api.keys.so/report/group/context/keywords/696b62ec6bceaf00529c4dd4bce02b47?sort=weight%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| rid | Yes | in: path | Идентификатор отчёта | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden, and it does disclose that this is an HTTP GET with an example request, signaling a read-only operation. However, it says nothing about authentication requirements, pagination behavior, error cases, or what response the caller should expect, leaving key behavioral details undisclosed.
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 compact and front-loaded, with a resource label, method, path, and a concrete example request. Every element is relevant, though the brevity leaves behavioral and usage gaps.
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?
Given the large set of similar sibling tools, no output schema, and no annotations, the description is too sparse. It does not explain what the report contains, how rid relates to other report endpoints, or how this endpoint differs from the simple/group context keyword alternatives.
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 100%, so the schema already documents every parameter. The description only adds an example URL illustrating sort, page, and per_page usage, which is mildly helpful but does not add new meaning beyond 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?
The description identifies the resource as context-advertising group keywords and provides the HTTP method and path, so an agent can infer it retrieves keywords for a group report. It lacks an explicit verb such as 'list' or 'retrieve', but the resource label is specific enough to distinguish it from sibling ad/domain endpoints.
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 explicit when-to-use guidance, no exclusions, and no mention of alternative tools such as keyso_get_report_simple_context_keywords or the organic group keyword endpoint. The label only implies the general resource type without explaining when this endpoint should be selected over its many siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_group_domains_ridC
Домены в отчете
Method: GET
Path: /report/group/domains/
Пример запроса https://api.keys.so/report/group/domains/3aa8f62903adc6fe499d42dcf82a4c8?sort=it50%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| rid | Yes | in: path | Идентификатор отчёта | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden of behavioral disclosure. It adds only 'Method: GET', which implies a read-only operation, and an example URL showing pagination params. It says nothing about authentication requirements, rate limits, pagination behavior, or response shape — all unstated for a tool with no annotation support.
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 short and front-loaded: a one-line purpose, the HTTP method, the path template, and a concrete example URL. There is no filler or redundancy, though the example overlaps somewhat with the path template.
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 no output schema and no annotations, this description should compensate by explaining what the response contains and when to call the tool. It does neither. For a seven-parameter endpoint in a large family of near-identical report endpoints, this is under-specified.
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 100%, so the baseline of 3 applies. The description's example query (sort=it50%7Cdesc&page=1&per_page=25) adds modest value by demonstrating the sort format and query parameter usage in context, but it does not explain any parameter beyond what the schema already documents.
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 'Домены в отчете' (domains in the report) and gives an explicit HTTP method and path template (/report/group/domains/<rid>), so an agent can tell it fetches the domain list for a report group. However, it does not explicitly differentiate itself from the many similar report_group_*_rid siblings (organic_keywords, context_ads, etc.), leaving that to the name.
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 is given on when to use this tool versus the numerous sibling tools. With over a hundred siblings including many report_group_*_rid endpoints, the absence of any stated use case, precondition, or alternative routing is a significant gap. Usage is only implied by the resource path and name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_group_listB
Список групповых отчетов
Method: GET
Path: /report/group/list
Пример запроса https://api.keys.so/report/group/list?sort=access_date%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Method GET and the full path /report/group/list are disclosed, which signals a read-only collection operation, and the example URL demonstrates query usage. However, with no annotations and no output schema, the description does not cover auth requirements, response format, pagination defaults, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: a short label, method/path, and one illustrative example. There is no filler, though the first line largely restates the tool name and the example is the only material addition.
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 no annotations and no output schema, the description should explain what the response contains, default pagination, auth expectations, and how this endpoint relates to the many sibling report tools. The current description is too sparse for an agent navigating a large tool set.
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 100%, so the parameters are already fully documented in the schema. The description adds a concrete example URL showing sort, page, and per_page usage, which is helpful but does not substantially expand parameter semantics beyond 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?
The description states 'Список групповых отчетов' (list of group reports), giving a clear verb and resource, and it is reinforced by the HTTP method and path. It is distinguishable from the numerous report_* siblings by its list scope, though it does not explicitly name a sibling or exclusion.
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 alternatives such as keyso_post_report_group or the various keyso_get_report_group_* endpoints. The description only provides the endpoint and an example request, leaving usage conditions and exclusions entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_group_organic_concurents_ridC
Органическая выдача - конкуренты группы
Method: GET
Path: /report/group/organic/concurents/
Пример запроса https://api.keys.so/report/group/organic/concurents/696b62ec6bceaf00529c4dd4bce02b47?sort=cnt%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| rid | Yes | in: path | Идентификатор отчёта | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals the HTTP method (GET) and a sample request URL with sort, page, and per_page parameters, but does not describe the response shape, pagination behavior, the meaning of the 'concurents' output, or any rate/auth constraints. For a data-retrieval tool this is minimal disclosure.
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 extremely short and front-loads the purpose in one line, followed by method/path/example. It is concise but under-specifies; brevity here reflects omission rather than efficient density, so it does not earn a higher score.
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?
This is a 7-parameter tool with no annotations and no output schema, so the description must compensate. It does not explain what data the response contains, how filtering works, what 'concurents' refers to in organic context, or how this differs from the many similar sibling reports. Incomplete for an agent to call it correctly with confidence.
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 100%, so the schema already documents all 7 parameters. The example URL does demonstrate the sort format (cnt|desc) and query construction, adding marginal value, but the description itself contributes no parameter meaning beyond what the schema provides. Baseline 3 is appropriate.
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 'Органическая выдача - конкуренты группы' (Organic results - group competitors) largely restates the tool name. It adds the HTTP method and path, but provides no substantive statement of what the tool actually does beyond what the name already conveys. Among ~30 report-group siblings, nothing distinguishes this from keyso_get_report_group_organic_keywords_rid or the simple variants.
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 tool versus alternatives. It does not explain the difference between group-level and simple-level reports, nor between organic and context competitors, despite many sibling tools covering these exact distinctions. The only hint is the embedded path, which the agent must interpret itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_group_organic_keywords_ridC
Органическая выдача - ключевые слова группы
Method: GET
Path: /report/group/organic/keywords/
Пример запроса https://api.keys.so/report/group/organic/keywords/696b62ec6bceaf00529c4dd4bce02b47?sort=wsk%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| rid | Yes | in: path | Идентификатор отчёта | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses only the HTTP method and path, which are already implicit in the tool's purpose. It does not mention authentication, rate limits, pagination behavior, or the nature of the response. An agent has no idea what data is returned or if there are any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short, with a title-like line, method/path, and an example. It is front-loaded and has no filler. The example is valuable for illustrating query parameters. It is concise but could be better structured as a complete sentence.
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 tool with 7 parameters, no output schema, and a large set of similar siblings, the description is far too sparse. It lacks any explanation of the report group concept, the expected response structure, or when this endpoint is relevant. An agent would struggle to call it correctly without additional 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 100%, so each parameter is already documented. The description adds only a concrete example URL that illustrates sort, page, and per_page usage, which is mildly helpful but does not go beyond what the schema provides. Baseline 3 is appropriate.
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 the resource ('organic keywords of the group') and implies the action via the GET method, but it reads more like a title than an explanatory sentence. It does not explicitly say 'get' or 'fetch', and it does not differentiate from sibling tools like keyso_get_report_group_organic_concurents_rid or keyso_get_report_group_organic_sitepages_rid, which share the same group/organic scope.
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 alternatives. No mention of group vs. simple reports, no conditions for selection, no exclusions. The example URL is the only extra info, but it does not help an agent decide between this and a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_group_organic_sitepages_ridC
Органическая выдача - страницы группы
Method: GET
Path: /report/group/organic/sitepages/
Пример запроса https://api.keys.so/report/group/organic/sitepages/696b62ec6bceaf00529c4dd4bce02b47?sort=vis%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| rid | Yes | in: path | Идентификатор отчёта | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does disclose that the operation is a GET and provides the exact path and a concrete example URL, signaling a read operation, but it omits authentication needs, rate limits, error behavior, response shape, or pagination behavior.
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 compact and logically ordered: human-readable title, method, path, then example. It contains no filler, though its brevity limits the depth of the guidance it provides.
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 GET endpoint with seven parameters and no output schema, this description is thin. It does not explain the report-group concept, how to obtain or validate rid, what fields the response contains, or how this endpoint differs from the simple organic sitepages variant.
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 100%, so the baseline is 3. The description's example URL reinforces how sort, page, and per_page are used, but it does not add meaning beyond the schema descriptions for rid, filter, token, or base_url.
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 the resource ('Органическая выдача - страницы группы') and gives the HTTP method and full path, which together identify this as a GET for organic site pages inside a report group. It is clear but does not distinguish the tool from siblings like keyso_get_report_group_organic_keywords_rid or keyso_get_report_simple_organic_sitepages.
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 is provided about when to use this tool versus the many related report-group or simple-report endpoints. There is no mention of prerequisites, such as having created a report group, or of alternatives for simple organic sitepages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_group_state_ridB
Статус обработки отчета
Method: GET
Path: /report/group/state/
Пример запроса https://api.keys.so/report/group/state/090e6fcc65ea67fcc8f0bd00ade39a
| Name | Required | Description | Default |
|---|---|---|---|
| rid | Yes | in: path (auto-detected) | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It reveals only that this is a GET request for status, but does not mention that it is a polling endpoint, what status values may be returned, whether it is safe to call repeatedly, or any rate limits. The lack of output schema makes this gap more significant.
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 compact and front-loaded: the purpose statement, HTTP method, path, and a concrete example are all included with no redundancy. Every sentence contributes practical calling 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?
For a simple status endpoint, the description provides enough to make the call successfully (method, path, example). However, it omits what the response contains or how to interpret statuses, which is important since there is no output schema. It also lacks guidance on when to poll or how long to wait, so an agent is left partially unguided.
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 input schema covers 100% of parameters, so the baseline is 3. The description adds an example URL showing a concrete rid value, but does not explain what rid refers to (e.g., a report group ID) or add semantics for token/base_url beyond the schema descriptions.
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 the tool's purpose as 'Статус обработки отчета' (report processing status) and specifies the HTTP GET method and path, making the resource clear. It is distinguishable from sibling data-retrieval tools by the 'state' path component, though it does not explicitly contrast with other status tools like keyso_get_clustering_state_uid.
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 is provided on when to use this tool versus alternatives, such as after creating a report group via keyso_post_report_group or as a polling mechanism. The path implies a follow-up status check, but this is not stated explicitly, leaving the agent to infer the usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_owner_subdomainsB
Поддомены сайта
Method: GET
Path: /report/owner/subdomains
Пример запроса https://api.keys.so/report/owner/subdomains?id=dodopizza.ru&base=msk&sort=name%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: query | Имя домена | |
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral disclosure burden. It does convey that this is a read-only GET operation returning subdomains, which is a minimal behavioral signal. However, it omits response format, pagination behavior, error conditions, and authentication expectations.
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 compact, front-loaded with the purpose, and each line earns its place: the resource label, HTTP method, path, and a representative request example. There is no redundant filler.
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 an 8-parameter endpoint with no annotations and no output schema, this description is under-specified. It does not describe the response shape, default pagination, meaning of base/filter, or how this endpoint relates to the large family of sibling report tools, so an agent may struggle to use it correctly and confidently.
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 100%, so the schema already documents all 8 parameters. The description's example request adds a concrete illustration for id, base, sort, page, and per_page, but it does not meaningfully explain ambiguous parameters such as base, filter, token, or base_url beyond what the schema provides.
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 identifies the resource as site subdomains and, combined with 'Method: GET' and the path, makes clear this is a retrieval operation. However, it uses a noun phrase ('Поддомены сайта') rather than a full verb phrase, and it does not differentiate itself from the many sibling report_* tools.
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 endpoint versus alternatives such as report_simple_* or report_group_* tools. The example request shows how to call it, but nothing explains selection criteria, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_ai_answers_stateA
Проверка статуса ИИ-отчёта
Method: GET
Path: /report/simple/ai-answers/state
Возвращает текущий статус построения ИИ-отчёта для домена. Используется для проверки готовности отчёта перед запросом данных. Пример запроса: https://api.keys.so/report/simple/ai-answers/state?base=msk&domain=wildberries.ru
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full behavioral burden. It does disclose 'Method: GET', the path, and that the tool returns current status, which implies a read-only polling operation. However, it does not describe possible status values, how to interpret 'ready' vs 'in progress', or any polling/error behavior, leaving the behavioral picture incomplete.
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 compact and front-loaded: purpose, method, path, return value, usage context, and an example appear in a logical order. There is minor redundancy between the opening 'Проверка статуса ИИ-отчёта' and the later 'Возвращает текущий статус...', but there is no filler or irrelevant content.
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?
This is a simple state-check endpoint, yet there is no output schema and no annotations. The description gives the method, path, example, and readiness-checking purpose, but omits the actual status vocabulary an agent would need to decide whether to proceed to fetch report data. It also leaves the `base` parameter semantics vague, making the definition adequate but not fully complete.
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 100%, so the baseline is 3. The example request `?base=msk&domain=wildberries.ru` adds some clarity by showing `base` and `domain` in context, but it does not explain what `base` values mean or how `token`/`base_url` overrides behave. Most parameter meaning still comes from 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?
The description opens with 'Проверка статуса ИИ-отчёта' and states that it 'Возвращает текущий статус построения ИИ-отчёта для домена', giving a specific verb, resource, and scope. The explicit path `/report/simple/ai-answers/state` and the note about checking readiness before requesting data differentiate it from data-fetching siblings like `keyso_get_report_simple_organic_ai_answers`.
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 clearly states when to use this tool: 'Используется для проверки готовности отчёта перед запросом данных' (used to check report readiness before requesting data). It provides a clear triggering context, though it does not name an alternative data-fetching tool or give explicit 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_context_adsC
Контекстная реклама - объявления
Method: GET
Path: /report/simple/context/ads/
Пример запроса https://api.keys.so/report/simple/context/ads?base=msk&domain=wildberries.ru&sort=keyscnt%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| full | No | in: query | Если `1`, в отчет будет добавлен массив ключевых слов по каждому объявлению | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It discloses the HTTP method GET and path, implying a read-only report, but it does not describe response contents, pagination behavior, required permissions, or the practical effect of the `full` parameter beyond the schema's one-line note.
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 compact and front-loaded: the resource label, method, path, and a concrete example request are all useful. It contains no filler, though the brevity leaves behavioral and usage gaps for other dimensions.
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 9 parameters, no output schema, and no annotations, an agent needs more than a path and example. The description omits what the returned report represents, default pagination values, and how this report relates to sibling context/direct ad tools, so it is not complete enough for reliable 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 100%, so the baseline is 3. The example URL illustrates the `sort` syntax and demonstrates the required `domain` along with `base`, `page`, and `per_page`, but it adds no meaning beyond the schema's field descriptions.
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 identifies the resource as 'Контекстная реклама - объявления' (context advertising ads) and provides the exact GET path, so an agent can map it to the context-ads report. It distinguishes from sibling tools like context_keywords and context_ads_links by naming 'объявления', but it never states an explicit verb such as 'list' or 'retrieve'.
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 gives only an example request and no conditions for when to choose this tool over the many sibling report tools such as context_keywords, context_ads_links, or direct_ads. There is no 'use when' statement, no exclusions, and no guidance about when this report is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_context_ads_factsC
Контекстная реклама - объявления, уникальные факты
Method: GET
Path: /report/simple/context/ads/facts
Пример запроса https://api.keys.so/report/simple/context/ads/facts?base=msk&domain=wildberries.ru&sort=cnt%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It does state Method: GET, which implies read-only behavior, and shows an example query, but it does not explain what data is returned, authentication needs, pagination behavior, or what 'unique facts' means.
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 compact and includes the essential method, path, and example in a scannable format. The opening phrase is vague, but there is no padding or irrelevant content.
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 no output schema and no annotations, this tool needs a fuller description to be reliably invoked. The path and example are helpful, but the description does not explain the report semantics, response structure, filtering options, or how this fits with the broader report family.
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 100%, so the schema already documents all parameters well. The description adds value by providing a concrete example request with realistic values for base, domain, sort, page, and per_page, including the URL-encoded sort format.
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's main phrase 'Контекстная реклама - объявления, уникальные факты' is a noun fragment that essentially restates the tool name without a verb or clear action. Method and path are given, but not what the endpoint actually returns or how it differs from the many similar context-ads sibling endpoints.
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 about when to use this endpoint versus alternatives like keyso_get_report_simple_context_ads, keyso_get_report_simple_context_ads_links, or group-level fact endpoints. The example request shows how to call it, but not why an agent should choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_context_ads_linksC
Контекстная реклама - объявления, уникальные ссылки
Method: GET
Path: /report/simple/context/ads/links
Пример запроса https://api.keys.so/report/simple/context/ads/links?base=msk&domain=wildberries.ru&sort=cnt%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only states the HTTP method and provides an example URL; it does not disclose the response format, pagination behavior, authentication requirements, or whether the endpoint is read-only. The GET method implies no side effects, but this is minimal behavioral context for an 8-parameter endpoint.
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 short and front-loads the category, then gives the method, path, and an example. However, the opening line is a label rather than a full sentence, and the example URL largely repeats the path, so the available space is not used to add substantive semantic content.
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 no output schema and no annotations, the description should explain what the report returns and any important call constraints. It only provides a category label and an example request, leaving response semantics, filtering behavior, and endpoint-specific selection logic unexplained.
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 100%, so the schema already documents all parameters. The example query adds a concrete usage pattern for `base`, `domain`, `sort`, `page`, and `per_page`, but it does not clarify the meaning of values like `base=msk` or the `filter` syntax beyond what the schema already provides.
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 identifies the report category ('Контекстная реклама') and the resource ('объявления, уникальные ссылки') and gives the API path, so the topic is inferable. However, it lacks an explicit verb/operation such as 'retrieves' or 'lists', and it does not clearly distinguish this endpoint from closely related siblings like context_ads or context_ads_facts beyond the path component.
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 gives no guidance on when to use this tool instead of the many sibling report endpoints, nor any exclusion criteria. It does not mention that `domain` is required or when a user should prefer the report_group/context_ads_links variant. The example illustrates one call but does not help an agent choose this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_context_concurentsD
Контекстная реклама - конкуренты
Method: GET
Path: /report/simple/context/concurents
Пример запроса https://api.keys.so/report/simple/context/concurents?base=msk&domain=wildberries.ru&sort=cnt%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not mention pagination, sorting, filtering, authentication, rate limits, or response format. The sample URL shows query parameters but does not explain their effects or any operational behavior.
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 extremely short—a phrase and an example URL. While concise in length, it is under-specified rather than well-structured. It lacks a clear opening that defines the tool's action, and the example is not explained. This is not effective conciseness; it is simply minimal.
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 tool with 8 parameters, a required domain, and many sibling tools, this description is grossly incomplete. It does not explain what the report returns, how to interpret results, or any operational details. With no output schema, an agent cannot determine the expected response structure. It fails to provide the context needed 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 100%, so the schema fully documents all 8 parameters. The description adds no semantic meaning beyond what the schema already provides; the example URL merely mirrors the schema. Per the baseline for high schema coverage, this is a 3.
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 is essentially a title, 'Контекстная реклама - конкуренты' (Context advertising - competitors), which restates the tool name without adding a clear verb or resource definition. It does not explicitly state that this returns a report of competitor domains for context ads, nor does it distinguish itself from siblings like keyso_get_report_simple_context_keywords or keyso_get_report_simple_organic_concurents. The example URL hints at a GET request but does not clarify the purpose.
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 alternatives. With over 100 sibling tools, many of which cover context reports (keywords, ads, etc.), the description provides no conditions, exclusions, or mentions of alternatives. An agent has no way to know if this is the right tool for a given task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_context_keywordsC
Контекстная реклама - ключевые слова
Method: GET
Path: /report/simple/context/keywords
Пример запроса https://api.keys.so/report/simple/context/keywords?base=msk&domain=wildberries.ru&sort=pos%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden, and it only reveals that this is a GET request. It does not disclose pagination behavior, response contents, filtering semantics, or rate/limit implications, providing little beyond what an agent could infer from the schema parameters.
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 short and the example request is useful, but the Method and Path lines are largely redundant with the endpoint naming convention used across all sibling tools. This is 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?
For an 8-parameter tool with no output schema and no annotations, the description is far from complete. It never explains what the response contains, what 'base' refers to, what values 'filter' accepts (beyond a doc link), or pagination defaults, leaving critical information for an agent to discover at call time.
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 100%, so the baseline is 3. The example request URL illustrates how base, domain, sort, page, and per_page combine, but it adds marginal value since the sort format (`field|direction`) is already documented in the schema; no new semantic meaning is introduced for token, base_url, or filter.
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's core statement, 'Контекстная реклама - ключевые слова' (contextual advertising - keywords), is a tautology that merely restates the tool name. The Method/Path/example lines provide technical reference but never state what the tool actually does, what data it returns, or how the report is structured, leaving an agent to guess the endpoint's semantics from the endpoint name alone.
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 is given on when to use this tool versus its many siblings, such as keyso_get_report_simple_context_keywords_byads or keyso_get_report_simple_context_ads. The example query implies domain+base inputs, but there is no explicit statement of prerequisites, use cases, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_context_keywords_byadsC
Контекстная реклама - ключевые слова по объявлению
Method: GET
Path: /report/simple/context/keywords/byads
Пример запроса https://api.keys.so/report/simple/context/keywords/byads?base=msk&domain=wildberries.ru&sort=pos%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| ads_id | Yes | in: query | Идентификатор объявления | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It discloses the HTTP method (GET) and path, implying a read-only operation, but does not mention authentication (token), pagination behavior, rate limits, or response format. The example shows query parameters but does not explain how results are returned or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: one line of purpose, then method/path/example. It is front-loaded with the purpose and provides technical details efficiently. No redundant text, but it is perhaps too minimal, leaving out important usage context. Still, it earns a 4 for being concise and structured.
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?
Given 9 parameters and no output schema, the description does not explain the return structure, pagination limits, default values, or error behavior. The example shows pagination parameters but not defaults or response shape. For a report endpoint, an agent would need to know what data is returned. This is a significant gap, especially with no annotations to fall back on.
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 schema provides 100% coverage with descriptions for all 9 parameters, so the baseline is 3. The description adds a concrete example URL demonstrating parameter usage (e.g., `base=msk`, `sort=pos|asc`), which slightly enhances understanding but does not explain parameter semantics beyond what the schema already states. It does not compensate for any gaps since coverage is complete.
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 'Contextual advertising - keywords by ad' and provides the exact path `/report/simple/context/keywords/byads`. It clearly identifies the resource (keywords) and the grouping dimension (by ad), distinguishing it from siblings like `keyso_get_report_simple_context_keywords` (all keywords) and `keyso_get_report_simple_context_ads` (ads themselves). It does not explicitly name alternatives, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description gives the path and an example URL but does not mention scenarios, prerequisites, or when to prefer this over sibling report tools. The need for `ads_id` is implied but not explicitly stated as a selection criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_direct_adsC
Объявления Yandex.Direct по запросу
Method: GET
Path: /report/simple/direct/ads
Пример запроса https://api.keys.so/report/simple/direct/ads?base=msk&kid=17222067&sort=keys_count%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| kid | Yes | in: query | Идентификатор фразы | |
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full transparency burden. It reports the HTTP method and path and gives a sample request, but it does not describe response shape, authentication requirements, pagination behavior, error semantics, or any side effects beyond the generic 'get report' basis of the tool name.
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 compact: a one-line summary plus method, path, and a representative example. It is front-loaded and contains no filler; every line 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?
Despite having eight parameters, many sibling report tools, and no output schema, the description provides only an endpoint summary and example. An agent is not told what fields or metrics the response contains, what the `kid`-based query means exactly, or how this report differs from the adjacent `..._context_ads` and `..._direct_domain` endpoints.
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 100%, so the baseline is 3. The example URL adds a concrete usage pattern (`base=msk&kid=...&sort=keys_count|desc&page=1&per_page=25`) but the description does not explain parameters beyond what the schema already documents.
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 the resource ('Yandex.Direct ads') and the operation ('by query'/'по запросу'), with the HTTP path `/report/simple/direct/ads` reinforcing scope. It is clear enough to distinguish from the sibling `keyso_get_report_simple_context_ads`, though it does not explicitly contrast itself with alternatives.
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 is given about when to choose this endpoint over sibling report endpoints such as `keyso_get_report_simple_direct_domain` or `keyso_get_report_simple_context_ads`. The example URL implies a typical call, but there is no stated condition, prerequisite, or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_direct_domainC
Объявления Yandex.Direct по домену
Method: GET
Path: /report/simple/direct/domain
Пример запроса https://api.keys.so/report/simple/direct/domain?base=msk&domain=wildberries.ru&sort=keys_count%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the GET method and path, which implies a read-only operation, but it does not describe the response format, pagination defaults, authentication requirements, or any limits. This is too thin for a tool with no annotation support.
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 compact and front-loaded: a short Russian summary, then method, path, and an example request. There is no filler, and each line earns its place. It could be more helpful with usage context, but it is efficiently structured.
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 an 8-parameter report endpoint with no output schema and no annotations, the description is incomplete. It lacks return-value information, pagination defaults, and any differentiation from semantically adjacent siblings. The schema covers parameters, but the description does not provide enough surrounding context for reliable tool selection.
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 100%, so the baseline is 3 even without additional parameter explanation. The example URL demonstrates realistic values for base, domain, sort, page, and per_page, but the description adds no semantic meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Объявления Yandex.Direct по домену' (Yandex.Direct ads by domain), which clearly names the resource and the domain-based scope. It also states the HTTP method and path. However, it does not distinguish this from sibling report tools such as keyso_get_report_simple_direct_ads or keyso_get_report_simple_domain_dashboard.
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 alternatives, no exclusions, and no mention of prerequisites. The example request implies usage but does not explain when this endpoint is the right choice among the many sibling report tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_domain_ad_historyC
Информация о домене (Реклама)
Method: GET
Path: /report/simple/domain_ad_history
Пример запроса: https://api.keys.so/report/simple/domain_ad_history?base=msk&domain=wildberries.ru
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral disclosure burden. It does state the HTTP method and endpoint, which implies a read-only operation, but it does not explain what data is returned, whether pagination applies, what 'ad history' covers, or any response format. This is too thin for a tool with no structured safety metadata.
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 compact and scannable, with the summary line, method, path, and example kept to the essentials. There is no fluff, though the structure could be improved by front-loading a more explicit statement of what the report contains.
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 has no output schema and no annotations, and it appears among dozens of similar report tools, so the description needs to clarify the response and selection context. It offers only a vague one-line summary and an endpoint example, leaving the agent uncertain about the return value, supported parameters, and how this differs from sibling ad-related reports.
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 100%, so the baseline is 3. The example request adds mild value by showing `base=msk` and `domain=wildberries.ru`, but the description does not meaningfully enrich the parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource ('domain ad history') through the path `/report/simple/domain_ad_history` and the label 'Реклама', with a clear GET method. It is distinguishable from sibling report tools by the explicit 'ad_history' endpoint, though the prose summary itself is vague and could apply to several advertisement-related tools.
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 is provided about when to use this tool versus alternatives. The example request illustrates usage but gives no context about prerequisites, expected scenarios, or exclusion of sibling tools like context_ads or direct_ads.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_domain_dashboardD
Информация о домене (Дашборд)
Method: GET
Path: /report/simple/domain_dashboard
Пример запроса: https://api.keys.so/report/simple/domain_dashboard?base=msk&domain=wildberries.ru
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries full responsibility. It only states the HTTP method (GET) and gives an example request. It does not disclose the response format, pagination, rate limits, authentication needs beyond the token parameter, or any side effects. For a read-only GET this is a minimal disclosure but still insufficient.
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 extremely concise, front-loading the summary 'Информация о домене (Дашборд)' and then providing method, path, and an example. There is no fluff or redundant text. However, the structure is minimal and could be enhanced with headers or a clearer breakdown, but it is efficient.
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 no output schema, no annotations, and a sparse description, the tool is severely under-specified. The agent cannot know what data the dashboard returns, how to interpret it, or what the 'base' parameter means. For a domain dashboard that likely returns a rich report, this is inadequate.
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 schema already describes all parameters (100% coverage), but the descriptions are minimal ('in: query', 'Имя домена'). The tool description adds an example with base=msk, hinting that 'base' might be a region code, but it does not explain its meaning or possible values. No additional semantics are provided for token or base_url beyond what the schema states.
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 says 'Information about domain (Dashboard)' which is vague. It does not specify what metrics or data the dashboard returns, nor does it differentiate from many sibling tools like keyso_get_report_simple_domain_ad_history or keyso_get_report_simple_top_domain_visibility. The endpoint path and example add little semantic clarity.
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, what scenarios it fits, or how it compares to alternatives. No prerequisites or exclusions are mentioned, leaving the agent to guess the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_keyword_dashboardC
Информация о ключевом слове (Дашборд)
Method: GET
Path: /report/simple/keyword_dashboard
Пример запроса: https://api.keys.so/report/simple/keyword_dashboard?keyword=%D0%9F%D0%BB%D0%B0%D1%81%D1%82%D0%B8%D0%BA%D0%BE%D0%B2%D1%8B%D0%B5%20%D0%BE%D0%BA%D0%BD%D0%B0&base=msk
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| keyword | Yes | in: query | Поисковый запрос | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the behavioral burden. It discloses the HTTP method (GET) and an example request, suggesting a read-only operation, but it does not describe the response format, pagination, authorization requirements, rate limits, or any other runtime behavior.
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 short and front-loaded with the purpose, followed by method/path and an example. There is no redundant prose, though it could add a sentence on expected output without becoming bloated.
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 4 parameters, no annotations, and no output schema, the description is incomplete: it does not define the base parameter semantics, explain the dashboard fields, or give enough context to choose this over sibling tools. The example request is useful but only partial.
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 100%, so the baseline is 3. The description adds an example URL with keyword and base=msk, which helps illustrate usage, but it never explains what 'base' means or which values are valid, leaving that parameter semantically vague.
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 the resource as 'keyword dashboard' and provides an explicit endpoint path, so an agent can tell it is a GET report about a single keyword. It is clear, but it does not explicitly differentiate this tool from the many other report/simple keyword tools, and it omits what metrics the dashboard contains.
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 about when to use this tool versus the dozens of sibling keyword-report tools such as organic_keywords, context_keywords, or similarkeys. The phrase 'keyword dashboard' implies a use case, but no exclusions or alternatives are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_links_backlinksC
Входящие ссылки
Method: GET
Path: /report/simple/links/backlinks
Пример запроса https://api.keys.so/report/simple/links/backlinks?domain=wildberries.ru&sort=created_at%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only reveals that this is a GET request (implying read-only) and shows a sample URL; it says nothing about pagination behavior, rate limits, auth requirements, response shape, or data volume. This is a significant gap for a tool with zero annotation coverage.
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 very compact — a label, method, path, and one example — with no wasted words. The example is front-loaded and immediately useful. It is under-specified overall, but on pure size/structure grounds it earns a good score.
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?
Given 7 parameters, no output schema, and no annotations, the description is materially incomplete. It fails to explain filter semantics (which are referenced but not described), what the response contains, how pagination behaves, or how this endpoint relates to the surrounding backlink-tool family.
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 100%, so the baseline is 3. The example query demonstrates how domain, sort (created_at|desc), page, and per_page combine, adding slight value beyond the schema. However, it adds no meaning for the filter parameter or token override, so it doesn't rise above the baseline.
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 opens with 'Входящие ссылки' ('Incoming links'), which is a noun phrase that essentially restates 'backlinks' from the tool name rather than a clear verb+resource statement. The method/path/example add operational specificity, but the description does not distinguish this from the many sibling backlink tools (backlinks_domains, backlinks_ip, backlinks_anchor, outlinks variants).
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 is given about when to use this tool versus the related siblings such as keyso_get_report_simple_links_backlinks_domains or keyso_get_report_simple_links_outlinks. The example URL implies usage but there are no explicit contexts, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_links_backlinks_73ce94f4B
Ссылающиеся домены c данными по конкретному домену
Method: GET
Path: /report/simple/links/backlinks-domains?view=domain
Пример запроса https://api.keys.so/report/simple/links/backlinks-domains?domain=wildberries.ru&view=domain&sort=outlinks_count%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| view | Yes | in: query | Фильтр данных по конкретному домену | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It only reveals that this is a GET request and hints at pagination via the example query; it does not describe response contents, authentication requirements, defaults, or any constraints. This is thin disclosure for a tool with no annotation support.
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 compact and front-loaded with the core purpose, followed by the endpoint path and a concrete example. No filler or redundant prose is present, though the method/path lines could arguably have been merged with the example.
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 GET report endpoint with well-documented parameters, the example and schema are enough to construct a valid request. However, there is no output-shape information and no guidance for choosing this tool among the many closely related backlinks/outlinks siblings, so completeness is only adequate.
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 100% and each parameter already has a meaningful description, so the baseline is 3. The example adds a concrete sort value and pagination usage, but the description does not substantially explain parameters beyond what the schema already provides.
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 clearly identifies the resource: referring domains with data for a specific domain. The path and example with domain=wildberries.ru reinforce the exact endpoint. It does not explicitly distinguish itself from similarly named siblings like keyso_get_report_simple_links_backlinks_domains, 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?
The phrase 'по конкретному домену' and the example imply the intended use case: retrieving referring-domain data for one domain. However, there is no explicit when-to-use guidance or comparison with sibling alternatives such as backlinks vs. outlinks or the other backlinks-domains variants.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_links_backlinks_anchorC
Анкоры
Method: GET
Path: /report/simple/links/backlinks-anchor
Пример запроса https://api.keys.so/report/simple/links/backlinks-anchor?domain=wildberries.ru&sort=backlinks_count%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals the HTTP method and an example request, implying a read operation, but it does not mention authentication requirements, token/base_url overrides, pagination behavior, rate limits, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very compact: a short label, method, path, and one example. It contains no filler, and the essential routing facts are front-loaded. It could be somewhat more informative while still concise, but it is efficient as written.
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 no output schema and no annotations, the description should clarify what data is returned and any behavioral constraints. It only provides a path and example, leaving response shape, default pagination, and the relationship to similar report endpoints unstated. This is insufficient for an agent to know what to expect from the 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 coverage is 100%, so the schema already documents all seven parameters. The example query adds a concrete usage pattern for domain, sort, page, and per_page, but the description itself does not add semantic meaning beyond what the input schema provides. The baseline 3 applies.
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 identifies the endpoint resource as 'Анкоры' (anchors) and provides the exact HTTP method and path, making it clear this retrieves the backlinks anchor report. The /report/simple/links/backlinks-anchor path differentiates it from sibling link-report tools, though there is no explicit verb phrase beyond the generic GET method.
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 usage guidance is provided. The description does not state when to choose this tool over sibling tools such as backlinks, outlinks, domains, or IP reports, and it offers no exclusions or alternative recommendations. The example request shows how to call it but not when.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_links_backlinks_d060950eD
Ссылки по IP - подсети
Method: GET
Path: /report/simple/links/backlinks-ip/subnet
Пример запроса https://api.keys.so/report/simple/links/backlinks-ip/subnet?domain=wildberries.ru&sort=domains_count%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the HTTP method (GET) and path, but does not mention any behavior such as pagination, filtering, authentication requirements, rate limits, or what the response contains. This is a significant gap for a tool with no structured 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?
The description is extremely concise but under-specified. It is essentially a title fragment plus method/path/example, lacking any structured explanation. While brevity is good, this is not a proper description; it is more of a label and would benefit from at least one sentence clarifying the tool's purpose and key parameters.
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 tool with 7 parameters, no output schema, and no annotations, the description is grossly incomplete. It does not explain what the report returns, how to use filters or sorting, pagination behavior, or any other operational details. The example provides a partial template but is insufficient for an agent to correctly invoke the tool in varied scenarios.
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 100%, meaning all parameters have descriptions in the input schema. The description adds an example query showing usage of domain, sort, page, and per_page, which provides a small amount of practical context beyond the schema. However, it does not elaborate on parameter semantics or relationships, so it stays at the baseline for full schema coverage.
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 provides a Russian phrase 'Ссылки по IP - подсети' (Links by IP - subnets) along with the HTTP method and path, which together indicate the tool retrieves backlinks grouped by IP subnet. However, it lacks an explicit verb like 'Get' or 'Retrieve', and the purpose is not clearly stated as a full sentence. It is distinguishable from siblings only by reading the path, not by the description text itself.
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 sibling tools such as keyso_get_report_simple_links_backlinks or keyso_get_report_simple_links_backlinks_domains. The description does not mention any conditions, alternatives, or exclusions, leaving the agent to guess which report variant is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_links_backlinks_domainsD
Ссылающиеся домены
Method: GET
Path: /report/simple/links/backlinks-domains
Пример запроса https://api.keys.so/report/simple/links/backlinks-domains?domain=wildberries.ru&sort=outlinks_count%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state that this is a read-only operation, whether pagination applies, or what the response format is. The example URL implies pagination but does not explain behavior or edge cases.
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 extremely terse, consisting of a title, method, path, and an example URL. While it avoids verbosity, it is under-specified rather than efficiently concise. The example is helpful, but the structure does not front-load a clear purpose or usage context.
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 no output schema and a host of similar sibling tools, the description is incomplete. It does not explain what data is returned, how it differs from other backlink reports, or any limitations. The schema covers parameters, but the tool's function and placement within the API remain unclear.
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 100%, so every parameter already has a description in the input schema. The description adds only a concrete example showing how sort, page, and per_page are used, which is mildly useful but does not go beyond what the schema already conveys. Baseline 3 is appropriate.
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 is essentially a noun phrase 'Ссылающиеся домены' (referring domains) plus the endpoint path. It identifies the resource but not a specific action or what data is returned. It does not differentiate from closely related siblings like keyso_get_report_simple_links_backlinks or keyso_get_report_simple_links_backlinks_anchor.
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 similar backlink/outlink report tools. No mention of context, prerequisites, or alternatives. An agent has no way to know why this specific endpoint should be chosen over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_links_backlinks_ipC
Ссылки по IP
Method: GET
Path: /report/simple/links/backlinks-ip
Пример запроса https://api.keys.so/report/simple/links/backlinks-ip?domain=wildberries.ru&sort=backlinks_count%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the HTTP method GET and the exact path, implying a read-only operation, and the example hints at pagination/sorting. But it does not mention response shape, auth requirements, rate limits, or any endpoint-specific 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?
The description is compact and front-loads the essential endpoint information: name, method, path, and an example request. There is no filler, though the single Russian phrase 'Ссылки по IP' is terse enough to feel under-specified.
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?
There is no output schema and many near-identical sibling tools exist. The description does not explain the returned fields, how IP grouping works, pagination semantics, or why this endpoint should be preferred over alternatives, leaving a 7-parameter report tool insufficiently contextualized.
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 100%, so the schema already documents all parameters. The example query adds concrete value by showing a real domain, URL-encoded sort syntax (`backlinks_count%7Cdesc`), and page/per_page usage, helping an agent construct a valid request.
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 identifies a resource ('Ссылки по IP' / Links by IP) and gives the exact path /report/simple/links/backlinks-ip, which distinguishes it from backlinks/domains/anchor siblings. However, it is a noun phrase with no verb, and it does not explain what the report actually returns or how the data is structured.
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 similar link-report siblings, and no exclusions or alternatives are mentioned. The example request demonstrates parameters but not the decision context for selecting this endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_links_outlinksC
Исходящие ссылки
Method: GET
Path: /report/simple/links/outlinks
Пример запроса https://api.keys.so/report/simple/links/outlinks?domain=wildberries.ru&sort=created_at%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It only states 'Method: GET' and the path, which implies a read-only operation, but it does not mention authentication requirements, pagination behavior, rate limits, or what the response contains. The example request adds some context but no substantive behavioral transparency.
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 compact and front-loaded: it starts with the resource label, then gives method, path, and a concrete example request. There is no filler, though it is terse enough that some useful context is missing.
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?
Given no output schema and many closely related sibling tools, the description is incomplete. It does not describe what an outlink record contains, how the result is structured, or how this report differs from the outlinks_domains and backlinks variants. The example URL is helpful but insufficient for confident tool selection.
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 100%, so the parameters are already well documented. The description adds an example URL with sort, page, and per_page values, which slightly clarifies usage, but it does not materially explain parameters beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource as 'Исходящие ссылки' (outgoing links) and provides the exact GET endpoint, so an agent can tell this is the outlinks report. However, it uses a noun phrase rather than a verb and does not explicitly differentiate itself from closely named siblings like outlinks_domains or backlinks.
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 is given about when to use this tool versus alternatives such as the backlinks reports or the outlinks_domains variant. The endpoint and name imply the purpose, but the description never states selection criteria or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_links_outlinks__154bc0f2B
Исходящие домены c данными по конкретному домену
Method: GET
Path: /report/simple/links/outlinks-domains?view=domain
Пример запроса https://api.keys.so/report/simple/links/outlinks-domains?domain=wildberries.ru&view=domain&sort=backlinks_count%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| view | Yes | in: query | Фильтр данных по конкретному домену | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the HTTP method (GET), the endpoint path, and states the result is outgoing domains for a specific domain, but it does not describe result fields, pagination defaults, or auth requirements. The example demonstrates a concrete call, which is useful, but behavioral transparency remains partial.
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 definition is compact and front-loaded: a one-line purpose statement, then method/path/example. There is no filler, no redundant restatement of schema fields, and every part contributes to understanding or invoking the tool.
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 8 parameters, no output schema, and no annotations, the description should clarify output structure and operational context. It only says 'исходящие домены c данными' and gives an example, leaving the agent to guess what fields are returned and how paging and sorting behave by default. This is insufficient for confident response handling among many sibling report 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?
Schema coverage is 100%, so the baseline is 3; the description adds a complete example URL showing domain=wildberries.ru&view=domain&sort=backlinks_count%7Cdesc&page=1&per_page=25, illustrating how to populate required and common optional fields. It also reinforces that the endpoint is domain-specific, which helps the agent understand the domain and view parameters.
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 resource and task: 'Исходящие домены c данными по конкретному домену' and gives the exact endpoint path for outlinks-domains?view=domain. This is not a tautology and is clear, but it does not differentiate from sibling keyso_get_report_simple_links_outlinks_domains, which appears to cover the same endpoint.
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 is an endpoint specification rather than decision guidance. It never says when to prefer this tool over siblings such as keyso_get_report_simple_links_outlinks_domains or keyso_get_report_simple_links_outlinks, nor does it state exclusions or prerequisites. The only hint is 'по конкретному домену', which scopes the domain but does not address tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_links_outlinks_domainsC
Исходящие домены
Method: GET
Path: /report/simple/links/outlinks-domains
Пример запроса https://api.keys.so/report/simple/links/outlinks-domains?domain=wildberries.ru&sort=backlinks_count%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only supplies the resource name, Method GET, Path, and a sample URL. It does not mention whether the result is a paginated list, what fields are returned, or any other operational behavior.
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 compact and front-loaded with the resource name, followed by Method, Path, and a concrete example. It has no filler or redundant prose, though it sacrifices explanatory depth for brevity.
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 7-parameter endpoint with no output schema and no annotations, this description is thin. It does not describe the returned data shape, pagination behavior, or the report context, leaving an agent to guess what it will get beyond the URL construction.
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 schema already documents all parameters, so the baseline is 3. The example request adds practical value by showing how domain, sort with URL-encoded `backlinks_count|desc`, page, and per_page are combined into a real call, which is useful beyond 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?
The description names the resource ('Исходящие домены' / outgoing domains) and provides the HTTP method and path, so an agent can infer this is a GET for outlink domains. However, it lacks an explicit verb and does not clearly state what the response represents, nor does it differentiate this from the many sibling outlink/backlink domain endpoints.
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 is given about when to use this endpoint instead of alternatives such as keyso_get_report_simple_links_outlinks, keyso_get_report_simple_links_outlinks__154bc0f2, or keyso_get_report_simple_links_backlinks_domains. There are no exclusions, prerequisites, or context to help an agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_links_pagesC
Популярные страницы
Method: GET
Path: /report/simple/links/pages
Пример запроса https://api.keys.so/report/simple/links/pages?domain=dodopizza.ru&sort=numurl%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden of disclosing behavior, but it only states 'Method: GET' and gives an example request URL. It does not describe response shape, pagination defaults, required authentication, or what 'popular pages' means in terms of returned data.
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 definition is compact and front-loaded with the 'Популярные страницы' label, followed by method/path and a concrete request example. It avoids filler, though the terse snippet-style structure sacrifices some descriptive completeness.
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 GET report tool with no output schema and no annotations, the description omits return format, default paging behavior, and the meaning of 'popular' in this report. The single example is useful but not sufficient for an agent to confidently select this tool among 140+ 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 coverage is 100%, so the schema already documents all parameters, yielding a baseline of 3. The example URL usefully shows domain, sort, page, and per_page in context, but the description adds no semantic explanation beyond what the schema provides.
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 labels the tool as 'Популярные страницы' ('Popular pages') and provides the endpoint path, but it never states a clear verb such as 'retrieve' or 'return'. This hints at the resource but is too vague to distinguish it from the many sibling link-report tools like links_backlinks or links_outlinks.
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 is given about when to use this tool versus alternatives. With a long list of similar report_simple_links_* and report_simple_* siblings, the absence of any selection criteria is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_organic_ai_answersB
Запросы в ИИ-ответах
Method: GET
Path: /report/simple/organic/ai-answers
Возвращает список запросов, по которым сайт был упомянут в ИИ-ответах (Yandex Alice, Google SGE). Пример запроса: https://api.keys.so/report/simple/organic/ai-answers?base=msk&domain=wildberries.ru&sort=superwsk%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the GET method and that it returns a list, but does not mention response format, pagination behavior, rate limits, or authentication requirements. It is minimal but not misleading.
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 brief, with a clear title and a useful example. It front-loads the core purpose and includes a concrete request example, which is valuable. No wasted words, though it could be more structured.
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 an 8-parameter tool with no output schema, the description is incomplete. It does not explain response structure, pagination defaults, sorting options, or the filter parameter (which only references an external section). The example covers only a few parameters, leaving gaps for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents parameters, and the example URL adds practical meaning by showing how base, domain, sort, page, and per_page are used together. This goes beyond the schema's terse 'in: query' descriptions for some fields.
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 clearly states the tool returns a list of queries where the site was mentioned in AI answers, specifying the AI sources (Yandex Alice, Google SGE). It uses a specific verb and resource. However, it does not explicitly differentiate from sibling report tools, though the AI-answers focus is distinct.
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 tool versus alternatives. There is no mention of prerequisites, exclusions, or conditions that would select this over similar report tools. The example URL implies a call pattern but not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_organic_concurent_pagesC
Органическая выдача - конкуренты страницы
Method: GET
Path: /report/simple/organic/concurent_pages
Пример запроса https://api.keys.so/report/simple/organic/concurent_pages?base=msk&domain=wildberries.ru&page_url=%2Fbrands%2Fadidas&sort=pos%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| page_url | Yes | in: query | Url страницы | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the method is GET and shows a path, but it does not disclose pagination behavior, response structure, authentication requirements, rate limits, or error handling. The example hints at pagination via 'page' and 'per_page' params but does not explain the behavior. This is insufficient for an API tool with no other context.
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 concise: a one-line title, method/path, and an example. It is front-loaded with the primary purpose. It avoids fluff and gets to the point. However, it could be slightly more structured (e.g., a sentence on what the response contains), but it is appropriately brief for the information it conveys.
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 tool with 9 parameters, no output schema, and no annotations, the description is minimal and does not provide enough context for an agent to fully understand the expected behavior. It does not describe the response format, pagination behavior, or any constraints. It also does not differentiate from the many sibling tools in the same 'report/simple' category. The example is helpful but not sufficient for complete understanding.
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 schema already has 100% coverage for all parameters, so the baseline is 3. The description adds an example that clarifies parameter usage (e.g., sort format 'pos|asc' and page/per_page), but does not provide deeper semantics beyond the schema. Some parameters like 'base', 'domain', 'page_url' are only described as 'in: query' or with minimal Russian phrases. The example adds marginal value but does not fully compensate for the lack of detailed parameter explanations.
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 'Органическая выдача - конкуренты страницы' (organic results - page competitors), which clearly indicates the tool returns competitor pages for a given page in organic search. It also provides the HTTP method and path, and an example URL that demonstrates the purpose. However, it does not explicitly describe the output format, but the core function is identifiable and distinguishable from sibling tools like 'concurents' (likely domain-level competitors) vs 'concurent_pages' (page-level).
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. It does not mention any distinguishing conditions, such as 'use this for page-level competitors' or 'use the domain-level tool for domains'. The example shows parameter usage but no decision criteria. Given many sibling tools with similar names, the lack of usage guidance is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_organic_concurentsC
Органическая выдача - конкуренты
Method: GET
Path: /report/simple/organic/concurents
Пример запроса https://api.keys.so/report/simple/organic/concurents?base=msk&domain=wildberries.ru&top=10&sort=cnt%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | in: query | Охват позиций | |
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of behavioral disclosure. It only states the HTTP method, path, and an example request; it does not describe the response shape, pagination defaults, required authentication, rate limits, or side effects. The GET method implies a read-only operation, but that is minimal.
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 compact and front-loaded: resource label, method, path, and a representative example. There is no filler or repetition, and the example earns its place by demonstrating parameter usage.
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 no output schema and no annotations, the description should explain what the report returns and how results behave, but it does not. The example query helps the agent format a request, yet the agent is left without information about response contents, error handling, pagination defaults, or the meaning of 'competitors' in this report.
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 input schema already documents all 9 parameters, with 100% coverage. The description adds a concrete example URL showing how base, domain, top, sort, page, and per_page are combined, including sort direction syntax. This is helpful but does not provide meaningful semantics beyond what the schema already exposes.
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 labels the resource as 'Органическая выдача - конкуренты' and includes the HTTP method and path, making it clear this fetches organic-search competitor data. It is distinguishable from sibling 'context_concurents' and 'group_organic_concurents' tools via the 'organic' and 'simple' path components. However, it does not use an explicit verb like 'retrieves' or 'lists', so it is clear but slightly under-specified.
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 about when to use this tool versus the many similar sibling report tools, no exclusions, and no mention of alternatives such as report_group_organic_concurents_rid or report_simple_context_concurents. The intended usage must be inferred entirely from the name, path, and the one-word label.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_organic_keywordsC
Органическая выдача - ключевые слова
Method: GET
Path: /report/simple/organic/keywords
Пример запроса https://api.keys.so/report/simple/organic/keywords?base=msk&domain=wildberries.ru&sort=pos%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | in: query | URL | |
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице | |
| includeSubLevels | No | in: query | Включить подуровни |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It discloses that this is a GET request and shows an example URL, which implies a read operation, but it does not describe the response shape, pagination behavior, or any operational constraints. This is insufficient for a 10-parameter endpoint.
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 compact and front-loaded: title, method, path, and example. Every line earns its place and there is no filler or redundant prose.
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?
There is no output schema and no description of return values, which leaves a significant gap. Given 10 parameters and many sibling report tools, the description does not provide enough context about filters, pagination defaults, or the meaning of includeSubLevels to be considered complete.
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 100%, so the baseline is 3. The example adds a concrete usage pattern for domain, base, sort, page, and per_page, but it does not clarify opaque parameters like filter, includeSubLevels, base_url, or token beyond what the schema already states.
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 says 'Органическая выдача - ключевые слова' and provides the exact path, so it clearly points to an organic-keywords report. However, it lacks a verb and does not differentiate this endpoint from close siblings like keyso_get_report_simple_organic_keywords_bypage or keyso_get_report_simple_organic_lost_keywords.
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 alternatives. The example request demonstrates one valid call, but no context, exclusions, prerequisites, or selection criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_organic_keywords_bypageB
Органическая выдача - ключевые слова по странице
Method: GET
Path: /report/simple/organic/keywords/bypage
Пример запроса https://api.keys.so/report/simple/organic/keywords/bypage?base=msk&domain=wildberries.ru&page_url=%2Fbrands%2Fadidas&sort=pos%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| page_url | Yes | in: query | Url страницы | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the burden of behavioral disclosure. It explicitly states the HTTP method as GET and provides a sample request, which makes clear this is a read-only operation with no destructive side effects. However, it does not describe pagination behavior, defaults, response structure, or any rate-limit/auth nuances.
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 compact and front-loaded with the core purpose, followed by method, path, and a concrete example. The example is useful rather than redundant, though the formatting could be slightly more structured. Overall, there is no wasted text.
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 tool with nine parameters, no output schema, and no annotations, the description is too sparse. It does not explain what the response looks like, what the returned keyword data contains, how pagination works, or when to prefer this endpoint over the many sibling report endpoints. The example helps, but important contextual information is missing.
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 100%, so the schema already documents all nine parameters. The example request adds a concrete illustration of how to combine base, domain, page_url, sort, page, and per_page, including URL-encoded page_url, but it does not add significant meaning beyond the schema's existing descriptions.
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 identifies the resource as 'Органическая выдача - ключевые слова по странице' ('Organic search results - keywords by page'), which clearly indicates this tool returns organic keywords for a specific page. There is no explicit verb like 'retrieves' or 'lists,' but the GET method and tool name make the operation clear. It does not explicitly contrast with sibling tools such as keyso_get_report_simple_organic_keywords, so it lacks strong differentiation.
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 provides no guidance on when to use this tool versus siblings like keyso_get_report_simple_organic_keywords or keyso_get_report_simple_organic_sitepages. It only gives the endpoint and an example request, leaving the selection criteria to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_organic_lost_keywordsC
Органическая выдача - Потерянные запросы
Method: GET
Path: /report/simple/organic/lost_keywords
Пример запроса https://api.keys.so/report/simple/organic/lost_keywords?base=msk&domain=dodopizza.ru&sort=pos%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It discloses the HTTP method (GET) and path, which implies a read operation, but says nothing about authentication needs (the token param exists but is undocumented), pagination limits (page/per_page exist but no default or cap), or the structure of the returned data. An agent cannot anticipate the response or the operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently front-loaded with the resource title and a compact method/path/example block. However, it is so terse it borders on a stub — concise at the expense of substantive context. The example URL is the most useful element but occupies most of the description without explaining what the report returns.
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?
This is a report tool with no output schema and no annotations, so the description must explain what data comes back. It doesn't describe the result structure, the meaning of 'lost keywords' in this API, or the behavior of the response. With 8 parameters and no output schema, the description leaves an agent guessing about return shape and report semantics.
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 100%, so all 8 parameters are documented in the schema, setting the baseline at 3. The description's example URL adds marginal value by showing how base, domain, sort, page, and per_page combine in a real call, but it doesn't explain any parameter semantics beyond the schema. The sort format (field|direction) is only spelled out 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?
The description states the resource ('Потерянные запросы' — lost queries in organic search) and the HTTP method and path. The name and title together make it clear this is the report for lost organic keywords, and it can be told apart from siblings like keyso_get_report_simple_organic_lost_pages or keyso_get_report_simple_organic_keywords by the resource name. However, it never explains in plain language what 'lost keywords' means in this system, leaving the semantic load mostly on the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this report versus the many sibling report tools. There are no stated exclusions, no mention of when 'lost keywords' is the right report to pull, and no alternative tools named. The example request implies a typical call but provides no decision context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_organic_lost_pagesC
Органическая выдача - Потерянные страницы
Method: GET
Path: /report/simple/organic/lost_pages
Пример запроса https://api.keys.so/report/simple/organic/lost_pages?base=msk&domain=dodopizza.ru&sort=it50%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It indicates it's a GET request and shows query parameters, but it doesn't describe the response structure, pagination behavior, authentication requirements (though token parameter exists), or any limitations. The example is the only behavioral hint.
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 extremely concise: a title line, method, path, and a single example. It front-loads the intent and avoids redundancy. It could be considered under-specified, but it earns points for efficiency and no wasted words.
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 tool with 8 parameters and no output schema, the description is minimal. It doesn't explain what 'lost pages' means, what the response contains, or any constraints. The example is helpful but doesn't substitute for a high-level explanation. Overall, it's incomplete for an agent to fully understand the tool's capabilities.
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 input schema has 100% description coverage, so all parameters are already documented. The description adds no extra meaning beyond illustrating parameter usage in a sample URL. The baseline of 3 is appropriate as the schema does the heavy lifting.
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 'Органическая выдача - Потерянные страницы' (Organic results - Lost pages) and provides the endpoint path, making it clear this tool retrieves lost pages from organic search. It distinguishes from siblings like 'lost_keywords' or 'sitepages' by the 'lost_pages' suffix, though it doesn't explicitly phrase it as a query command.
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 is given on when to use this tool over alternatives. It only shows an example request, leaving the agent to infer usage context from the name and path. There's no mention of typical scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_organic_sitepag_586cf11fD
Органическая выдача - Запросы сайта
Method: GET
Path: /report/simple/organic/sitepages/withkeys
Пример запроса https://api.keys.so/report/simple/organic/sitepages/withkeys?base=msk&domain=dodopizza.ru&sort=url%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does not mention that the tool is read-only (GET), what data it returns, pagination behavior, authentication requirements, or any side effects. It merely states the endpoint and an example call, leaving the agent uninformed about the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short but under-specified rather than concise. It lacks a clear statement of purpose or structure, jumping straight to method/path/example. It is not front-loaded with useful information; it is essentially raw API documentation, not a tool description. Efficiency without substance is not 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?
For a tool with 8 parameters, no output schema, and no annotations, the description is drastically incomplete. It does not explain what the report contains, how to interpret results, how filtering works (beyond a vague link in the schema), or any other operational context. An agent would be unable to use this tool correctly based on the description alone.
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 100%, meaning all 8 parameters have descriptions in the schema itself. The tool description adds no parameter semantics beyond that. Per guidelines, baseline is 3 when schema covers parameters, and the description does not need to repeat them. However, it could have clarified usage context, but that is not required for this dimension.
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 is a bare phrase 'Органическая выдача - Запросы сайта' (Organic results - Site queries) plus method/path/example. It does not state a clear action or resource; it does not explain what the tool returns or what operation it performs. The example URL hints at listing site pages with keywords, but this is not articulated. It is vague and does not distinguish from many sibling report tools.
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 any alternative. No mention of scenarios, prerequisites, or exclusions. The description only provides technical endpoint details without any usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_organic_sitepagesC
Органическая выдача - cтраницы
Method: GET
Path: /report/simple/organic/sitepages
Пример запроса https://api.keys.so/report/simple/organic/sitepages?base=msk&domain=wildberries.ru&sort=it50%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It fails to mention authentication requirements, pagination behavior, return format, rate limits, or any side effects. Being a GET endpoint implies read-only, but this is not stated. The description is purely mechanical (method, path, example) without behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the purpose, method, and path. It avoids unnecessary detail and includes a practical example. The structure is efficient, though it could be slightly more informative without becoming verbose.
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?
Given the tool has 8 parameters, no output schema, and no annotations, the description is incomplete. It does not describe what the report returns, how to interpret results, or any operational context (e.g., required authentication via token). An agent lacks sufficient information to understand the tool's full behavior and output, making it inadequate for confident 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 100%, so all 8 parameters are documented. The description adds value by providing a concrete example URL that shows how base, domain, sort, page, and per_page are used together, clarifying format and combination. However, it does not explain parameter semantics beyond what the schema already states, such as the meaning of 'base' or sorting options. The example is helpful but not extensive.
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 clearly identifies the tool as retrieving organic search results pages ('Органическая выдача - cтраницы') and provides the HTTP method and path. This distinguishes it from sibling tools like organic_keywords or organic_concurents, as it specifically targets sitepages. However, it is terse and relies on the name for clarity.
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 explicit guidance on when to use this tool versus alternatives. The description only shows an example request, implying usage but not stating conditions or exclusions. There is no mention of prerequisites, preferred scenarios, or comparison to sibling report tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_similarkeysC
Дополняющие фразы
Method: GET
Path: /report/simple/similarkeys
Пример запроса https://api.keys.so/report/simple/similarkeys?base=msk&keyword=%D0%BF%D0%BB%D0%B0%D1%81%D1%82%D0%B8%D0%BA%D0%BE%D0%B2%D1%8B%D0%B5%20%D0%BE%D0%BA%D0%BD%D0%B0 &sort=wsk%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| keyword | Yes | in: query | Поисковый запрос | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but it only provides the HTTP method, path, and an example request. It does not describe what the response contains, whether pagination has defaults, what authorization is needed, or how results are scoped, so the agent gets only a minimal read-only hint from 'GET'.
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 text is short and contains no obvious fluff, but it is under-specified rather than effectively concise. A noun phrase, method, path, and a single example do not form a complete tool description.
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 report endpoint with 8 parameters, no output schema, and no annotations, the description is missing core context: what the complementary phrases look like, default page/per_page values, pagination behavior, and how this report relates to sibling reports. The example request helps but does not make the tool safely selectable and callable by an agent.
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 schema already describes all parameters with 100% coverage, including sort format and filter details. The example URL demonstrates combining base, keyword, sort, page, and per_page, slightly reinforcing the schema, but the description does not add significant semantic meaning beyond it.
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 opens with 'Дополняющие фразы' and an explicit GET path, so an agent can infer that this endpoint returns complementary phrases for a keyword. However, it lacks a clear verb such as 'returns' or 'fetches', and the noun phrase alone does not strongly distinguish it from the many report_simple_* sibling tools.
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 sentence explains when to use this tool versus the many sibling report tools. The endpoint and 'Дополняющие фразы' imply use for similar/complementary phrases, but there is no explicit condition, alternative, or exclusion, leaving selection mostly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_report_simple_top_domain_visibilityB
Рейтинг сайтов по видимости
Method: GET
Path: /report/simple/top_domain_visibility
Пример запроса https://api.keys.so/report/simple/top_domain_visibility?base=msk&domain=dodopizza.ru&sort=&page=54&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It does state that this is a GET-style read operation and that it returns a visibility rating, and it gives a concrete example request. However, it does not mention auth requirements, pagination behavior, or what fields the response contains, leaving notable gaps.
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 compact and front-loaded: a one-phrase purpose, followed by method, path, and a realistic example. Every element earns its place and there is no filler or repetition.
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 has seven parameters, no output schema, and no annotations, so the description should explain more about what the response looks like and what 'base' means. The example makes a plausible call, and the schema documents most parameters, but an agent is left guessing about response structure and pagination defaults.
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 100%, so the baseline is 3 even without extra parameter information. The example request adds a concrete illustration of base, domain, sort, page, and per_page usage, but it does not explain the meaning of 'base=msk' or add semantic detail beyond 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?
The description opens with 'Рейтинг сайтов по видимости' (rating of sites by visibility), which clearly identifies the resource and the kind of output. It is not a tautology and is specific about what the tool reports, but it does not contrast with the many sibling report_simple_* tools, so it misses the top score.
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 provides no guidance on when to use this tool instead of alternatives such as keyso_get_report_simple_organic_keywords or keyso_get_report_simple_links_backlinks. The method/path/example block shows how to construct a request but gives no selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_robots_dataA
Анализ robots.txt - данные файла за определенную дату
Method: GET
Path: /robots/data
Пример запроса https://api.keys.so/robots/data?domain=keys.so
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | in: query | Дата изменения, если не указана - последнее изменение | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the behavioral burden. It does indicate this is a GET request, implying a read-only operation, and shows the request path. However, it leaves response format, auth behavior, error cases, and rate-limit implications implicit.
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 short, front-loaded with purpose, then method/path, then a concrete example. Every sentence earns its place and there is no filler or repetition.
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 data tool, the schema plus the GET endpoint and example are mostly sufficient to call it. However, there is no output schema and the description does not clarify the response shape, nor does it connect this tool to keyso_get_robots_dates for date discovery.
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 input schema has 100% description coverage for all four parameters, including the date fallback behavior and token/base_url overrides. The tool description adds only a domain example URL and no extra parameter semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource: robots.txt file data for a given domain and date, with an endpoint path and example request. It does not explicitly contrast this with the sibling keyso_get_robots_dates, so differentiation is mostly carried by the tool name and the word '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?
The description implies the use case: fetch robots.txt data for a domain, optionally for a particular date. It provides an example request but gives no explicit when-to-use or when-not-to-use guidance and does not point to keyso_get_robots_dates as the way to discover available dates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_robots_datesC
Анализ robots.txt - даты изменения файла
Method: GET
Path: /robots/dates
Пример запроса https://api.keys.so/robots/dates?domain=keys.so
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| domain | Yes | in: query | Имя домена | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It provides the HTTP method and path, implying a read-only GET request, but doesn't mention authentication requirements (token), response format, rate limits, or error behavior. This is minimal disclosure.
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 concise, with the purpose stated first, followed by method, path, and a request example. It is front-loaded and free of unnecessary filler, though the Russian wording might reduce clarity for non-Russian agents.
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?
Given no output schema and no annotations, the description is incomplete. It doesn't describe the response structure, how it differs from the sibling keyso_get_robots_data, or any error conditions. For a simple GET with one required parameter, this is borderline, but the lack of output expectations and differentiation makes it insufficient.
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 100%, so the baseline is 3. The description's example request clarifies the domain parameter usage, but it doesn't add meaning for the token or base_url parameters beyond the schema. It adds slight value through the example but doesn't fully compensate for the absence of extra 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?
The description states the tool analyzes robots.txt modification dates, clearly indicating the resource and operation. It doesn't explicitly name the sibling tool keyso_get_robots_data, but the focus on 'dates' naturally distinguishes it from a generic robots data tool.
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 is provided on when to use this tool versus alternatives. The description doesn't mention any context, prerequisites, or exclusions, leaving the agent to infer usage from the name and path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_serpB
Онлайн парсер выдачи - список заданий на парсинг
Method: GET
Path: /serp
Пример запроса https://api.keys.so/serp?sort=created_at%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| isMain | No | in: query | **Список проектов:**<br> `true` — только созданные вручную<br> `false` — все проекты, включая созданные автоматически родительскими типами проектов<br><br> **Иерархия проектов:**<br> `Мониторинг » Кластеризатор » Выдача | Wordstat` | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does reveal 'Method: GET', implying a read-only operation, and shows a concrete query example; however, it does not disclose authentication requirements, pagination behavior or limits, response shape, or how the isMain filter changes what gets listed. A list endpoint with zero annotation coverage needs more than a method and an example.
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?
At three short lines (label, method/path, example), the description is compact and front-loads the purpose before the endpoint details. The only minor waste is the phrase 'Онлайн парсер выдачи', which is a product-style label partially redundant with 'список заданий на парсинг'.
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 tool with 6 parameters, no output schema, and no annotations, the description is thin: it never explains what a returned parsing task contains, what fields are in each list item, when the token override is needed, or how tasks get created (via keyso_post_serp). An agent cannot predict the response structure at all, which matters for a list endpoint in a large sibling family.
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 100%, so the baseline is 3; the description adds genuine value by showing a worked example URL (`sort=created_at%7Cdesc&page=1&per_page=25`), which demonstrates the concrete sort field name and the URL-encoding of the pipe delimiter that the schema does not mention. This extra example helps an agent construct a valid request beyond what the schema alone communicates.
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 the resource ('Онлайн парсер выдачи') and the specific operation ('список заданий на парсинг' — list of parsing tasks), which is more specific than the bare name keyso_get_serp. It implies distinction from siblings like keyso_get_serp_id (single task) and keyso_post_serp (create task), though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus any of the 100+ siblings — no mention of keyso_get_serp_id for individual tasks, keyso_post_serp for creating tasks, or keyso_get_serp_id_csv for export. The description provides method, path, and an example URL but no context for when this list endpoint is the right choice or what prerequisites (e.g., token) apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_serp_idC
Онлайн парсер выдачи - результат парсинга выдачи (группировка по фразам)
Method: GET
Path: /serp/
Пример запроса https://api.keys.so/serp/<id>
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| word | No | in: query | Фильтр по фразе, поддерживаются операторы -, +: -слово - стоп-слово +слово - без зависимости порядка слов в остальных случаях учитывается порядок слов | |
| limit | No | in: query | Лимит по фразам | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| wizard | No | in: query | Получать данные колдунщиков | |
| context | No | in: query | Получать данные контекстной рекламы | |
| organic | No | in: query | Получать данные органической выдачи | |
| base_url | No | Override API base URL | |
| searchEngine | No | in: query | Получать данные выдачи поисковых систем |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must disclose behavior on its own. It does state Method: GET and the exact path, which signals a read operation, but it does not mention authentication requirements, whether the parse result can be large, what data components are returned by default, or any limitations. The behavioral description is minimal.
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 short and includes useful operational details: HTTP method, path, and an example URL. However, the opening 'Онлайн парсер выдачи - результат парсинга выдачи' is somewhat redundant, as both halves refer to the same parsing result concept. Overall it is tight and front-loaded enough.
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 9 parameters, no output schema, no annotations, and many SERP-related sibling tools, the description is too thin. It does not explain how to obtain the <id>, which flags are needed to retrieve different parts of the SERP data, whether any flags are required, or what the response structure looks like. An agent would struggle to call this correctly in a real workflow.
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 100%, and the schema already documents all 9 parameters, including filters like 'word', component flags like 'organic', and token override behavior. The description adds no parameter-specific meaning beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource (SERP parse output) and the grouping behavior ('группировка по фразам'), and the path /serp/<id> clarifies this is a retrieval operation for a specific parse id. It does not explicitly contrast with sibling tools like keyso_get_serp_id_status or keyso_get_serp_id_csv, but the combination of name, method, and path makes the core purpose reasonably clear.
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 explicit guidance is given for when to use this tool versus alternatives. The phrase 'результат парсинга выдачи' implies it is used after a parse has been created, but there is no mention of how it relates to keyso_post_serp, keyso_get_serp_id_status, or keyso_get_serp_id_csv. An agent is left to infer the correct call sequence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_serp_id_competitor_domainsC
Онлайн парсер выдачи - сайты конкурентов
Method: GET
Path: /serp//competitor-domains
Пример запроса https://api.keys.so/serp/<id>/competitor-domains
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| page | No | in: query | Порядковый номер страницы результатов | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| context | No | in: query | Учитывать данные контекстной рекламы | |
| organic | No | in: query | Учитывать данные органической выдачи | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It does disclose that this is a GET request, implying a read-only operation, and it shows the endpoint path, but it says nothing about response structure, pagination behavior, authentication, or how the context/organic filters affect results.
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 short and front-loads the purpose before showing the HTTP method, path, and example request. It avoids filler, though the phrase 'Онлайн парсер выдачи' is somewhat vague and the method/path lines partly duplicate what the schema/name already imply.
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 no output schema and no annotations, the description should explain what the response contains and clarify the unusual 'id' parameter, but it does neither. The endpoint is simple, yet the definition still leaves the agent unsure about response shape and how this tool relates to the many competitor-focused sibling 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?
Schema description coverage is 100%, so the baseline is 3 even though the tool description adds no parameter documentation. The schema provides some meaning for context, organic, page, and per_page, but the required 'id' is only described as 'in: path (auto-detected)', which is not semantically informative.
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 'Онлайн парсер выдачи - сайты конкурентов' plus the explicit path /serp/<id>/competitor-domains makes it clear that this endpoint returns competitor domains for a saved SERP. However, it does not distinguish itself from closely related sibling tools such as keyso_get_serp_id_competitor_pages or the various report tools for competitors.
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 rather than sibling competitor-domain endpoints or report tools. The description only gives the HTTP method, path, and an example request, leaving the selection entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_serp_id_competitor_pagesC
Онлайн парсер выдачи - страницы конкурентов
Method: GET
Path: /serp//competitor-pages
Пример запроса https://api.keys.so/serp/<id>/competitor-pages
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| page | No | in: query | Порядковый номер страницы результатов | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| context | No | in: query | Учитывать данные контекстной рекламы | |
| organic | No | in: query | Учитывать данные органической выдачи | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице | |
| paramsGET | No | in: query | Учитывать GET-параметры |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does state Method: GET, which implies a read-only operation, but it says nothing about required SERP state, response format, pagination behavior, authentication, 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?
The description is short and includes useful low-level details (method, path, example URL), but the opening phrase 'Онлайн парсер выдачи - страницы конкурентов' mostly restates the tool name and adds little. Structure is acceptable, but not optimally front-loaded with a clear purpose statement.
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 tool with 8 parameters, no annotations, and no output schema, this description is insufficient. It provides the endpoint and an example request, but omits return value semantics, expected response shape, selection guidance among many similar sibling tools, and any behavioral caveats.
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 100%, so the baseline of 3 applies. The description adds no parameter-level meaning beyond the schema; the example demonstrates the path parameter but does not clarify what values are expected or how the query parameters interact.
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 the resource (competitor pages from a SERP) and provides the exact endpoint path, so an agent can infer the operation. However, it lacks a clear verb+resource statement and does not distinguish this tool from closely related siblings such as keyso_get_serp_id_competitor_domains.
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 is given about when to use this tool versus alternatives. The path and example show how to call it, but the description does not explain which scenario requires competitor pages rather than competitor domains, reports, or other SERP endpoints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_serp_id_csvD
Онлайн парсер выдачи - результат парсинга выдачи
Method: GET
Path: /serp//csv
Пример запроса https://api.keys.so/serp/<id>/csv?searchEngine=false&organic=true&context=true&wizard=true
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| word | No | in: query | Фильтр по фразе, поддерживаются операторы -, +: -слово - стоп-слово +слово - без зависимости порядка слов в остальных случаях учитывается порядок слов | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| wizard | No | in: query | Получать данные колдунщиков | |
| context | No | in: query | Получать данные контекстной рекламы | |
| organic | No | in: query | Получать данные органической выдачи | |
| base_url | No | Override API base URL | |
| searchEngine | No | in: query | Получать данные выдачи поисковых систем |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It does not disclose what the response format is (CSV), what the boolean flags (searchEngine, organic, context, wizard) do in practice, whether authentication is required, or any rate limits or side effects. The example query only hints at parameter usage.
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 extremely short, but it is under-specified rather than concise. It includes method, path, and an example, but omits essential information about the tool's purpose and behavior. The one-sentence 'parsing result' phrase adds little 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?
With 8 parameters, no output schema, and no annotations, the description is inadequate. It does not explain what the CSV contains, how the boolean flags affect the output, how to obtain the 'id', or what the response structure looks like. An agent cannot reliably invoke this tool based on the given description alone.
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 100%, so the schema already documents all parameters. The description adds no semantic detail beyond the example URL, which shows some boolean values but does not explain their meaning. Baseline 3 is appropriate because the schema handles the heavy lifting.
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 says 'Онлайн парсер выдачи - результат парсинга выдачи' ('Online search results parser - search results parsing result'), which essentially restates the tool name and does not explicitly say it downloads a CSV file for a given SERP ID. It does not differentiate from siblings like keyso_get_serp_id or keyso_get_serp_id_status.
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 is provided about when to use this tool compared to other SERP-related tools. It mentions a path and example query but does not specify which scenarios call for this CSV export instead of JSON results or status checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_serp_id_statusC
Онлайн парсер выдачи - статус парсинга
Method: GET
Path: /serp//status
Пример запроса https://api.keys.so/serp/<id>/status
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It mentions the HTTP method GET, implying a read-only operation, but does not disclose response format, authentication requirements (beyond the token parameter), rate limits, or whether the status field contains progress states. The description gives minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and includes method, path, and an example URL in a compact format. It is front-loaded with the purpose phrase. No extra fluff, but it could benefit from a single full sentence to improve readability.
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 but lacks an output schema, so the description should explain what the status response contains or how it fits into a workflow. It does neither, leaving an agent to guess whether the tool returns a simple 'status' string or a detailed object. The polling pattern expected by such an endpoint is also absent.
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 100%, so each parameter is already documented. The description adds no additional semantics beyond referencing the path parameter <id> in the example URL. This matches the baseline of 3 without extra value.
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 identifies the tool as a status checker for SERP parsing via the endpoint path /serp/<id>/status. It clearly conveys the resource and action (checking parsing status), distinguishing it from sibling tools that fetch results or update tasks. However, it lacks an explicit verb phrase like 'get status of a SERP parsing job'.
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 provides no guidance on when to use this tool versus other SERP tools, such as after creating a parsing task with keyso_post_serp or before fetching results with keyso_get_serp_id. No alternatives are mentioned, and no polling workflow is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_tools_concurents_by_keywords_state_uidA
Доля конкурентов по поисковым фраза - статус обработки отчета
Method: GET
Path: /tools/concurents_by_keywords/state/
Пример запроса https://api.keys.so/tools/concurents_by_keywords/state/0906fcc6567fcc8f090bd00ade39ada
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | in: path | Идентификатор отчёта | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the disclosure burden. It transparently states that the tool returns report processing status rather than report data, and it exposes the HTTP method and path. However, it does not disclose what status values may be returned, behavior when the report is not ready, error cases, or authentication expectations.
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 concise and front-loaded: it leads with the purpose, then gives method, path, and a concrete example URL. There is no filler, and every line contributes actionable 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?
For a simple status endpoint with one required parameter and a fully documented schema, the description is minimally adequate for making the call. Still, there is no output schema and no mention of status semantics or how this endpoint relates to its sibling report-creation/result-fetching tools, leaving some important context missing.
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 100%, so the schema already documents all three parameters. The description adds no additional parameter-level meaning; it only embeds uid in the example URL. Per the rubric, baseline 3 is appropriate when the schema carries the parameter documentation burden.
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 identifies a specific resource ('competitors by keywords') and the action as fetching the report processing status, reinforced by the GET method and /state/<uid> path. It is clear what the tool does, but it does not explicitly distinguish itself from the sibling endpoint that retrieves the completed report, keyso_get_tools_concurents_by_keywords_uid.
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 word 'status' and the /state/<uid> path imply this is a polling endpoint, likely used after creating a report and before fetching results. However, the description provides no explicit guidance about when to use this tool versus alternatives, nor does it mention the typical create → wait → fetch flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_tools_concurents_by_keywords_uidB
Доля конкурентов по поисковым фразам - отчет
Method: GET
Path: /tools/concurents_by_keywords/
Пример запроса https://api.keys.so/tools/concurents_by_keywords/96716504gf5a491bffd731bb10bf7dc489?base=msk&view=organic&sort=it50%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | in: path | Идентификатор отчёта | |
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| view | No | in: query | Отчет вернет результаты для органики(`organic`) или контекста(`context`) | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral disclosure burden on its own. It discloses only the HTTP method, path, and a sample URL; it does not state what the response contains, whether the UID must be created first, how errors surface, or any auth/rate-limit behavior. The safe read-only nature is only implicit in the GET method and 'report' wording.
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 short and front-loaded: a title line, then the method/path, then a representative example URL. No sentence is wasted, though the title line mostly restates the tool's purpose rather than adding 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?
This is a result-retrieval endpoint with no output schema and no mention of its relationship to the companion POST and state-check tools, so an agent does not know when the report is ready or what the returned report looks like. The schema documents parameters well, but the description is incomplete for safely invoking this tool in the wider workflow.
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?
Input schema coverage is 100%, so the baseline is 3, and the description adds concrete value through the example query string (base=msk, view=organic, sort=it50|desc, page=1, per_page=25). This gives an agent a realistic call shape that is especially useful for otherwise under-described parameters like base, and it clarifies how sort values are encoded in practice.
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 concrete resource ('Доля конкурентов по поисковым фразам - отчет') and explicitly states the HTTP verb GET, so an agent can tell this is a report-retrieval tool. However, it does not distinguish this from closely related sibling tools such as the POST creator or the state-check endpoint, so it misses the top score.
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 gives no explicit when-to-use guidance and no reference to the required prerequisite step (creating a report via keyso_post_tools_concurents_by_keywords or waiting on the state endpoint). The included example URL implies a direct GET call, but an agent is left to infer the intended workflow from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_tools_dictionary_by_pages_state_uidC
Словарь слов по страницам - статус обработки отчета
Method: GET
Path: /tools/dictionary-by-pages/state/
Пример запроса https://api.keys.so/tools/dictionary-by-pages/state/0906fcc6567fcc8f090bd00ade39ada
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | in: path | Идентификатор отчёта | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden of behavioral disclosure. It only says 'status of report processing' and provides the HTTP method/path, without stating that the call is read-only, what the possible status values are, whether it supports polling, or how errors like an unknown UID are handled.
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 short and front-loaded with the purpose, then gives method, path, and an example. Every sentence earns its place, though it is terse rather than richly informative.
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 one-required-param GET endpoint, the definition is minimal but incomplete: it lacks the relationship to the POST counterpart, return-value semantics, expected statuses, and any guidance on when to poll. An agent can construct the URL but not fully understand the endpoint's place in the workflow.
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 100%, so the schema already documents uid, token, and base_url. The description adds an example UID value and full path, which is mildly helpful, but it does not add meaningful semantics beyond 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?
The description states a specific resource ('Словарь слов по страницам') and operation ('статус обработки отчета'), so an agent can tell this is a status-check endpoint for a dictionary-by-pages report. It does not explicitly distinguish it from the similar sibling keyso_get_tools_dictionary_ext_by_page_state_uid, but the path and name make the target resource clear.
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 is given on when to call this endpoint, such as after submitting a report via keyso_post_tools_dictionary_by_pages, or how it relates to polling state. The example URL is useful but does not explain usage context or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_tools_dictionary_by_pages_uidC
Словарь слов по страницам - отчет
Method: GET
Path: /tools/dictionary-by-pages/
Пример запроса https://api.keys.so/tools/dictionary-by-pages/659cc524aba41a0252e0a27535f8a064?base=msk
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | in: path (auto-detected) | |
| base | No | in: query | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden, but it only supplies the HTTP method and endpoint. It does not disclose authentication expectations (beyond the schema's token param), response format, whether the report is ready or requires an existing completed task, or any error/rate-limit behavior.
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 appropriately short and front-loaded with the report purpose, then method, path, and an example. Every element earns its place, though the example URL could arguably be considered implementation detail rather than guidance.
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 report-fetching tool with no output schema and no annotations, the description omits the key surrounding workflow: creation via a POST sibling, status polling via the state_uid sibling, and what the returned dictionary report actually contains. An agent has enough to construct the URL but not enough to confidently decide when this is the correct final step.
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 100%, so the baseline is 3. The description adds a concrete example URL (uid plus base=msk), which hints at the uid format and a possible base value, but it does not explain the semantic meaning of 'base' or 'uid' beyond their path/query locations.
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 identifies a concrete resource ('Словарь слов по страницам - отчет' = dictionary of words by pages report) and the HTTP GET method plus path make clear this retrieves an existing report for a UID. It is not a tautology and is distinguishable from sibling tools like the POST creator or the state_uid endpoint, though it never explicitly says 'retrieve'.
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 is given about when to call this endpoint versus creating a dictionary task, checking task state, or using the extended dictionary variants. The workflow (post to create, state_uid to poll, this to fetch the report) is only implicit from the tool name and path, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_tools_dictionary_ext_by_page_state_uidC
Расширение словаря по странице - статус обработки отчета
Method: GET
Path: /tools/dictionary-ext-by-page/state/
Пример запроса https://api.keys.so/tools/dictionary-ext-by-page/state/0906fcc65ea67fcc8f090bd00ade39ada
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | in: path | Идентификатор отчёта | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that this is a GET request, implying a read operation, but it does not describe the response shape, possible status values, polling behavior, or error conditions. For an asynchronous status endpoint, this is a meaningful transparency gap.
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 compact and free of filler; the method, path, and example request all contribute practical value. It could be structured slightly better by front-loading the purpose before routing details, but it is appropriately short.
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?
This is a simple one-required-parameter GET endpoint, and the description is adequate for constructing a request. However, with no output schema and no annotations, the lack of information about what the returned status looks like and how the uid relates to the asynchronous workflow leaves a clear completeness 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?
Schema coverage is 100%, with uid documented as the report identifier and token/base_url as overrides. The description adds only an example URL containing a sample uid, which is useful but does not provide additional semantic detail beyond what the schema already offers. Baseline 3 applies.
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 the tool returns the report processing status for the dictionary extension by page ('статус обработки отчета') and gives the HTTP method and path, which makes the resource and operation identifiable. It is distinguishable from siblings like post_tools_dictionary_ext_by_page by the explicit 'status' framing, though it does not name the sibling 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?
There is no guidance on when to poll this status endpoint, how the uid is obtained, or when to switch to a results-fetching sibling such as keyso_get_tools_dictionary_ext_by_page_uid. The usage is only implied by the tool name and the word 'status', not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_tools_dictionary_ext_by_page_uidC
Расширение словаря по странице - отчет
Method: GET
Path: /tools/dictionary-ext-by-page/
Пример запроса https://api.keys.so/tools/dictionary-ext-by-page/f5ce44356458eef19f3a45c019a3267?base=msk
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | in: path (auto-detected) | |
| base | No | in: query | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the only source of behavioral information. It provides the method and path but no details on authentication requirements, response format, or whether the operation is asynchronous (e.g., polling a state endpoint). It does not disclose any side effects (GET implies none) but also does not explain what the report contains.
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 very brief—two lines plus an example. It is front-loaded with the purpose and includes a concrete example, which is efficient. However, it could be better structured with clear separation of sections.
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 tool with no output schema and no annotations, the description is incomplete. It does not explain that this likely retrieves the result of an async job created via keyso_post_tools_dictionary_ext_by_page, nor does it describe the response content or any error conditions. An agent would not know when this report is ready to be fetched.
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 input schema already provides descriptions for all four parameters (coverage 100%), and the description does not add any additional semantics. The example URL shows 'base' as a query parameter but does not explain its meaning beyond the schema's 'in: query'.
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 it is a 'dictionary extension by page - report' and provides the HTTP method and path. It is clear this is a GET endpoint for a report, but it does not explicitly say it retrieves results of a previously submitted task or what data the report contains, and it does not differentiate from similar dictionary tools like keyso_get_tools_dictionary_by_pages_uid.
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 tool. It does not mention that it is the GET counterpart to the POST tool for creating the report, nor does it advise when to use this versus other report retrieval endpoints. The agent is left to infer the relationship from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_tools_extended_keywords_state_uidB
Расширение ключевых фраз - состояние отчета
Method: GET
Path: /tools/extended_keywords/state/
Пример запроса https://api.keys.so/tools/extended_keywords/state/7d9a401359df946e37cbebfc937a5d65 полученный в Расширение ключевых фраз - создание задания
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | in: path | Идентификатор отчета | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the endpoint is a GET request, which implies a read operation, but it does not describe response content, possible state values, polling behavior, or any side effects. The agent is left without knowing what 'state' looks like or what values to expect.
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 very compact and front-loaded, stating the title, method, path, and an example in a few lines. Every sentence is informative, though the overall terseness leaves out important behavioral context.
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?
This is a simple status-polling endpoint, but the description lacks any explanation of the response format or state values (e.g., pending, completed, error). There is no output schema to fill that gap, and the description does not connect to the follow-up result endpoint. An agent cannot reliably interpret the outcome from the description alone.
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 input schema already documents all three parameters (uid, token, base_url) at 100% coverage. The description adds a concrete URL example that demonstrates the uid format in the path, which is helpful, but it does not add meaningful semantics beyond 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?
The description identifies the resource (extended keywords report) and the fact that it concerns the report's state, with the explicit method and path. However, it is phrased as a noun phrase ('state of the report') rather than a clear verb-driven instruction like 'Get the status of an extended keywords report', and it does not explicitly contrast with the sibling result endpoint keyso_get_tools_extended_keywords_uid.
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 usage context is implied: the example shows that the uid comes from the task creation endpoint ('полученный в Расширение ключевых фраз - создание задания'). This suggests the endpoint is used to check the state after creating a task, but there is no explicit statement of when to poll, when to stop polling, or which alternative endpoint to use once the state is done.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_tools_extended_keywords_uidC
Расширение ключевых фраз - получение результата
Method: GET
Path: /tools/extended_keywords/
Пример запроса https://api.keys.so/tools/extended_keywords/7d9a401359df946e37cbebfc937a5d65?sort=wsk%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | in: path | Идентификатор отчета | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral disclosure. It only lists the HTTP method and path, which are already known from the tool name and schema. It does not mention authentication requirements (despite the token parameter), rate limits, pagination behavior, or what the response contains. For a GET operation, it does not explicitly state it is read-only or non-destructive. This is a significant gap.
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 very brief, but it includes an example request that is helpful for understanding the URL structure. However, it redundantly includes the HTTP method and path, which are already encoded in the tool name and schema. The conciseness is acceptable, but the content could be more informative without adding length.
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 tool with seven parameters, no output schema, and no annotations, the description is inadequate. It does not explain what the returned result contains, how pagination works (page, per_page), or how to use the filter parameter. The agent is left without essential information to correctly interpret the response or construct queries beyond the example. This is a significant completeness 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 schema description coverage is 100%, so all seven parameters are already documented with their locations and meanings. The description adds no additional parameter semantics beyond the schema; it does not explain the sort format (field|direction) or the filter options, relying on the schema's brief descriptions. Per the calibration, a baseline of 3 is appropriate when the schema carries the load, and the description provides no extra value.
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 'Расширение ключевых фраз - получение результата' (Extended key phrases - obtaining the result), which clearly indicates retrieving the result of an extended keywords operation by UID. The path and method further clarify the action, but it does not explicitly differentiate from sibling tools like keyso_get_tools_extended_keywords_state_uid, which also relates to extended keywords. Still, the verb 'получение' (obtaining) and the resource are clear enough.
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 alternatives. It does not mention that this tool should be used after creating a report via keyso_post_tools_extended_keywords, nor does it contrast with the state endpoint (keyso_get_tools_extended_keywords_state_uid) for checking status. No prerequisites or exclusions are given, leaving the agent to infer the usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_tools_keywords_by_list_uidC
Массовая проверка запросов - получение результата
Method: GET
Path: /tools/keywords_by_list/
Пример запроса https://api.keys.so/tools/keywords_by_list/msk:44:6684baecf18566c4381fc7731925481d?base=msk&sort=wsk%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | in: path | Идентификатор отчета | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It only states 'Method: GET' and gives a sample URL, which signals a read operation but says nothing about response format, error behavior, whether the report must be ready, or how pagination/sorting behave at runtime. The example hints at query parameters but does not explain the endpoint's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the purpose, followed by method, path, and one realistic example. There is no filler, though the example URL is somewhat long and partially redundant with the schema's query parameter descriptions.
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 GET endpoint with no annotations and no output schema, the description omits important context: when to call it, what the returned data represents, how it relates to sibling keywords_by_list tools, and how to interpret results. The schema covers parameters, but the overall workflow and response semantics are missing.
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 100%, so the baseline is 3; every parameter already has a meaningful description in the input schema. The example URL adds a concrete illustration of sort encoding and pagination, but the prose does not add substantial parameter meaning beyond what the schema provides.
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 'Массовая проверка запросов - получение результата' (bulk query check - getting the result), which clearly identifies the action and resource. The included path /tools/keywords_by_list/<uid> reinforces this. However, it does not explicitly differentiate this endpoint from the many similar sibling report-getters.
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 usage guidance is provided relative to alternatives. The description never mentions that this retrieves the result of a previously created bulk keyword-list report, nor does it point to keyso_post_tools_keywords_by_list for creating such a report. An agent must infer the workflow from the tool name and path alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_tools_keywords_by_pages_pages_uidC
Список запросов страниц - отчет по страницам
Method: GET
Path: /tools/keywords_by_pages/pages/
Пример запроса https://api.keys.so/tools/keywords_by_pages/pages/7faaefe0jkdaab0009h1226a5dc4de16?base=msk&sort=wsk%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | in: path | Идентификатор отчёта | |
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the safety/behavior burden. It discloses that this is a GET request and gives a concrete example, but it does not describe what response shape the agent should expect, whether the report must already exist, or how pagination/sorting behave beyond the param names.
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 short and front-loaded with the purpose, then the method/path and example. It contains no fluff, though it is formatted as a run-on sentence rather than clearly separated sections.
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 has 8 parameters, no output schema, and many sibling endpoints, but the description omits return format, default values, available base values, filter syntax, and how to obtain the uid. The example URL is helpful but does not make the tool safely invocable without relying on external documentation.
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 100%, so the baseline is 3; the example URL does add a concrete composition of base, sort, page, and per_page. However, the description does not clarify ambiguous parameters like base or filter, so it adds minimal semantic value over 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?
The description identifies a specific report resource ('Список запросов страниц - отчет по страницам') and gives the exact endpoint and an example URL, so an agent can infer it returns keyword/page report data for a UID. It does not use an explicit verb like 'get' and does not explicitly contrast it with sibling report tools, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to call this tool versus the many sibling report/tool endpoints, nor any mention that the UID likely comes from a prior report-creation call. The example URL shows how to call it, but the description never states prerequisites, exclusions, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_tools_keywords_by_pages_weight_uidC
Список запросов страниц - отчет по весу
Method: GET
Path: /tools/keywords_by_pages/weight/
Пример запроса https://api.keys.so/tools/keywords_by_pages/weight/7faaefe0jkdaab0009h1226a5dc4de16?base=msk&sort=wsk%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | in: path | Идентификатор отчёта | |
| base | No | in: query | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does reveal that this is a GET request and includes an example URL, but it does not describe auth requirements, output format, pagination behavior, or any operational side effects beyond being a read operation.
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 compact and front-loaded with the core purpose, followed by method, path, and one illustrative example. Every line earns its place, though the overall brevity leaves some functional gaps.
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 8 parameters, no output schema, and no annotations, the description is too thin to support confident invocation. It provides an example but omits details about response structure, required report context, auth fallback behavior, and how this report relates to the sibling creation/report 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?
Schema description coverage is 100%, so the baseline is 3 even though the description adds little parameter-level meaning. The example URL demonstrates base, sort, page, and per_page usage, which is mildly helpful, but the description does not explain filter semantics or sort formats beyond what the schema already documents.
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 'Список запросов страниц - отчет по весу' clearly identifies the tool as a report listing page queries by weight, with the HTTP method and path reinforcing the resource. It does not explicitly name or contrast sibling tools like keyso_get_tools_keywords_by_pages_pages_uid, but the 'weight' qualifier provides enough differentiation.
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 gives no guidance on when to use this tool versus alternatives, such as the pages-level report or the POST endpoint that creates the report. It only states the endpoint and shows an example URL, 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.
keyso_get_tools_site_themesC
Главные темы сайта
Method: GET
Path: /tools/site-themes
Пример запроса https://api.keys.so/tools/site-themes?base=msk&site=keys.so&minWs=0&maxWs=999999999&minPos=1&maxPos=50&qbyUrl=1&words=1&like=%D0%BA%D0%BE%D0%BD%D0%BA%D1%83%D1%80%D0%B5%D0%BD%D1%82%D1%8B¬Like=%D1%82%D0%B5%D0%BC%D0%B0&sort=wsk%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| like | No | in: query | Похож | |
| page | No | in: query | Порядковый номер страницы результатов | |
| site | Yes | in: query | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| maxWs | No | in: query | Частотность не более | |
| minWs | No | in: query | Частотность не менее | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| words | No | in: query | Частотность не более | |
| filter | No | in: query | Подробнее про фильтрацию смотрите в разделе [Фильтрация данных](#tag/Filtraciya-dannyh) | |
| maxPos | No | in: query | Позиция до | |
| maxWsk | No | in: query | [!Частотность] не более | |
| minPos | No | in: query | Позиция от | |
| minWsk | No | in: query | [!Частотность] не менее | |
| qbyUrl | No | in: query | Запросов с одной страницы | |
| notLike | No | in: query | Не похож | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only reveals that this is a GET request with a sample query. It does not mention response format, required auth, default pagination, error behavior, or what constitutes a 'theme'.
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 short and front-loaded, but the single long unbroken example URL is hard to scan and the opening phrase contributes no verb or actionable guidance. It is compact but not optimally structured.
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 tool with 18 parameters, no output schema, and no annotations, the description is not complete: it does not explain the returned data, pagination behavior, or even the meaning of 'site themes.' The sample request is the only practical context, which is insufficient.
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 100%, so the schema already documents all 18 parameters. The example URL adds concrete values and shows parameter combinations, but the description itself adds no semantic meaning beyond what the schema provides.
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 consists of the noun phrase 'Главные темы сайта' plus Method and Path, which essentially restates what the tool name already conveys. It identifies the resource (site themes) but lacks a verb such as 'returns' or 'lists' and does not set it apart from sibling tools.
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 is given about when to prefer this endpoint over the many sibling tools (dictionary, keywords, concurents, check_top, etc.). The example request shows how to fill query parameters but never states conditions or use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_wordstat_get_projects_completedC
Онлайн парсер Wordstat - список готовых проектов
Method: GET
Path: /wordstat/get-projects-completed
Пример запроса https://api.keys.so/wordstat/get-projects-completed?ids=5672,3421,342
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | in: query | ID проектов через запятую | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only mentions it is a GET request and shows an example URL, but does not disclose response format, pagination, authentication requirements, rate limits, or what happens if ids are omitted. The description adds minimal behavioral context beyond the HTTP method.
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 concise, containing only a title, method/path, and an example request. There is no fluff or redundant information. It is efficient but extremely sparse, bordering on under-specification rather than being tightly written.
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?
Given the tool has no output schema and all parameters are optional, the description is insufficient. It does not clarify what 'completed projects' are, what the response contains, or how to interpret the ids parameter (e.g., whether it filters or is required). The description is too minimal to guide an agent effectively.
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 schema description coverage is 100%, so each parameter is already documented: ids (comma-separated project IDs), token (API token override), base_url (base URL override). The description adds no additional parameter semantics beyond the schema. Per the baseline for high coverage, a score of 3 is appropriate.
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 it returns a list of completed projects ('список готовых проектов'), which is a clear verb+resource, but it is vague about what 'completed' means in the Wordstat context. It does not explicitly differentiate itself from siblings like keyso_get_wordstat_list, which likely returns all projects. The tool name itself is more specific than the description.
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 sibling Wordstat tools. The description provides only an endpoint and example, without any context about when to call it (e.g., after creating a project or checking status). The agent is left to infer usage from the name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_wordstat_get_project_statusB
Онлайн парсер Wordstat - проверка статуса завершения обновления
Method: GET
Path: /wordstat/get-project-status
Пример запроса https://api.keys.so/wordstat/get-project-status?id=5672
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | in: query | ID проекта | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description supplies the main behavioral signals: it is a GET request and a status check, implying read-only behavior with no data mutation. However, it does not describe the response shape, possible status values, authentication requirements, or any rate-limit or caveat behavior.
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 compact and front-loaded with the purpose before the method/path/example. The example URL partly duplicates the declared path, but there is no significant filler.
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 has no output schema and no annotations, yet the description does not explain what the response contains or how to interpret status values. It also does not state that a project id is required in practice, leaving an agent without enough context to fully verify a successful status check.
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?
Input schema coverage is 100%, so the schema already documents id, token, and base_url. The description's example with ?id=5672 reinforces that id is used in the query, but it does not add substantial meaning beyond 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?
The description identifies a specific operation — checking the completion status of an update in the Wordstat parser — and gives the endpoint path and an example request. It clearly reads as a status-check tool, though it does not explicitly contrast it with sibling listing/report tools.
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 or when-not-to-use guidance is provided. The description never says to call this after creating/updating a Wordstat project or mentions alternatives such as keyso_get_wordstat_get_projects_completed; the intended usage is only implied by the phrase 'checking the status of update completion.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_wordstat_listC
Онлайн парсер Wordstat - список заданий на парсинг
Method: GET
Path: /wordstat/list
Пример запроса https://api.keys.so/wordstat/list?sort=created_at%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| isMain | No | in: query | **Список проектов:**<br> `true` — только созданные вручную<br> `false` — все проекты, включая созданные автоматически родительскими типами проектов<br><br> **Иерархия проектов:**<br> `Мониторинг » Кластеризатор » Выдача | Wordstat` | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only mentions Method: GET and Path, implying a read-only operation, but does not disclose pagination behavior, sorting semantics, response format, or any edge cases. The description is extremely minimal and does not convey what the agent should expect from the call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and to the point. It includes the essential method, path, and a sample request, with no superfluous text. The purpose statement is front-loaded, followed by technical details. It is efficient and well-structured for a simple list endpoint.
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 tool with no output schema and six optional parameters, the description is incomplete. It does not explain what a 'parsing task' is, what the response will contain, or how this list relates to other wordstat operations. The agent would lack context to know if this is the right tool and what to do with the results. This is a significant gap given the complexity of the domain.
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 100%, so all parameters are already documented in the schema. The description adds a concrete example request showing sort and pagination parameters, which helps illustrate how to combine them. However, this is marginal additional value beyond the schema, so a baseline 3 is appropriate.
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 'Онлайн парсер Wordstat - список заданий на парсинг' (Online Wordstat parser - list of parsing tasks), which clearly identifies the tool as a listing endpoint for parsing tasks. It provides a verb (list) and a resource (parsing tasks), distinguishing it from other wordstat tools that create or modify projects. However, it does not explicitly differentiate from sibling tools like keyso_get_wordstat_get_projects_completed, so it's not a perfect 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?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any specific scenarios, prerequisites, or conditions that would lead an agent to choose this endpoint over other wordstat list or project tools. The only contextual hint is the example query, but that's not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_wordstat_reportC
Онлайн парсер Wordstat - результат парсинга частотности
Method: GET
Path: /wordstat/report
Пример запроса https://api.keys.so/wordstat/report?projectId=1&sort=swsk%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | in: query | При наличии данного параметра будет отдан полный отчет, при отсутствии ответ будет сгруппирован по запросу | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице | |
| projectId | Yes | in: query | Идентификатор проекта |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the HTTP method (GET) and path, and mentions that the response is grouped by query unless the 'full' parameter is present. However, it doesn't describe pagination behavior, rate limits, authentication requirements, or what the response structure looks like. The description is minimal and leaves important behavioral details undisclosed.
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 short (one sentence plus an example URL), which is concise. However, the Russian text is somewhat cryptic ('Онлайн парсер Wordstat - результат парсинга частотности') and the example URL is not formatted as a code block, making it slightly harder to parse. The description earns its place but could be more structured with a clear action statement and a formatted example.
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 report-retrieval tool with no output schema and no annotations, the description is incomplete. It doesn't explain what the report contains, how to interpret the response, or how this tool fits into the Wordstat workflow (e.g., after creating a project and waiting for completion). The example URL helps but doesn't compensate for the missing behavioral and workflow 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 100%, so the schema already documents all 7 parameters. The description adds the example URL showing how sort, page, and per_page are used together, which is marginally helpful. However, the description doesn't explain the meaning of the 'full' parameter beyond what the schema says, nor does it clarify the relationship between projectId and the Wordstat project lifecycle. Baseline 3 is appropriate since the schema does the heavy lifting.
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 says 'Онлайн парсер Wordstat - результат парсинга частотности' (Online Wordstat parser - result of parsing frequency), which identifies the tool as retrieving a Wordstat frequency report. It includes the HTTP method and path, but the description is vague about what exactly the report contains and doesn't clearly distinguish it from sibling tools like keyso_get_wordstat_list or keyso_get_wordstat_get_project_status. The verb 'get' is implied by the name and path, but the description doesn't explicitly state the action.
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a project created first via keyso_post_wordstat_create_project), nor does it explain when to use keyso_get_wordstat_list or keyso_get_wordstat_get_project_status instead. The only usage hint is the example URL, which shows how to call it but not when.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_zen_channel_new_top_publicationsC
Дзен - Топ новых публикаций Дзен
Method: GET
Path: /zen/channel/new/top/publications
Пример запроса https://api.keys.so/zen/channel/new/top/publications?sort=countViews%7Cdesc&page=1&per_page=25&forDay=30
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| forDay | No | in: query | Период `3` - три дня, `7` - семь дней, `30` - тридцать дней | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must disclose behavioral traits itself. It does state that this is a GET request and shows an example query, but it does not mention authentication requirements, response shape, pagination behavior, limits, or side effects. For a read endpoint this is a notable but not fatal gap.
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 compact and front-loaded, with method, path, and example clearly separated. It does not waste words, though the opening line 'Дзен - Топ новых публикаций Дзен' is partly redundant with the tool name and could have been replaced with a short behavioral statement.
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 GET endpoint with fully documented parameters, the method, path, and example request are enough to make a basic call. However, there is no output schema and the description does not indicate what the response contains, how 'new top publications' is defined, or whether a channel identifier is required elsewhere.
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 100%, so the baseline is 3 and the schema already explains page, sort, forDay, per_page, token, and base_url. The example URL adds a concrete usage pattern (sort=countViews|desc, page=1, per_page=25, forDay=30) but no new semantic meaning beyond what the parameter descriptions already provide.
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 the resource ('Топ новых публикаций Дзен'), specifies the HTTP method and path, and gives an example request. It is clear enough to identify what the tool returns, though the verb is implied by the 'GET' line and tool name rather than explicitly stated. It does not contrast with the closely related sibling keyso_get_zen_channel_publications.
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 gives no guidance on when to use this tool versus the many sibling Zen/report tools. It does not mention alternatives, prerequisites, or exclusions. The only implied usage is 'call this endpoint', which leaves selection entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_zen_channel_publicationsB
Дзен - Публикации канала
Method: GET
Path: /zen/channel/publications
Пример запроса https://api.keys.so/zen/channel/publications?channel=5e428f13bf8d3263221b5924&sort=datePublishAt%7Cdesc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| channel | Yes | in: query | Хеш, имя или урл канала для поиска | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It explicitly states 'Method: GET', which signals a read-only operation, and the example with page/per_page implies paginated results. However, it does not disclose authentication needs, rate limits, error behavior, or response format, leaving important behavioral details unstated.
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 compact and front-loaded: a short title, the method/path, and one example request. There is no filler or redundant prose, though it is slightly under-specified rather than elegantly concise.
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 has no output schema and no annotations, so the description must carry more weight. It gives a good example but omits response shape, default pagination values, token behavior, and any differentiation from sibling Zen tools. An agent would still need to guess several operational details before calling it confidently.
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 100%, so the schema already documents each parameter. The description adds value by providing a concrete example request with real sample values, including a channel ID, sort field (`datePublishAt`), and pagination parameters, which helps an agent understand how to compose the query correctly.
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 clearly states 'Дзен - Публикации канала' and gives the HTTP method and path, so an agent can tell this fetches publications for a Zen channel. However, it does not explicitly differentiate itself from the closely related sibling keyso_get_zen_channel_new_top_publications, so it loses some clarity points.
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 about when to use this tool versus alternatives. The description only provides a title, method, path, and example request; it never explains that this returns all channel publications rather than only new/top ones or when one should prefer a sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_zen_dashboardC
Дзен - дашборд
Method: GET
Path: /zen/dashboard
Пример запроса https://api.keys.so/zen/dashboard?channel=Text.ru+-+%D0%BF%D0%B8%D1%88%D0%B8+%D0%B8+%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B9
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| channel | Yes | in: query | Имя или урл канала | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry behavioral disclosure. It does convey that this is a GET (read-only) request and that channel is supplied via query string, but it says nothing about response shape, auth requirements, errors, or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loads the resource, and includes only method/path and an example. It is appropriately compact, though the bare format leaves room for more substantive context.
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 no output schema and no annotations, the description should explain what the dashboard response contains and how it behaves. It only provides endpoint and example, so an agent cannot predict the data or side effects and may conflate it with other dashboard 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?
Schema description coverage is 100%, so the schema already explains token, channel, and base_url. The description adds a concrete encoded example for channel, which is mildly helpful, but it does not deepen parameter semantics beyond 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?
The description identifies a specific GET endpoint (/zen/dashboard) for the Zen dashboard resource and includes a required channel parameter, making the target clear. It is distinct from siblings like zen_top_channels and zen_channel_publications by resource, though it does not explicitly say what the dashboard contains.
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 or alternatives are given; the description only restates the endpoint and shows an example call. With many similar Zen and report dashboard siblings, an agent gets no help deciding when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_get_zen_top_channelsB
Дзен - Рейтинг по просмотрам Дзен каналов
Method: GET
Path: /zen/top/channels
Пример запроса https://api.keys.so/zen/top/channels?sort=viewsRank%7Casc&page=1&per_page=25
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL | |
| per_page | No | in: query | Количество результатов на одной странице |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden and does provide some context: it specifies GET (implying a read-only operation) and that the data is a views-based rating of channels. However, it does not mention authentication expectations, rate limits, or the shape/content of the returned ranking, so the behavioral disclosure is adequate but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: purpose, method, path, and a concrete example in three short lines. There is no filler or redundant restating of the tool name beyond the natural Russian title.
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 method, path, and example query give enough to make a basic call, and the schema covers parameter details. But there is no output schema and the description does not describe the response format, default pagination behavior, or authentication context, so completeness is only average.
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 schema already documents all five parameters, so the baseline is satisfied. The example URL adds real value by showing an endpoint-specific sort field (`viewsRank`), the `field|direction` encoding, and pagination parameters, which helps an agent construct a valid request.
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 identifies the resource (top Zen channels) and the ranking criterion (by views), so an agent can infer it returns a ranked list of Zen channels. It does not explicitly differentiate this from the sibling Zen dashboard/publication tools, relying mostly on the tool name and path.
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 is provided about when to use this tool versus related Zen endpoints such as keyso_get_zen_dashboard, keyso_get_zen_channel_publications, or keyso_get_zen_channel_new_top_publications. The description only shows the endpoint and an example, leaving selection to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_patch_ai_tracker_idC
Трекер ИИ - обновление данных проекта
Method: PATCH
Path: /ai_tracker/
Обновляем только то, что передали. Пример запроса https://api.keys.so/ai_tracker/<id>
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| body | Yes | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It discloses the partial-update behavior ('update only what you passed') and provides the HTTP method and path, which is useful. However, it does not mention authentication requirements, rate limits, what happens to omitted fields, error handling, or response format. For a mutation tool without annotations, this is insufficient disclosure.
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 short and efficient, front-loading the purpose, then method/path, then the key behavioral note. The example URL is somewhat redundant with the path but reinforces usage. No filler sentences. It could be improved by removing the redundant path line, but it remains concise and structured.
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?
Given no annotations and no output schema, the description is incomplete. It does not specify the response format, error codes, or the set of fields that can be updated in the body. Since the body is an open JSON object with no properties defined, the agent cannot infer what keys are valid without external knowledge. The tool is complex enough (PATCH on a resource) that more guidance is needed.
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?
All four parameters have descriptions in the schema (id, body, token, base_url), and schema coverage is 100%, so the baseline is 3. The description adds the partial-update meaning for the body parameter, which is valuable since the body is an open object with no defined properties. However, it does not enumerate allowed fields or provide examples of valid body content, so the agent still lacks concrete guidance on what to put in the body.
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 the tool updates AI tracker project data ('обновление данных проекта') and specifies the HTTP method and path. While it doesn't explicitly name the sibling alternative (e.g., keyso_patch_monitoring_id), the tool name and path make the resource clear. It conveys a specific verb and resource, though it could more sharply differentiate from other patch tools.
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 gives no guidance on when to use this tool versus alternatives. It does not mention that this is for partial updates (PATCH) as opposed to full replacement (PUT) or creation (POST), nor does it reference sibling tools like keyso_post_ai_tracker or keyso_patch_monitoring_id. The only usage hint is 'Обновляем только то, что передали' (only update what is passed), which is more about body semantics than selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_patch_monitoring_idB
Мониторинг позиций - обновление данных проекта
Method: PATCH
Path: /monitoring/
Обновляем только то, что передали. Пример запроса https://api.keys.so/monitoring/<id>
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| body | Yes | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses partial-update semantics ('Обновляем только то, что передали') and the HTTP method, but it does not mention authentication, response format, error behavior, or side effects of updating an existing project.
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 compact and front-loaded with the purpose. The method/path and example are slightly redundant with the schema but still useful and non-verbose.
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?
Despite the partial-update note, an agent still lacks the set of updatable project fields because the body schema is an empty free-form object. With no output schema and no annotations, the description also omits return-value and error behavior, so it is not self-sufficient for confident 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 100%, setting a baseline of 3. The description adds real semantic value beyond the schema by clarifying that the free-form body is treated as a PATCH payload: only passed fields are updated. The example request also reinforces the id path parameter.
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 clear verb ('обновление' / update) and resource ('данные проекта' of monitoring positions), and adds PATCH method and path. This is enough to distinguish it from the sibling create/get/delete monitoring tools, though it does not explicitly name those alternatives.
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 about when to choose this tool over post_monitoring (create), delete_monitoring_id, get_monitoring, or other monitoring endpoints. The PATCH method implies an existing resource, but no explicit usage context or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_ai_trackerB
Трекер ИИ - создание проекта
Method: POST
Path: /ai_tracker
Пример запроса https://api.keys.so/ai_tracker
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the HTTP method, path, and creation intent, but does not mention authentication requirements, required body fields, response contents, or whether creation triggers asynchronous processing.
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 brief and front-loaded with purpose. The method, path, and example URL are all useful, but the path is effectively repeated in the example URL, which is a minor 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?
A required body object must be sent, yet neither the schema nor the description explains what fields it should contain. There is no output schema, no response information, and no note about authentication or next steps, so an agent cannot reliably construct a valid request.
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 100%, which sets a baseline of 3. The token and base_url parameters are adequately described in the schema, but the required body parameter is only labeled 'JSON body' with an empty schema, and the description provides no example body or field constraints to compensate.
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 the action ('создание проекта' / creating a project) and resource (AI tracker). This differentiates it from sibling read/update/delete AI-tracker tools such as keyso_get_ai_tracker and keyso_patch_ai_tracker_id, though it does not explicitly name them.
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 phrase 'создание проекта' implies usage for creating an AI tracker project, and the POST method/path reinforces that. However, there are no explicit when-to-use, when-not-to-use, or alternative-selection instructions, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_ai_tracker_id_competitorsC
Трекер ИИ - добавление конкурентов
Method: POST
Path: /ai_tracker//competitors
Пример запроса https://api.keys.so/ai_tracker/<id>/competitors
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| body | Yes | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the method and path and gives a URL example; it does not explain request body expectations, duplicate handling, required auth, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, but the Method, Path, and example URL are largely redundant with each other and with the tool name. It is concise without being structurally informative enough to compensate for the missing body details.
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 POST endpoint with no annotations, no output schema, and an opaque body, the description is not complete enough for reliable invocation. It identifies the intent but omits the actual payload contract, behavior, and relationship to sibling 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?
Schema description coverage is reported as high, and the description adds little beyond 'JSON body'. The schema covers high-level parameter labels, but the body object is an open additionalProperties object with no defined fields, so an agent still lacks real payload semantics.
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 clearly states the action 'добавление конкурентов' and gives the explicit POST path, so an agent can tell this tool creates competitor entries. It does not explicitly differentiate from sibling GET/DELETE tools for the same resource, but the verb and method are clear enough.
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 keyso_get_ai_tracker_id_competitors or keyso_delete_ai_tracker_id_competitors. The only usage signal is the POST method and the word 'добавление', leaving the decision entirely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_ai_tracker_id_promptsC
Трекер ИИ - добавление промптов
Method: POST
Path: /ai_tracker//prompts
Пример запроса https://api.keys.so/ai_tracker/<id>/prompts
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| body | Yes | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the HTTP method and path, which already appear in the tool name. It does not mention what happens on success, whether the operation is idempotent, any authentication requirements, or rate limits. This is insufficient for a POST endpoint with a mutable body.
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 extremely concise, with the purpose stated first, followed by the method and path. It avoids redundancy and is easy to scan. However, it is so brief that it borders on under-specification, but for what it includes, it is well-structured.
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 has a complex body parameter with no defined schema (additionalProperties allowed), no output schema, and sits among many similar AI tracker endpoints. The description does not explain what a 'prompt' is, what the body should contain, or how this differs from the group variant. This leaves critical gaps for an agent attempting to use 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?
The input schema provides descriptions for all parameters, but they are terse (e.g., 'JSON body', 'in: path'). The description adds no extra meaning about the body structure, required fields, or how to construct a prompt. Since schema coverage is 100%, the baseline is 3, and the description fails to enhance parameter understanding.
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 'AI Tracker - adding prompts' (Трекер ИИ - добавление промптов), which is a clear verb (add) and resource (prompts to an AI tracker). It also provides the HTTP method and path, making the action unambiguous. However, it does not explicitly contrast with the sibling tool keyso_post_ai_tracker_id_prompts_group, relying on the name difference to distinguish them, which is acceptable but not explicit.
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 group variant or other AI tracker endpoints. The description only repeats the endpoint information without specifying prerequisites, typical use cases, or exclusions. An agent would not know if it should use this instead of keyso_post_ai_tracker_id_prompts_group for a given scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_ai_tracker_id_prompts_groupC
Трекер ИИ - добавление промптов в группы
Method: POST
Path: /ai_tracker//prompts/group
Пример запроса https://api.keys.so/ai_tracker/<id>/prompts/group
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| body | Yes | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals only that this is a POST that adds prompts to groups; it does not mention side effects, required permissions, idempotency, rate limits, or what the response contains. The mutation intent is clear from 'adding' and POST, but little else is disclosed.
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 brief and front-loaded: a one-line purpose, then method and path, then an example URL. There is no filler, and the example request adds concrete value without bloating the text.
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?
Despite having the exact path and an example URL, the definition omits the request body structure and any return-value information, and no output schema exists to fill the gap. For an API tool with an opaque body parameter and no annotations, this is not enough for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds the general idea that the payload relates to prompts and groups, but the body is an empty additionalProperties object and no field names or structure are given, leaving the agent to guess how to construct a valid request.
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 action and resource: adding prompts to groups under an AI tracker, and gives the endpoint path. It is clear about what the tool does, though it never explicitly contrasts itself with sibling keyso_post_ai_tracker_id_prompts or the delete-group variant, so it stops short of full differentiation.
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 about when to choose this tool over alternatives like post_ai_tracker_id_prompts or delete_ai_tracker_id_prompts_group. The description simply restates the action and endpoint without giving any use-case context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_ai_tracker_id_startC
Трекер ИИ - запуск обновления
Method: POST
Path: /ai_tracker//start
Пример запроса https://api.keys.so/ai_tracker/<id>/start
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that a POST update is started; it does not disclose side effects, whether the operation is asynchronous, whether repeated calls are safe, or how to check the resulting state.
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 very short and front-loaded, giving the action, HTTP method, path, and a concrete example request. It contains minimal waste, though the example URL partly duplicates the path already shown.
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 mutation-style endpoint with no annotations and no output schema, this description is thin. It does not explain what happens after the update is started, whether the update runs asynchronously, or how to poll for completion. An agent can construct the request but cannot fully anticipate the tool's behavior.
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 100%, so the schema already documents the parameters. The description adds an example URL but no additional meaning for `id`, `body`, `token`, or `base_url`. This meets the baseline for a fully schema-covered tool but does not go beyond it.
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 opens with 'AI Tracker - start update', a concrete verb-resource pair indicating this tool triggers an update for an AI tracker identified by an id. The endpoint path `/ai_tracker/<id>/start` reinforces the action. It does not explicitly differentiate from sibling tools, but the name and path make the operation reasonably distinguishable from create/delete/report endpoints.
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 is given about when to use this tool versus alternatives, when not to use it, or what prerequisites must be met. The phrase 'start update' implies a triggering use case, but there is no mention of related status-checking endpoints or conditions under which this should be called.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_clusteringC
Кластеризация - создание задания Method: POST Path: /clustering
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the burden of behavioral disclosure. It only states that a task is created and gives the HTTP method and path, without mentioning asynchronous behavior, required authentication, side effects, or how the task should be monitored. This is minimal and incomplete.
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 very short, free of filler, and front-loads the core action before the method and path. The method and path information is useful because the schema does not expose the endpoint. It is slightly too terse to be a perfect 5, but it is well structured.
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 no output schema and an empty body schema, the description should at least explain what to put in the body and how to track the created task via sibling tools like keyso_get_clustering_state_uid. It does neither, so a caller cannot reliably construct a valid request or interpret the result.
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 input schema already documents token and base_url and labels body as 'JSON body', giving high nominal coverage. However, the description adds no parameter-level meaning, and the body object remains empty and arbitrary, so the most important request content is still undefined. The high schema coverage keeps this at baseline 3.
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 says the action is 'создание задания' (creating a task/job) on the /clustering endpoint, which names a specific verb and resource. This separates it from the many get/list/delete clustering siblings, though it does not explicitly contrast it with keyso_post_clustering_uid_build.
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 provides no guidance on when to use this tool versus alternatives such as keyso_get_clustering_state_uid or keyso_post_clustering_uid_build. There are no prerequisites, exclusions, or follow-up steps described, so an agent receives no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_clustering_uid_buildB
Кластеризация - запуск процесса Method: POST Path: /clustering//build Запуск процесса. Вместо UID в уре запроса, идентификатор полученный при создании.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | in: path | Идентификатор отчёта | |
| body | Yes | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'start process' and repeats the HTTP method/path; it does not state whether the call is asynchronous, what the response looks like, or how to track the started process (e.g., via keyso_get_clustering_state_uid). This is a significant gap for a process-launching mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, but it repeats 'Запуск процесса' twice and contains a typo ('уре' instead of 'URL'). It is compact, yet the redundancy means not every sentence 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?
Given no output schema, no annotations, and a required but undocumented body, the description is incomplete. A caller needs to know the expected response, whether the process runs asynchronously, and what to include in the body; only the UID's origin is addressed.
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 100%, so the baseline is 3. The description adds useful meaning for 'uid' by clarifying it should be the identifier from creation, but it says nothing about the required 'body' parameter, which is opaque and potentially critical for invoking the tool correctly.
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 concrete action ('запуск процесса' / start process) and resource (clustering), with the path '/clustering/<uid>/build' reinforcing that this is the build/launch step. It does not explicitly contrast itself with sibling tools like keyso_post_clustering or keyso_get_clustering_state_uid, but the verb and path make the operation identifiable.
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 gives a useful prerequisite: the UID must be the identifier obtained at creation, implying this tool is used after clustering creation. However, it does not name alternatives or say when not to use it, leaving the agent to infer the correct routing among the many clustering siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_monitoringC
Мониторинг позиций - создание проекта
Method: POST
Path: /monitoring
Пример запроса https://api.keys.so/monitoring
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It does reveal that this is a creation operation via POST, but it does not explain side effects, required authentication, what the response contains, or what happens to the created project afterward. For a mutating endpoint, this is insufficient.
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 brief and front-loaded with the purpose, then provides method, path, and an example URL. There is no redundant filler. It is concise, though the brevity comes at the cost of important missing details.
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 tool with a required but unspecified JSON body, no output schema, no annotations, and a large sibling set, the description is incomplete. An agent cannot construct a valid request body or know what to expect in the response. The description covers only the endpoint mechanics, not the operational context needed to call the tool 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?
Although schema coverage is marked 100%, the required 'body' parameter is described only as 'JSON body' with an empty property schema, providing no real semantics. The description adds no additional meaning about what the body should contain, even though an example request URL is shown. The token and base_url overrides are adequately described in the schema, but the core payload remains undefined.
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 clear verb and resource: 'Мониторинг позиций - создание проекта' (creating a position monitoring project), reinforced by 'Method: POST' and 'Path: /monitoring'. This distinguishes the creation operation from sibling monitoring tools like keyso_get_monitoring, keyso_patch_monitoring_id, and keyso_delete_monitoring_id.
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 is given about when to use this tool versus alternatives. It does not mention that this creates a new monitoring project before starting it, nor does it differentiate from keyso_post_projects or keyso_post_monitoring_id_start. Only the endpoint and method are provided, leaving usage context to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_monitoring_id_link_wordsC
Мониторинг позиций - обновление целевого URL у фразы или группы фраз.
Method: POST
Path: /monitoring//link-words
Пример запроса https://api.keys.so/monitoring/<id>/link-words
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| body | Yes | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals only that the operation updates a URL, but not side effects, required permissions, whether the update replaces all matches, or what a successful response looks like.
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 brief and front-loaded with the main purpose, followed by method, path, and an example URL. There is little waste, though the Russian sentence could be slightly more structured for an API agent.
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 tool with an opaque required body and no output schema or annotations, the description is insufficient. An agent cannot construct the request body or predict response behavior from the information provided.
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 reported as 100%, so the baseline is 3, but the body parameter is a generic 'JSON body' object with empty properties. The description adds narrative context about target URL and phrase/group, but it does not specify the actual body fields or format needed to invoke the tool correctly.
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 action and resource: 'обновление целевого URL у фразы или группы фраз' (updating the target URL for a phrase or group of phrases) and gives the POST path. This distinguishes it from sibling monitoring tools, though it could be more explicit about what 'link-words' means in this context.
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 alternative monitoring tools, nor any exclusions or prerequisites. The description gives the endpoint but does not explain how this update operation fits among the many sibling tools like patch_monitoring_id or post_monitoring_id_start.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_monitoring_id_startB
Мониторинг позиций - запуск обновления
Method: POST
Path: /monitoring//start
Если не переданы оба параметра ids, aids - обновление будет всего проекта. Пример запроса https://api.keys.so/monitoring/<id>/start
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| body | Yes | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals that the call is a POST start action and that omitted ids/aids scope the update to the whole project, but it does not mention whether the operation is asynchronous, whether it is idempotent, what authentication or rate limits apply, or what the immediate effect and response are.
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 compact and front-loads the core purpose and path before adding the conditional scoping note. It is mostly well structured, though the example URL is redundant with the path and the conditional sentence could be clearer about where ids and aids belong.
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 state-changing trigger with no annotations and no output schema, the description is incomplete. It does not explain what the tool returns, whether the update runs asynchronously, or that progress should be checked via a tool like get_monitoring_state. An agent would be unsure about the response and required follow-up.
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 schema only describes id, body, token, and base_url, with body being an unconstrained object. The description adds valuable meaning beyond the schema by explaining that body can contain ids and aids and that omitting both triggers a full-project update, which is not inferable from the empty body 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?
The description clearly states the action: launch an update of monitoring positions for a given monitoring id, and includes the explicit HTTP method and path. It is sufficiently distinguishable from sibling tools by the 'start' semantics, though it does not explicitly contrast itself with related tools like get_monitoring_state or post_monitoring.
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 provides one conditional usage rule: if both ids and aids are omitted, the update applies to the whole project. However, it gives no guidance on when to use this tool versus the many sibling monitoring tools, no prerequisites, and no exclusions for when not to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_projectsC
Создание проекта
Method: POST
Path: /projects
Пример запроса https://api.keys.so/projects
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the creation action and the HTTP method/path, without disclosing side effects, authentication requirements, idempotency, validation behavior, or response semantics. This is essentially no behavioral transparency beyond the obvious fact that it creates a resource.
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 very concise: three short lines covering purpose, method, path, and an example URL. There is no wasted text, and the essential endpoint information is front-loaded. However, it is arguably too sparse for a creation tool with an unstructured body.
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?
Given the absence of annotations, an output schema, and any body properties in the input schema, this description is severely incomplete. An agent cannot determine what fields to include in the request body, what the response will look like, or what authentication/error behavior to expect, so it cannot reliably invoke the 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 100% for the three top-level parameters (body, token, base_url), which provides the baseline score. However, the description itself adds no parameter semantics, and the body parameter is only described as 'JSON body' with no properties, leaving the actual payload structure 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?
The description states the core action 'Создание проекта' (creating a project) and gives the POST /projects endpoint, which clearly differentiates it from sibling tools like keyso_get_projects and keyso_post_projects_delete. It is not a tautology because it names the resource and the creation intent, though it lacks any detail about what a project is or requires.
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 alternatives, no prerequisites, and no mention of when not to use it. The only implied usage is 'when you need to create a project', which is visible from the purpose itself but not explicitly stated as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_projects_competitors_compareC
Сравнение с конкурентами(диаграмма)
Method: POST
Path: /projects/competitors/compare
Пример запроса https://api.keys.so/projects/competitors/compare
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but it only states the HTTP method, path, and a diagram hint. It does not disclose the expected request body, authentication needs, side effects, or response behavior.
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 very short and front-loads the essential purpose and endpoint. There is no filler, though the example URL is somewhat redundant with the path and the brevity limits overall usefulness.
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 POST tool with no annotations, no output schema, and an open body schema, an agent needs request-body fields and response details to invoke it correctly. The endpoint and 'diagram' hint are not enough.
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 input schema covers 100% of parameters with descriptions for token, base_url, and body, so the baseline is 3. The description adds no extra meaning about the body, which is an empty additionalProperties object and thus still ambiguous.
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 gives a vague noun phrase, 'Comparison with competitors (diagram),' plus the endpoint. It identifies the general resource but does not clearly state an actionable verb with scope, and it does not distinguish this tool from several compare/competitor siblings such as keyso_post_tools_compare or keyso_get_report_compare_view_*.
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 is provided about when to use this tool versus alternatives. There are many sibling tools involving competitors and comparisons, but the description gives no selection criteria or exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_projects_deleteC
Удаление проекта
Method: POST
Path: /projects/delete
Пример запроса https://api.keys.so/projects/delete
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral transparency burden. It only says 'deleting project' and gives the endpoint; it does not disclose that deletion is destructive, whether it is reversible, what authentication is required, what side effects occur, or what a response looks like.
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 short, front-loaded with the action, and each line contributes something: the purpose, the method, the path, and an example URL. It is lean, though possibly too sparse for a destructive API.
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?
Given no annotations, no output schema, and a generic body parameter, the description is not complete enough for safe invocation. The agent cannot determine what JSON body identifies the project to delete, what response to expect, or what side effects are involved.
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 input schema describes all three parameters at a basic level (body, token, base_url), so the 100% coverage baseline applies. However, the body parameter is an open additionalProperties object and the description adds no explanation of what fields are expected, such as a project ID, so it doesn't truly clarify how to use the most important parameter.
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 begins with 'Удаление проекта' (deleting project), clearly identifying the action and resource, and the HTTP method and path reinforce this. It doesn't explicitly contrast with siblings like keyso_delete_wordstat_delete_project, but the project-specific deletion intent is still clear enough.
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 provides the endpoint and example URL but no when-to-use or when-not-to-use guidance. It doesn't mention alternatives, prerequisites, or situations where a different delete tool should be chosen, leaving usage entirely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_report_groupB
Создание отчета Method: POST Path: /report/group Создание отчета и получение идентификатора, который понадобится в дальнейшем для взаимодействия с отчетом.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It discloses that the tool creates a report and returns an ID, but it does not mention what the request body must contain, whether the operation is asynchronous, what side effects occur, or how the response is structured. This is minimal for a mutating endpoint.
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 short and front-loaded with the core purpose. The method and path are explicitly stated, which is useful even if partially redundant with the tool name. No unnecessary filler is present.
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?
Given the empty body schema, absence of an output schema, and lack of annotations, the description is insufficient for an agent to construct a valid request. It does not explain required body properties, report type semantics, or how the returned ID relates to the many sibling report-group endpoints.
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 100%, so the baseline is 3. The description adds no extra meaning beyond the schema: body is only described as 'JSON body', and token/base_url are already self-explanatory. It does not clarify what fields the JSON body should include.
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 clear action (creating a report) and identifies the resource via the explicit path /report/group. It also mentions the key output (an identifier for further interaction). It does not explicitly distinguish itself from sibling creation tools like keyso_post_report_system_keywords, but the resource path and tool name add enough specificity.
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 implies the intended workflow: create a report and use the returned identifier for later report interactions. However, it does not explicitly state when to choose this tool over other report-creation or report-retrieval siblings, nor does it mention prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_report_simple_links_domains_batchD
Пакетный анализ по ссылкам
Method: POST
Path: /report/simple/links/domains-batch
Пример запроса https://api.keys.so/report/simple/links/domains-batch?base=msk
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It does not disclose side effects (e.g., whether it creates a report, is asynchronous, requires specific permissions), rate limits, or error behavior. The example only shows a query parameter and gives no insight into the operation's 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 short but not well-structured. It front-loads a vague purpose, then provides technical details (method, path, example) without explaining the tool's function. It is under-specified rather than concise; every sentence could be more informative.
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?
Given the tool has 4 parameters including a free-form body object, no output schema, and no annotations, the description is grossly incomplete. It omits what the body should contain, what the response looks like, how to interpret results, and any operational requirements. An agent cannot safely invoke this tool based on the description alone.
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 100% (each property has a description), so baseline is 3. However, the descriptions are minimal (e.g., 'in: query' for base, 'JSON body' for body) and the tool description adds no clarification about what 'base' means (likely a city/region code) or what the body should contain. The description does not compensate for the schema's lack of semantic depth.
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 'Пакетный анализ по ссылкам' (batch analysis by links) and gives the method/path/example, but does not specify what the analysis produces, what 'domains-batch' implies, or how it differs from sibling tools like keyso_get_report_simple_links_backlinks_domains. The purpose is vague and not clearly differentiated.
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 is provided on when to use this tool versus alternatives. The description contains no context, prerequisites, or exclusions. An agent would have no idea whether to choose this POST batch endpoint over the many GET report endpoints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_report_system_keywordsC
Запросы сервиса
Method: POST
Path: /report/system_keywords
Пример запроса https://api.keys.so/report/system_keywords?strict=true&hideadult=true
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body | |
| page | No | in: query | Порядковый номер страницы результатов | |
| sort | No | in: query | Сортировка данных по полям.<br><br>Формат: `field|direction`, где<br><br>`field` - имя колонки<br>`direction` - направление сортировки, asc - по возрастанию, desc - по убыванию<br><br>Например: `pos|asc`, либо по двум полям `pos|asc,wsk|desc` | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| strict | Yes | in: query | Нечеткий поиск(поддержка склонения слов, изменения их порядка, не более 1 000 000 результатов) | |
| base_url | No | Override API base URL | |
| hideadult | Yes | in: query | Скрыть запросы тематики 18+ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the HTTP method and path, which implies a POST request, but does not explain side effects, whether it creates a report job, whether it returns synchronous results, or any rate limits or auth requirements. The example URL hints at query parameters but does not describe behavior beyond the request shape.
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 very short, which is concise, but it is under-specified rather than efficiently informative. It front-loads the HTTP method and path, which is useful, but the phrase 'Запросы сервиса' is vague filler. It earns a 3 because it is brief and structured, but not because it is well-crafted.
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?
Given the tool has 7 parameters, no output schema, no annotations, and sits among dozens of similar report tools, the description is far too thin. It does not explain what the report contains, how results are returned, or how this endpoint differs from sibling report endpoints. An agent would struggle to invoke it correctly or interpret the response.
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 100%, so the schema already documents all parameters. The description adds no parameter meaning beyond the example URL, which shows strict=true and hideadult=true but does not explain them. Baseline 3 is appropriate because the schema carries the parameter documentation burden.
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 is minimal: 'Запросы сервиса' (Service requests) plus HTTP method, path, and an example URL. It does not state what the tool actually does—what 'system_keywords' means, what data it returns, or what the report contains. The name suggests it posts a report for system keywords, but the description is essentially a tautology of the endpoint and provides no functional clarity.
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 sibling report tools. The example URL shows query parameters but does not explain the use case, prerequisites, or alternatives. An agent cannot determine when to choose this over keyso_get_report_simple_organic_keywords or other keyword report tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_serpC
Онлайн парсер выдачи - создание задания
Method: POST
Path: /serp
Пример запроса https://api.keys.so/serp
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals the HTTP method and path but does not explain side effects, authentication requirements, asynchronous behavior, or what response the caller should expect after creating a task.
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 short, front-loaded with the primary purpose, and contains no filler. The method, path, and example URL are useful additions, though more behavioral or body details could be included without making it bloated.
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?
This is a creation tool with no output schema, no annotations, and no description of the request body or response shape. An agent cannot reliably construct a correct SERP parsing task from this definition alone, especially given the large sibling set and ambiguous 'JSON body' 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 100%, so each parameter has at least a basic description, establishing a baseline of 3. However, the description adds no parameter-level meaning beyond showing the request URL, and the body parameter remains an opaque arbitrary JSON object with no example or field guidance.
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 action ('create task') and resource ('SERP parser'), along with the HTTP method and path. It is clear enough to distinguish this from GET-style tools, but it does not explicitly contrast it with siblings such as keyso_post_serp_id_update or keyso_get_serp_id.
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 implies this tool is for creating a SERP parsing task, but it gives no explicit guidance about when to prefer it over alternatives, no prerequisites, and no mention of when to use related SERP endpoints. An agent must infer the intended usage from the name and minimal text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_serp_id_updateB
Онлайн парсер выдачи - обновление данных проекта
Method: POST
Path: /serp//update
Обновить данные по созданному проекту Пример запроса https://api.keys.so/serp/<id>/update
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the behavioral disclosure burden. It only states that it updates project data and repeats the HTTP method/path, without explaining side effects, whether existing data is replaced, authentication requirements, or any asynchronous behavior.
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 short and the example URL is helpful. However, the first sentence and the later 'Обновить данные по созданному проекту' are largely redundant, so not every element 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 no annotations and no output schema, this mutating endpoint should explain what data can be updated, what the response looks like, and any prerequisites. The description only says 'update project data' and gives a path, leaving important operational context missing.
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 100%, so the baseline is 3 and the schema already documents all parameters. The description adds a concrete example URL embedding the id, but does not provide any additional parameter semantics beyond what the schema already gives.
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 clearly identifies the action as updating data for an existing SERP project, with the HTTP method and path spelled out. It distinguishes itself from the many SERP get/delete siblings by naming the update operation, though it does not explicitly name sibling alternatives.
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 phrase 'обновить данные по созданному проекту' implies this tool is used after a project has been created, which gives some usage context. However, there is no explicit guidance on when to prefer this tool over related SERP endpoints or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_tools_check_topD
Подсветка топов
Method: POST
Path: /tools/check-top
Пример запроса https://api.keys.so/tools/check-top?base=msk
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavior, but it does not. It mentions only the HTTP method and path, and a sample query, without stating whether the operation is read-only, what data it affects, what it returns, or any side effects. The phrase 'highlighting tops' is too vague to convey any behavioral 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?
While the description is short, it is under-specified rather than concise. It includes a verbatim URL example but omits essential information about purpose and behavior. The placement of the example is not front-loaded with useful context; instead it is a bare request sample that assumes prior knowledge.
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 has no output schema and only four parameters, but the description fails to explain what the tool returns, what the POST body should contain, or what the 'base' parameter does. Given the complexity of the sibling tools and the lack of any behavioral annotation, this description is completely inadequate for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has descriptions for token and base_url, which are self-explanatory, but base only has 'in: query' and the description does not clarify its meaning (e.g., region code). The body parameter is an empty object with no semantics. The example uses base=msk but doesn't explain what 'msk' means. The description adds no value beyond the schema, and because schema descriptions are weak for base and body, this is below the baseline.
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 'Подсветка топов' ('highlighting tops') is vague and does not specify what 'tops' refers to or what the tool actually does. It provides a method and path but no resource or behavior, and it does not distinguish itself from the sibling tools like check_top_concurents_domains. The name implies 'check top', but the purpose remains unclear.
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 alternatives. It does not mention any conditions, prerequisites, or exclusions. The example request is provided but does not explain the context in which this tool should be chosen over siblings, leaving the agent without routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_tools_check_top_concurents_domainsC
Подсветка топов - сайты конкурентов
Method: POST
Path: /tools/check-top-concurents-domains
Пример запроса https://api.keys.so/tools/check-top-concurents-domains?base=msk
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral disclosure burden. It only states Method and Path and gives an example URL; it does not mention authentication, side effects, response shape, or whether the call is synchronous/asynchronous.
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 text is short and front-loaded: purpose phrase, method, path, and example occupy only four lines with no filler. The structure is scannable, though the opening phrase is somewhat vague.
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 POST tool with no annotations and no output schema, the absence of response information and parameter semantics makes the description incomplete. An agent could issue the example request but cannot know what to expect in return or how to configure the body.
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 100%, so the baseline is 3. The description adds one useful example (base=msk) but no real semantic explanation for base, body, token, or base_url; the schema's own descriptions are mostly mechanical.
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 'Подсветка топов - сайты конкурентов' and the path '/tools/check-top-concurents-domains' indicate the tool deals with competitor domains in top results, but there is no explicit verb or statement of what the tool returns. It does not distinguish itself in prose from closely related siblings such as check_top_concurents_urls or check_top.
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 gives no when-to-use guidance, prerequisites, or alternatives. The only contextual hint is the example base=msk, which implies a regional parameter but does not explain how to choose this tool over the many competitor/report siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_tools_check_top_concurents_urlsC
Подсветка топов - страницы конкурентов
Method: POST
Path: /tools/check-top-concurents-urls
Пример запроса https://api.keys.so/tools/check-top-concurents-urls?base=msk
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, but it only states method, path, and an example URL. It does not disclose what the POST does, whether it is asynchronous, what it returns, whether it mutates state, or any auth/rate-limit implications. This is essentially endpoint metadata, not behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is compact and front-loads the semantic phrase before the transport details, with no fluff. However, the main semantic phrase is a fragment ('Подсветка топов - страницы конкурентов') and the description is so terse that it sacrifices meaningful content for brevity.
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 POST endpoint with a nested body parameter, no output schema, no annotations, and many closely related sibling tools, this description is incomplete. An agent can infer how to form a basic request URL from the example, but cannot determine expected body contents, response format, or when to pick this over check_top_concurents_domains.
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 100%, so each parameter at least has a description, though most are minimal ('in: query', 'JSON body', 'API token override'). The description adds the useful example base=msk, hinting at the base parameter's meaning. However, the body object is left entirely opaque with no properties or structure explained.
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 endpoint path and name clearly identify the resource as competitor URLs ('check-top-concurents-urls', 'страницы конкурентов'), and the example request shows the base parameter in action. However, it does not explicitly differentiate itself from sibling tools like check_top_concurents_domains, so the distinction is mostly inferred from the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides only a request example and no guidance on when to use this tool versus alternatives such as keyso_post_tools_check_top_concurents_domains or keyso_post_tools_check_top. There are no scenarios, exclusions, or conditions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_tools_combineD
Комбинатор ключевых фраз
Method: POST
Path: /tools/combine
Пример запроса https://api.keys.so/tools/combine
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, and it fails entirely. It reveals nothing about side effects, output format, response shape, authentication requirements, or limits—only the endpoint and an example URL. The token parameter hints at auth, but the description never confirms it.
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 short, but this is under-specification rather than economy. The only functional sentence is the title phrase; the method, path, and example URL are structural details that belong in the schema, not the description. There is no room spent on the one thing that matters—what the tool does.
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?
This is a POST mutation tool with no output schema, no annotations, and a completely open 'body' parameter. An agent lacks every piece of information needed to invoke it correctly: what to send, what to expect back, and when it is appropriate. The description is radically incomplete for a tool of this complexity.
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 schema lists three parameters, and although coverage is tagged at 100%, the 'body' parameter is an empty object with no defined properties, so its expected content is completely undocumented. The description adds nothing about what should go into the body. Only 'token' and 'base_url' are self-explanatory from their schema descriptions.
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 opens with 'Комбинатор ключевых фраз' (keyword phrases combinator), which largely restates the verb 'combine' already present in the tool name rather than explaining what combining means functionally (e.g., merging lists vs. building cross-product combinations). The remaining content is structural (POST, path, example URL), not functional. It also fails to differentiate this from similar sibling POST tools like keyso_post_tools_unique and keyso_post_tools_compare.
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 zero guidance on when to use this tool versus the dozens of sibling tools, no stated use case, no prerequisites, and no mention of input expectations. An agent has no way to decide between /tools/combine, /tools/compare, /tools/unique, or /tools/suggest.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_tools_compareB
Сравнение списков ключевых фраз
Method: POST
Path: /tools/compare
Пример запроса https://api.keys.so/tools/compare
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only provides the endpoint and an example URL. It does not state whether the operation is synchronous or follows the async state/uid pattern common among sibling tools, what the response contains, or whether any state is created.
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 short and front-loaded with the purpose statement. The 'Method: POST / Path: /tools/compare / Example request' lines are largely redundant with the tool name and endpoint, but they add little noise and the overall definition remains compact.
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 POST tool with an open body schema, no annotations, and no output schema, this description is incomplete. An agent cannot determine the JSON structure of the request body, the response format, or whether the tool follows the state/uid async pattern seen in many siblings, so it lacks critical information needed to call the tool 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 coverage is 100% (body, token, base_url all have descriptions), so the baseline is 3. The description adds meaningful semantics by implying the body should carry keyword lists — valuable because the body's properties object is empty and unrestricted, making this the only hint about its expected content.
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 'Сравнение списков ключевых фраз' ('Comparison of lists of key phrases'), identifying a specific verb (compare) and resource (key phrase lists), which aligns with the tool name and path. However, it doesn't explain what 'compare' produces (intersection, difference, overlap stats), so an agent cannot fully distinguish it from sibling tools like keyso_post_tools_unique or keyso_post_tools_combine.
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 keyso_post_tools_unique, keyso_post_tools_combine, or keyso_post_tools_delete_double. It also omits prerequisites (e.g., needing two keyword lists) and expected outcomes, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_tools_concurents_by_keywordsC
Доля конкурентов по поисковым фразам - создание отчета Method: POST Path: /tools/concurents_by_keywords Создание отчета и получение идентификатора, который понадобится в дальнейшем для взаимодействия с отчетом.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It discloses that the tool creates a report and returns an ID, but it does not mention that the report may be generated asynchronously, that a status check via get_tools_concurents_by_keywords_state_uid is needed, or any error/rate-limit behavior. The description is too sparse.
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 concise, consisting of a title and two sentences. It includes method and path, which may be redundant, but it is not verbose. The key information (creates report, returns ID) is front-loaded.
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?
Given that this is a creation tool that returns an ID, the description should mention that the ID is used with the sibling state and UID endpoints to retrieve the report. It does not. Also, the absence of any body specification makes it incomplete for an agent to call correctly. The description fails to cover the full flow.
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 description does not explain what the 'body' parameter should contain. The schema defines body as an empty object with additionalProperties allowed, which provides no guidance. The description only mentions the action, not the required fields like keywords, region, or competitors, leaving an agent without enough information to construct a valid request.
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 it creates a report of competitor share by search phrases ('Доля конкурентов по поисковым фразам - создание отчета') and returns an identifier. This clearly distinguishes it from sibling GET tools that retrieve report data, though it doesn't explicitly mention alternatives.
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 gives minimal guidance: it says the report is created and an ID is returned for later use, but it doesn't specify when to use this tool versus other report-creation tools like keyso_post_report_system_keywords or keyso_post_tools_keywords_by_list. No exclusions or alternative conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_tools_delete_doubleC
Чистка неявных дублей Method: POST Path: /tools/delete_double
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of explaining consequences, but it only says 'cleaning implicit duplicates' and gives Method/Path. It does not say whether the operation is destructive, idempotent, synchronous, or what payload the endpoint expects beyond an empty JSON body.
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 only three lines and front-loads the semantically meaningful phrase before Method/Path. It is undeniably concise, but it is under-specified rather than efficiently complete, so it earns a middle score.
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?
There is no output schema and no annotations, so the description should explain the request body, return behavior, and side effects; it does none of that. An agent has enough to guess the endpoint but not enough to construct a correct JSON body or interpret the response.
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 100% (body, token, base_url each have a description), so the baseline is 3. The tool description itself adds no parameter detail, and the required body is an arbitrary additionalProperties object with no properties, leaving the actual payload semantics 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?
The phrase 'Чистка неявных дублей' states an explicit operation (cleaning/removing implicit duplicates) and the endpoint /tools/delete_double reinforces the resource being acted on. It is more specific than a bare tool name, though it does not name the target entity type (e.g., keywords, sites) or contrast with sibling dedup tools like keyso_post_tools_unique.
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 is given for when to choose this tool over the many nearby alternatives such as keyso_post_tools_unique, keyso_post_tools_combine, or keyso_post_tools_suggest. The Method/Path lines state HTTP details but do not explain context, prerequisites, or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_tools_dictionary_by_pagesB
Словарь слов по страницам - создание отчета Method: POST Path: /tools/dictionary-by-pages Создание отчета и получение идентификатора, который понадобится в дальнейшем для взаимодействия с отчетом.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It clearly discloses that a report is created and an identifier is returned, which is useful. However, it does not mention async behavior, possible errors, auth needs, or resource implications.
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 short and front-loaded with the core purpose. Including Method and Path is somewhat redundant with the tool's naming convention, but it does not significantly hurt clarity.
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 POST tool with no output schema and an unconstrained body, the description is too sparse: it does not specify request payload fields, response format details, or how the returned ID should be consumed. An agent can infer intent but cannot reliably form a correct request.
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 100%, so the baseline is 3. The schema already describes token and base_url, while the body is an open additionalProperties object. The description adds no guidance about what the body should contain, which limits practical call formation.
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 action — creating a 'dictionary by pages' report and receiving an identifier for later interaction. This clearly distinguishes it from sibling report-state/UID retrieval endpoints, though it does not name them 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?
The description implies this is the initial step and that the returned ID is needed for subsequent report interactions, but it does not explicitly mention follow-up endpoints like get_tools_dictionary_by_pages_uid or state_uid. Usage context is present but left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_tools_dictionary_ext_by_pageB
Расширение словаря по странице - создание отчета Method: POST Path: /tools/dictionary-ext-by-page Создание отчета и получение идентификатора, который понадобится в дальнейшем для взаимодействия с отчетом.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the key behavioral trait: this endpoint creates a report and returns an identifier needed for subsequent interaction, implying an async workflow. However, it does not explicitly mention whether the report is processed asynchronously, how long it might take, whether repeated calls create duplicate reports, or what side effects occur.
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 short and front-loaded with the operation name and purpose. It includes useful operational details (method and path) without excessive padding. There is minor redundancy: 'создание отчета' appears in both the first line and the third sentence, but the overall structure is efficient and scannable.
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 report-creation tool with no output schema and no annotations, the description is incomplete for an agent trying to use it correctly. It states that an identifier is returned and needed later, but it does not name the follow-up endpoint such as keyso_get_tools_dictionary_ext_by_page_uid, nor does it explain the expected request body structure. An agent would need to infer the full workflow from sibling tool names.
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 reported as 100%, so the baseline is 3 even though the description adds no parameter-level meaning. The description does not clarify what should go in the 'body' object, which is empty and allows any additional properties. The token and base_url parameters are self-explanatory from the schema. Thus the description adds no real parameter semantics beyond 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?
The description clearly states a specific verb and resource: 'создание отчета' (creating a report) for 'Расширение словаря по странице' (dictionary extension by page). It also states the mechanism and key result: the report is created and an identifier is returned for later interaction. However, it does not explicitly contrast itself with similar report-creation tools like keyso_post_tools_dictionary_by_pages, so differentiation from siblings is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as keyso_post_tools_dictionary_by_pages or the related keyso_get_tools_dictionary_ext_by_page_uid. The description only explains what the endpoint does, not the conditions or scenario that select it. No exclusions or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_tools_domains_batchC
Пакетный анализ
Method: POST
Path: /tools/domains-batch
Пример запроса https://api.keys.so/tools/domains-batch?base=msk
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry safety and behavior disclosure, but it only restates the HTTP method and path and gives an example URL. It does not say whether the call is synchronous or asynchronous, what side effects occur, what authentication is needed, or what a response looks like. The POST method and 'analysis' wording weakly imply a non-read operation, so it is not entirely blank.
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 text is short and front-loaded, with method, path, and example in a scannable layout. There is no filler or repetition beyond the vague 'Пакетный анализ' label, and the structure is efficient for an API endpoint stub.
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 has no output schema and no annotations, and its `body` is an open object, so the description needs to explain what to send and what to expect; it does neither. It provides enough route and query information to attempt a call, but not enough to use the tool correctly beyond a guess.
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 100%, so the baseline is 3. The example `?base=msk` adds a concrete value for `base`, and `token`/`base_url` already have explicit semantics in the schema. However, `body` is only described as 'JSON body' with an open schema, so the description adds no meaning for the most important parameter.
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 opens with only 'Пакетный анализ' ('batch analysis'), a generic label that restates the 'batch' part of the tool name without saying what is analyzed or what the endpoint produces. The path '/tools/domains-batch' adds a resource hint, but the description does not differentiate this from siblings such as keyso_post_report_simple_links_domains_batch.
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 is provided. The example request shows how to call the endpoint, but the agent is never told when to choose this tool over the many sibling report/tool endpoints, nor what input conditions select it. Nothing is misleading, but almost all usage context is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_tools_extended_keywordsC
Расширение ключевых фраз - создание задания Method: POST Path: /tools/extended_keywords
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and only says that a task is created. It does not disclose whether the creation is asynchronous, what side effects occur, what auth is needed, or that result polling is done via keyso_get_tools_extended_keywords_state_uid. The task-creation behavior is stated but major operational traits are absent.
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 compact and front-loaded, with the core action in the first phrase and the method/path following immediately. There is no filler or repetition, making it very easy to scan.
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 task-creation endpoint with no output schema and no annotations, the description is too thin. It omits how to form the body, what response to expect, and how to poll for completion using the state/uid siblings, so an agent cannot reliably complete the workflow from this definition alone.
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 100%, so the baseline is 3 even though the tool description adds no parameter details. The body parameter is documented only as 'JSON body' with an empty properties object, so an agent still cannot determine the required payload structure; however, this is a schema limitation rather than a description omission.
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 clear action—'создание задания' (creating a task) for 'Расширение ключевых фраз' (extended keyword phrases)—and gives the HTTP method and path. This distinguishes it from the corresponding GET endpoints (keyso_get_tools_extended_keywords_uid/state_uid), but it does not differentiate it from other POST task-creation tools such as keyso_post_tools_keywords_by_list.
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 is given about when to use this tool instead of alternatives, what prerequisites exist, or how it relates to sibling tools like keyso_post_tools_keywords_by_list or the state/uid GET endpoints. The only usage signal is the action phrase 'создание задания', which does not provide context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_tools_history_serpC
История выдачи SERP по запросу
Method: POST
Path: /tools/history-serp
Пример запроса https://api.keys.so/tools/history-serp?base=gru
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | in: query | |
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral disclosure burden. It implies a read operation via the word 'history', but it does not state what the response contains, whether it is synchronous, whether results are paginated, or what authentication or rate limits apply.
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 compact: a one-line purpose plus the endpoint and an example. It is front-loaded and contains no filler, though the missing content is captured in other dimensions.
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 POST endpoint with four parameters, no annotations, and no output schema, this description is under-specified. An agent cannot determine whether base is required, what the JSON body should hold, or what the return structure looks like, making correct invocation largely guesswork.
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 100%, giving a baseline even with no added parameter descriptions. However, the schema property descriptions are mostly transport metadata ('in: query', 'JSON body'), and the tool description only adds an example request with base=gru without explaining what base means or what the body should contain.
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 the tool returns SERP history for a query ('История выдачи SERP по запросу') and gives the endpoint path /tools/history-serp. It is identifiable as a read-oriented endpoint, but it doesn't explicitly define what 'base' represents or distinguish it from the many SERP-related siblings such as keyso_get_serp, keyso_post_serp, and keyso_get_serp_id.
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 numerous alternatives. The only usage hint is a bare example URL with base=gru; no prerequisites, required parameters, or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_tools_keywords_by_listC
Массовая проверка запросов - создание задания Method: POST Path: /tools/keywords_by_list
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says that a task is created; it does not mention asynchronous execution, returned UID, polling requirements, or side effects. This is a significant gap for a POST endpoint.
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 very short and front-loads the core purpose. Method and path are somewhat redundant with the tool name, but there is no filler or repetition beyond that. It is concise without being bloated.
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 POST endpoint with an opaque body and no output schema, the description is too thin for correct invocation. An agent cannot construct a valid request or know what to do with the response; the existence of a sibling status endpoint suggests polling, but that is never stated.
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 reported as 100%, but the body parameter is an open object whose description is merely 'JSON body'. The tool description adds the useful hint that the body contains a list of queries/keywords, but it does not document required fields or structure, so it stays at the baseline.
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 'Массовая проверка запросов - создание задания' clearly indicates a batch keyword/query check that creates an asynchronous task. It names a specific verb and resource, though it does not explicitly distinguish itself from sibling POST tools like keyso_post_tools_extended_keywords.
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 sibling tools, no prerequisites, and no note that the created task should later be retrieved via keyso_get_tools_keywords_by_list_uid. An agent gets no decision support for choosing this endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_tools_keywords_by_pagesC
Список запросов страниц - создание отчета Method: POST Path: /tools/keywords_by_pages Создание отчета и получение идентификатора, который понадобится в дальнейшем для взаимодействия с отчетом.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool creates a report and returns an identifier, but it does not mention whether the operation is asynchronous, what the response format is, whether it requires prior data, or any side effects. The description is minimal and leaves important behavioral traits undisclosed.
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 short and front-loaded with the core purpose. The method and path are repeated from the tool name/schema, which is redundant, but the description is still efficient and not bloated.
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 POST tool that creates a report and returns an ID, the description is incomplete. It does not explain the expected body payload, whether the operation is asynchronous, how to poll for results, or what the returned ID looks like. The sibling tools suggest a pattern of state/uid polling, but this description does not connect to that pattern.
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 100%, but the schema parameters are generic (body, token, base_url) with no meaningful detail about the body structure. The description adds that the tool creates a report and returns an ID, but it does not explain what fields the body should contain. Baseline 3 is appropriate because the schema covers parameter names, but the description does not compensate for the empty body 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?
The description states a specific action: creating a report ('Создание отчета') for page queries ('Список запросов страниц') and returning an identifier for later interaction. This is clear enough to distinguish it from many sibling tools, though it doesn't explicitly name a sibling 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?
The description implies the tool is used to create a report and obtain an ID, but it provides no guidance on when to use this tool versus alternatives like keyso_post_tools_keywords_by_list or keyso_post_tools_dictionary_by_pages. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_tools_suggestB
Сбор поисковых подсказок в Яндексе
Method: POST
Path: /tools/suggest
Пример запроса https://api.keys.so/tools/suggest
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the method, path, and general purpose; it does not mention authorization requirements, what the response contains, whether the call is synchronous, or what the body should include. This is insufficient for an agent to understand the side effects and data flow.
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 short, front-loaded with the core purpose, and includes only the essential context: method, path, and an example URL. Every line earns its place and there is no redundant filler.
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 lacks an output schema and annotations, so the description must compensate, but it does not explain the request body contract, expected response format, or how to pass the search query. For a POST endpoint that collects suggestions, the lack of body guidance is a major completeness 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?
Schema description coverage is high, so the baseline is 3. However, the most important parameter, 'body', is described only as 'JSON body' with no properties, making it effectively opaque. Token and base_url are clear enough from their descriptions, but the description adds nothing about what should actually be sent in the body.
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 clearly states the tool's function: collecting Yandex search suggestions. It also provides the HTTP method, exact path, and an example URL, making the resource unambiguous. It distinguishes well from the many sibling tools because no other tool is described as a Yandex suggestion collector.
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 does not explain when to use this tool versus any alternative, nor does it mention prerequisites or exclusions. The only implied usage is that it collects search suggestions, but there is no explicit guidance about the request body, required query parameters, or when another tool might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_tools_uniqueC
Выделение уникальных слов в тексте
Method: POST
Path: /tools/unique
Пример запроса https://api.keys.so/tools/unique
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of behavioral disclosure. It only repeats the HTTP method and path and gives an example request URL; it does not state whether the operation mutates state, requires authentication, is synchronous, or what it returns.
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 text is compact and front-loaded with the main purpose. However, it spends space repeating method/path information that is already inferable from the tool name and URL while omitting more useful payload or behavior details.
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 POST tool with no annotations, no output schema, and a body parameter left as an open JSON object, the description is not complete enough for an agent to construct a correct request. It lacks input payload shape, authentication needs, and expected result information.
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?
All three parameters have some schema description, which gives the baseline of 3. However, the core 'body' parameter is only described as 'JSON body' with no properties, and the description adds no detail about what payload the unique-words extraction endpoint expects.
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 opens with 'Выделение уникальных слов в тексте' (extract unique words from text), which is a concrete operation and resource. It also gives the method and path, so an agent can tell what the tool does. It does not explicitly contrast it with related siblings like keyso_post_tools_delete_double, so it stops 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 about when to use this tool versus related tools such as keyso_post_tools_delete_double or dictionary/keyword tools. The example URL is the only context provided, and it does not explain input requirements or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_wordstat_create_projectB
Онлайн парсер Wordstat - создание задания
Method: POST
Path: /wordstat/create-project
Пример запроса: https://api.keys.so/wordstat/create-project
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It only reveals HTTP method, path, and that it creates something; it does not mention auth needs, asynchronous behavior, response format, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the purpose stated first and the method/path plus a request example following. There is no filler, though the missing body specification limits practical 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?
The tool lacks annotations and an output schema, and the description does not specify the request body shape, response behavior, or follow-up steps such as polling status via sibling wordstat tools. An agent can find the endpoint but cannot reliably construct a valid request.
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 100% because token, base_url, and body all have at least a description, so the baseline is 3. The description adds no parameter details, and the body schema is just 'JSON body' with no properties, leaving the actual create-project payload 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?
The description states a specific action ('создание задания' — creating a task) for the Wordstat parser and provides the endpoint method/path. This helps distinguish it from the many sibling wordstat tools that update, delete, or fetch status.
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 intended use is implied by the create wording and the `/wordstat/create-project` path, but the description does not explicitly state when to prefer it over alternatives or mention any prerequisites such as authentication or existing project requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_wordstat_id_update_projectC
Онлайн парсер Wordstat - обновление данных проекта
Method: POST
Path: /wordstat//update-project
Обновить данные по созданному проекту Пример запроса https://api.keys.so/wordstat/<id>/update-project
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| body | Yes | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'update', which implies mutation, but does not disclose side effects, authentication requirements, rate limits, whether the update is additive or destructive, or what the response contains. The example URL is useful but does not cover behavioral implications.
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 concise, includes the method and path, and provides an example URL which is helpful. It is front-loaded with the purpose. However, the HTML tags and duplicated path info slightly clutter it, and the Russian text is not optimized for English-only agents.
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?
Given it is a mutation tool with no annotations, no output schema, and an opaque body parameter, the description is incomplete. The agent cannot determine what to send in the body, what the expected response format is, or whether there are any prerequisites. This is a significant gap for a POST update operation.
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 schema provides minimal descriptions for parameters: id is 'path (auto-detected)', body is 'JSON body' with an empty object schema, and token/base_url are overrides. The description adds nothing beyond this—no explanation of what fields the body should contain or any constraints on the id. Schema coverage is high but the descriptions are nearly useless, and the tool description does not compensate.
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 the tool updates project data for a created Wordstat project, which is a clear verb+resource. It does not explicitly distinguish it from sibling tools like update_words, but the name and description imply project-level updates. It is specific enough to convey the core purpose.
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 alternatives such as keyso_post_wordstat_create_project, keyso_post_wordstat_id_update_words, or keyso_delete_wordstat_delete_project. The description merely says 'update data for the created project' without context on prerequisites or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyso_post_wordstat_id_update_wordsC
Онлайн парсер Wordstat - добавление/обновление слов
Method: POST
Path: /wordstat//update-words
Пример запроса https://api.keys.so/wordstat/<id>/update-words
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | in: path (auto-detected) | |
| body | No | JSON body | |
| token | No | API token override (fallback: KEYSO_TOKEN env) | |
| base_url | No | Override API base URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only indicates that words are added or updated, but it does not state whether the operation appends to or replaces existing words, whether it is asynchronous, what authentication is required, or what the response looks like. This is minimal behavioral context at best.
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 short and has no filler. The Russian summary, method, path, and example URL each add some orientation, though the path and example URL effectively repeat the same information. It is concise and scannable.
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 mutation tool with no annotations, no output schema, and an empty body schema, the description is not complete enough. An agent cannot determine how to construct the request body, what the endpoint returns, or how the update behaves semantically. Significant invocation details are missing.
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 100%, so the baseline is 3. The description does not add meaningful detail about the `body` parameter, which is an opaque JSON object with empty properties. Mentioning 'words' hints at the payload content but does not explain the required structure or format.
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 clearly states the action ('добавление/обновление слов' — adding/updating words) and the resource (Wordstat project via `/wordstat/<id>/update-words`). This is specific enough to distinguish it from general tools, though it does not explicitly contrast with related sibling tools like `delete_wordstat_delete_words`.
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 gives no guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as an existing Wordstat project, nor does it point to related tools for creating projects, deleting words, or fetching reports. The intended use is only implied by the endpoint and 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.
151 tool updates
v1.0.0- First observed
keyso_api_request - First observed
keyso_delete_ai_tracker_id - First observed
keyso_delete_ai_tracker_id_competitors - First observed
keyso_delete_ai_tracker_id_prompts - First observed
keyso_delete_ai_tracker_id_prompts_group - First observed
keyso_delete_clustering_uid - First observed
keyso_delete_monitoring_id - First observed
keyso_delete_serp_id - First observed
keyso_delete_wordstat_delete_project - First observed
keyso_delete_wordstat_delete_words - First observed
keyso_get_ai_tracker - First observed
keyso_get_ai_tracker_id_chart - First observed
keyso_get_ai_tracker_id_competitors - First observed
keyso_get_ai_tracker_id_dates - First observed
keyso_get_ai_tracker_id_entity - First observed
keyso_get_ai_tracker_id_mentions - First observed
keyso_get_ai_tracker_id_report - First observed
keyso_get_ai_tracker_state - First observed
keyso_get_clustering_list - First observed
keyso_get_clustering_node_uid - First observed
keyso_get_clustering_node_uid_id_keywords - First observed
keyso_get_clustering_state_uid - First observed
keyso_get_limits_all - First observed
keyso_get_monitoring - First observed
keyso_get_monitoring_id_dates - First observed
keyso_get_monitoring_id_entity - First observed
keyso_get_monitoring_id_limits - First observed
keyso_get_monitoring_id_report - First observed
keyso_get_monitoring_id_report_chart - First observed
keyso_get_monitoring_id_report_compare - First observed
keyso_get_monitoring_state - First observed
keyso_get_projects - First observed
keyso_get_projects_competitors - First observed
keyso_get_projects_recommended_competitors - First observed
keyso_get_report_ads_rsya - First observed
keyso_get_report_ads_rsya_domains_domain - First observed
keyso_get_report_compare_view_backlinks - First observed
keyso_get_report_compare_view_context - First observed
keyso_get_report_compare_view_organic - First observed
keyso_get_report_group_context_ads_facts_rid - First observed
keyso_get_report_group_context_ads_links_rid - First observed
keyso_get_report_group_context_ads_rid - First observed
keyso_get_report_group_context_concurents_rid - First observed
keyso_get_report_group_context_keywords_rid - First observed
keyso_get_report_group_domains_rid - First observed
keyso_get_report_group_list - First observed
keyso_get_report_group_organic_concurents_rid - First observed
keyso_get_report_group_organic_keywords_rid - First observed
keyso_get_report_group_organic_sitepages_rid - First observed
keyso_get_report_group_state_rid - First observed
keyso_get_report_owner_subdomains - First observed
keyso_get_report_simple_ai_answers_state - First observed
keyso_get_report_simple_context_ads - First observed
keyso_get_report_simple_context_ads_facts - First observed
keyso_get_report_simple_context_ads_links - First observed
keyso_get_report_simple_context_concurents - First observed
keyso_get_report_simple_context_keywords - First observed
keyso_get_report_simple_context_keywords_byads - First observed
keyso_get_report_simple_direct_ads - First observed
keyso_get_report_simple_direct_domain - First observed
keyso_get_report_simple_domain_ad_history - First observed
keyso_get_report_simple_domain_dashboard - First observed
keyso_get_report_simple_keyword_dashboard - First observed
keyso_get_report_simple_links_backlinks - First observed
keyso_get_report_simple_links_backlinks_73ce94f4 - First observed
keyso_get_report_simple_links_backlinks_anchor - First observed
keyso_get_report_simple_links_backlinks_d060950e - First observed
keyso_get_report_simple_links_backlinks_domains - First observed
keyso_get_report_simple_links_backlinks_ip - First observed
keyso_get_report_simple_links_outlinks - First observed
keyso_get_report_simple_links_outlinks__154bc0f2 - First observed
keyso_get_report_simple_links_outlinks_domains - First observed
keyso_get_report_simple_links_pages - First observed
keyso_get_report_simple_organic_ai_answers - First observed
keyso_get_report_simple_organic_concurent_pages - First observed
keyso_get_report_simple_organic_concurents - First observed
keyso_get_report_simple_organic_keywords - First observed
keyso_get_report_simple_organic_keywords_bypage - First observed
keyso_get_report_simple_organic_lost_keywords - First observed
keyso_get_report_simple_organic_lost_pages - First observed
keyso_get_report_simple_organic_sitepag_586cf11f - First observed
keyso_get_report_simple_organic_sitepages - First observed
keyso_get_report_simple_similarkeys - First observed
keyso_get_report_simple_top_domain_visibility - First observed
keyso_get_robots_data - First observed
keyso_get_robots_dates - First observed
keyso_get_serp - First observed
keyso_get_serp_id - First observed
keyso_get_serp_id_competitor_domains - First observed
keyso_get_serp_id_competitor_pages - First observed
keyso_get_serp_id_csv - First observed
keyso_get_serp_id_status - First observed
keyso_get_tools_concurents_by_keywords_state_uid - First observed
keyso_get_tools_concurents_by_keywords_uid - First observed
keyso_get_tools_dictionary_by_pages_state_uid - First observed
keyso_get_tools_dictionary_by_pages_uid - First observed
keyso_get_tools_dictionary_ext_by_page_state_uid - First observed
keyso_get_tools_dictionary_ext_by_page_uid - First observed
keyso_get_tools_extended_keywords_state_uid - First observed
keyso_get_tools_extended_keywords_uid - First observed
keyso_get_tools_keywords_by_list_uid - First observed
keyso_get_tools_keywords_by_pages_pages_uid - First observed
keyso_get_tools_keywords_by_pages_weight_uid - First observed
keyso_get_tools_site_themes - First observed
keyso_get_wordstat_get_project_status - First observed
keyso_get_wordstat_get_projects_completed - First observed
keyso_get_wordstat_list - First observed
keyso_get_wordstat_report - First observed
keyso_get_zen_channel_new_top_publications - First observed
keyso_get_zen_channel_publications - First observed
keyso_get_zen_dashboard - First observed
keyso_get_zen_top_channels - First observed
keyso_patch_ai_tracker_id - First observed
keyso_patch_monitoring_id - First observed
keyso_post_ai_tracker - First observed
keyso_post_ai_tracker_id_competitors - First observed
keyso_post_ai_tracker_id_prompts - First observed
keyso_post_ai_tracker_id_prompts_group - First observed
keyso_post_ai_tracker_id_start - First observed
keyso_post_clustering - First observed
keyso_post_clustering_uid_build - First observed
keyso_post_monitoring - First observed
keyso_post_monitoring_id_link_words - First observed
keyso_post_monitoring_id_start - First observed
keyso_post_projects - First observed
keyso_post_projects_competitors_compare - First observed
keyso_post_projects_delete - First observed
keyso_post_report_group - First observed
keyso_post_report_simple_links_domains_batch - First observed
keyso_post_report_system_keywords - First observed
keyso_post_serp - First observed
keyso_post_serp_id_update - First observed
keyso_post_tools_check_top - First observed
keyso_post_tools_check_top_concurents_domains - First observed
keyso_post_tools_check_top_concurents_urls - First observed
keyso_post_tools_combine - First observed
keyso_post_tools_compare - First observed
keyso_post_tools_concurents_by_keywords - First observed
keyso_post_tools_delete_double - First observed
keyso_post_tools_dictionary_by_pages - First observed
keyso_post_tools_dictionary_ext_by_page - First observed
keyso_post_tools_domains_batch - First observed
keyso_post_tools_extended_keywords - First observed
keyso_post_tools_history_serp - First observed
keyso_post_tools_keywords_by_list - First observed
keyso_post_tools_keywords_by_pages - First observed
keyso_post_tools_suggest - First observed
keyso_post_tools_unique - First observed
keyso_post_wordstat_create_project - First observed
keyso_post_wordstat_id_update_project - First observed
keyso_post_wordstat_id_update_words
TDQS
Scored across 151 tools
With 151 tools, many have overlapping purposes (e.g., multiple 'organic keywords' variants for simple vs. group reports). Auto-generated hash suffixes like 'sitepag_586cf11f' make tools indistinguishable, and a universal keyso_api_request tool further blurs boundaries.
The dominant pattern is keyso_{http_method}_{url_path_with_underscores}, which is somewhat consistent. However, the pattern is broken by arbitrary hash suffixes, inconsistent use of '_uid'/'_rid'/'_id' appendages, and the outlier keyso_api_request.
151 tools is an extreme count for an MCP server, overwhelming any agent's ability to select the right one. This is an entire API surface dumped into the tool namespace rather than a curated set.
The server covers a broad domain (reports, SERP, Wordstat, monitoring, AI tracker, Zen, links, projects) with many create/state/result triads. However, some areas lack obvious update/delete operations, and the presence of a catch-all API request tool suggests gaps in the structured surface.
Maintenance
Related MCP Connectors
SEO MCP server for keyword research, SERP analysis, audits, and Search Console workflows.
SEO MCP server — backlinks, domain authority, tech stack, and 18+ tools via Common Crawl.
MCP server for 500+ pay-per-call web scraping, search, social, business, and financial data tools.
Your agent needs the derived numbers — domain authority, what a site ranks for, related and relevant keywords, search intent, and who the real competitors are — for Google, Amazon and the app stores. **What you can ask for** • "What is this domain's authority, and how has its rank history moved?" • "Which keywords does this site rank for, and with what intent?" • "Who are this domain's organic competitors, and where do we overlap?" • "Which keywords does this Amazon product rank for?" • "Compare these two domains keyword by keyword." **How to use it** Point any MCP client at https://mcp.aisa.one/seo-labs/mcp and sign in with OAuth — there is no key to create or paste. 46 tools: ranked, related and relevant keywords, keyword ideas and intent, domain authority and rank history, competitor and intersection analysis, bulk metrics, plus the same shapes for Amazon products and Apple and Google Play apps. **Why this rather than the source** Ahrefs domain rating, Semrush rank history and DataForSEO Labs answering the same questions side by side. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Size the competitor here, then ask the same agent for their traffic mix or their contacts — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/seo/mcp for all of it at once — rankings, keywords, backlinks, site health and AI-answer visibility across DataForSEO, Semrush and Ahrefs.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMCP server that enables AI assistants to perform SEO automation tasks including keyword research, SERP analysis, and competitor analysis through Google Ads API integration.1-
- AlicenseCqualityDmaintenanceAn MCP server that integrates with the Haloscan SEO API to provide tools for keyword research, SERP analysis, and domain performance tracking. It enables users to perform comprehensive SEO tasks, including competitor analysis and visibility monitoring, within MCP-compatible clients.33190 npm1MIT
- AlicenseBqualityCmaintenanceMCP server & CLI for keyword research, domain analytics, backlinks, traffic analysis, and competitive intelligence using Semrush API data.77311 npm39MIT
- FlicenseCqualityCmaintenanceStandalone MCP server for the Mangools API with 82 tools covering keyword research, SERP analysis, rank tracking, backlinks, competitor research, and AI search visibility. Enables natural language interaction with Mangools SEO capabilities.82-