A collection of MCP servers including Telegram MTProto client, Yandex tools (Wordstat, Search, Metrika, Webmaster), Playwright browser automation, Context7, and Sequential Thinking
22 tools across 5 servers with consistent schema presence but uneven description quality. All tools have input schemas with proper types and constraints (enums, min/max bounds). Naming follows verb_noun convention (get_, list_, search_). However, descriptions vary significantly: Telegram tools (ListDialogs, ListMessages) have strong, actionable descriptions (100+ chars); Yandex tools have adequate descriptions but lack context on when to use them vs. similar tools. Parameter descriptions are present but often minimal (10-30 chars). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all being READ_ONLY. Output schemas are not documented, LLMs cannot predict response structure. Error handling guidance is absent across all tools.
List available dialogs, chats and channels.
List messages in a given dialog, chat or channel. The messages are listed in order from newest to oldest. If `unread` is set to `True`, only unread messages will be listed. Once a message is read, it will not be listed again. If `limit` is set, only the last `limit` messages will be listed. If `unread` is set, the limit will be the minimum between the unread messages and the limit.
Returns search volume dynamics (trend) for a keyword over time. Costs 2 quota units.
Returns detailed information about a specific Metrica counter.
Returns the list of Yandex Metrica counters (tags) available to the user.
Returns visitor breakdown by device type, browser, and operating system.
No output schemas documented. LLMs cannot predict response structure, forcing them to guess field names and types for downstream tool calls or data extraction.
Missing tool annotations despite all tools being READ_ONLY. readOnlyHint should be set on all 22 tools to signal to agents that these calls are safe to retry and have no side effects.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2025-06-18+ | v2 |
Returns site diagnostics with detected problems categorized by severity (fatal, critical, possible, recommendation).
Returns visitor breakdown by country and region.
Returns the list of goals configured for a counter.
Returns detailed information about a specific site.
Returns popular search queries that brought users to the site, sorted by shows or clicks.
Returns aggregated search query statistics over time (shows, clicks, positions).
Returns the children of a specific region. Use this to drill down into a region from get-regions-tree. Does not consume quota.
Returns the top 3 levels of the Wordstat regions tree (countries, federal districts, major regions). Use get-region-children to drill down into specific regions. Does not consume quota.
Returns the history of Site Quality Index (SQI) changes over time.
Returns general site statistics including SQI, indexed pages count, excluded pages, and problem counts.
Returns traffic breakdown by source: direct, search, social, referral, etc.
Returns traffic summary: visits, users, pageviews, bounce rate, and session duration.
Returns the authenticated user ID. This ID is required for all other API calls.
Returns the list of sites added by the user to Yandex Webmaster.
Search the web using Yandex. Optimized for Russian and Cyrillic content but works for any language. Returns structured results with position, url, domain, title, headline (meta description), passages (text snippets array), snippet (combined text), size, lang, and cachedUrl.
Returns popular search queries containing the specified keyword for the last 30 days. Also includes similar/related queries. Costs 1 quota unit.
Minimal parameter descriptions (10-30 chars) on many Yandex tools. E.g., 'Counter ID' for counter_id lacks context on how to obtain it or what it represents. Should be 50-100 chars with discovery hints.
No error handling guidance. Tools lack recovery hints (e.g., 'If counter not found, call get-counters() first'). Agents cannot self-correct on failures.
Inconsistent naming conventions across servers. Telegram uses PascalCase (ListDialogs, ListMessages); Yandex uses kebab-case (get-counters, get-traffic-summary). LLMs may struggle with mixed conventions.