A side-by-side look at the Yandex Webmaster MCP and Citable MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Yandex Webmaster MCP for marketing work as a local process; choose Citable MCP for marketing as a local process. You can also run both side by side in one mcpServers block.
YANDEX_WEBMASTER_TOKEN, YANDEX_OAUTH_CLIENT_ID, YANDEX_OAUTH_CLIENT_SECRET.login, submit_code, get_hosts.CITABLE_WALLET, CITABLE_MAX_PRICE, CITABLE_API.citable_prices, citable_connect, citable_keyword_suggest.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Marketing | Marketing |
| Quality signal | 63/100 · Good | 60/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | YANDEX_WEBMASTER_TOKENYANDEX_OAUTH_CLIENT_IDYANDEX_OAUTH_CLIENT_SECRET | CITABLE_WALLETCITABLE_MAX_PRICECITABLE_API |
| Verified owner | Community listing | Community listing |
| GitHub stars | 4 | 0 |
| Directory activity | 1 views 0 installs 0 upvotes | 2 views 0 installs 0 upvotes |
| Tools | 10 | 19 |
| Full listing | View Yandex Webmaster MCP | View Citable MCP |
loginSign in to Yandex from here. Opens your browser to approve access; the code returns automatically over a local redirect, so this usually finishes in one call. If the local port is unavailable it returns a URL to approve and you then call submit_code with the code Yandex shows. Run this once (the token lasts ~1 year); needed before the data tools if you are not signed in yet.submit_codeComplete a copy-paste sign-in started by login: pass the code Yandex showed you after you approved access.get_hostsDiscovery tool: list the sites (hosts) available to your Yandex Webmaster token, each with its host_id, URL and verification state. host_id is what every other tool needs to identify a site. Optionally pass `hostId` to also fetch that host summary (SQI, indexed/excluded page counts, site problems). Read-only. Call this first.search_queriesSearch-query analytics for a host from Yandex Search: impressions (TOTAL_SHOWS), clicks (TOTAL_CLICKS), average show/click position. Read-only.
• report="top" (default): ranked list of the queries bringing the most traffic, ordered by orderBy. Use this to see which phrases people search.
• report="trend": a time series. Pass queryId (from a prior "top" call) for one query's history over time, or omit it for the site's aggregate trend.
Tip: cross-reference these queries/landing pages with Yandex Metrica (bounce rate, conversions) to find high-impression, low-conversion phrases worth optimizing.get_indexingHow Yandex crawls and indexes the host. Read-only. Pick a report:
• report="history" (default): time series of crawled pages grouped by HTTP status class (HTTP_2XX/3XX/4XX/5XX/OTHER) — spot spikes of errors the crawler hits.
• report="crawled": example crawled URLs with their HTTP code and crawl date.
• report="in_search": example URLs currently present in Yandex search, with title.get_diagnosticsYandex Webmaster site diagnostics: problems detected on the host (e.g. DNS errors, slow response, robots.txt issues, 4xx alerts), each with a severity (FATAL, CRITICAL, POSSIBLE_PROBLEM, RECOMMENDATION). By default returns only ACTIVE problems (state=PRESENT), worst first. Set includeAbsent=true to also list resolved/absent problem types. Read-only.list_sitemapsList the Sitemap files Yandex knows for the host, each with its URL, type, last access date, number of URLs and error count, and where it was discovered (robots.txt, webmaster, etc.). Use it to check a sitemap is being read and is error-free. Read-only.get_external_linksInbound (external) links pointing to the host — the backlinks Yandex knows. Read-only.
• report="samples" (default): example links with source page, target URL and discovery date, plus the total count available.
• report="history": time series of the total external-link count over time.recrawl_statusRead-only view of the host recrawl activity. With no taskId: the remaining daily quota plus the most recent recrawl tasks and their state (IN_PROGRESS, DONE, FAILED). Pass taskId (from recrawl_submit) to check one task. Use before recrawl_submit to confirm quota is available.recrawl_submitAsk Yandex to recrawl a specific page of the host sooner. NOT read-only: each call consumes one unit of the limited daily recrawl quota (check it with recrawl_status). The URL must belong to the host and be a full absolute URL. Returns the task_id and the remaining quota. Track progress with recrawl_status using the returned task_id.citable_pricesFree. Lists Citable's SEO endpoints with current per-call USDC prices, plus the wallet that pays: address (the one to fund), walletMode (keypair or sign-in), balanceUsdc and funded. When it is empty, `setup` gives the two ways to fund it — put them to the user. Call this first.citable_connectFree. For people who do not use crypto. Returns a link to open in a browser: sign in at Citable with Google or email, add a few dollars of USDC, click Connect — the agent then pays from that wallet. The link works for 15 minutes; when the user says it is done, call citable_prices to confirm (walletMode becomes sign-in). {status:true} only reports; {reset:true} disconnects and returns to the keypair. The first connect installs Para's SDK under ~/.config/citable/para (about 200 MB, once).citable_keyword_suggestPaid ($0.005 USDC per call). Expands a seed keyword into autocomplete suggestions, related queries and questions, deduped and ranked across Google, YouTube and Bing. Returns `suggestions[]` and `questions[]` with a 0–1 prominence score, the sources each came from, and whether the keyword still contains the seed.citable_onpage_auditPaid ($0.01 USDC per call). Fetches one URL and returns a scored on-page audit: title, meta description, canonical, robots, viewport, lang, heading counts and text, word count, internal/external links, image alt coverage, Open Graph, JSON-LD types, HTTP details, and 15 weighted checks with a 0–100 score. Not charged if the page cannot be fetched.citable_ai_visibilityPaid ($0.05 USDC per engine asked; $0.20 for all four). Asks the AI answer engines (Perplexity, Gemini, OpenAI, Claude — whichever the deployment has configured) a prompt through their official APIs and reports which ones cite the domain: `mentioned`, 1-based `position` in each engine's citation list, and the full cited-domain list per engine. One run per engine — answers vary between runs, so call 2–3 times for signal. Not charged if no engine answers.citable_rank_checkPaid ($0.012 USDC per call). Google organic position of a domain for a keyword via a licensed SERP feed: 1-based `position` (null if outside the checked window), the ranking URL and title, plus the top-10 result list. Not charged if the feed is unavailable.citable_keyword_researchPaid ($0.06 USDC per call). One seed returns keywords AND questions, merged from public autocomplete and the paid keyword index, with search volume, CPC, difficulty and intent attached. Each row says which sources found it — both is the strongest signal. Cheaper than citable_keyword_ideas plus citable_keyword_metrics separately; reach for those only when you want to control exactly what you pay for. Not charged on failure.citable_keyword_ideasPaid ($0.05 USDC per call). Keyword research: one seed returns up to 100 keywords that contain it, each with search volume, CPC, competition, difficulty and intent, ordered by volume. Full-text matched, so results stay on topic. Use citable_keyword_suggest for the exact phrasings people type (no volume), and citable_keyword_metrics when you already have a shortlist. Not charged on failure.citable_keyword_metricsPaid ($0.03 USDC per call, covers the whole batch). Search volume, CPC, competition, keyword difficulty and search intent for 1–20 keywords — licensed clickstream-derived estimates. Answers in request order; unknown keywords return null metrics. Pair with citable_keyword_suggest: expand a seed there, price the shortlist here. Not charged if the metrics feed is unavailable.citable_top_cited_pagesPaid ($0.22 USDC per call). Which pages of a domain AI engines cite most, from an aggregated index of AI answers — per-page mentions, AI search volume, per-engine and per-language splits, plus domain totals. Answers 'what already works on this site — write more of that'. Not charged if the index is unavailable.citable_citability_reportPaid ($0.30 USDC per call; $0.43 bought separately). One call bundles the on-page citability audit, AI visibility across all configured engines, and the domain's top AI-cited pages. Answers: can AI read this site, who cites it today, and which pages already work. Not charged on failure.citable_cited_promptsPaid ($0.25 USDC per call). The real questions AI answer engines cite a domain for, from an aggregated index of AI answers — question, answer snippet, AI search volume, and the exact URL cited. These are observed prompts, never generated ones, so use this to discover what to track instead of inventing them. Repeated observations of one question are collapsed, with `observations` counting them. Point it at a competitor's domain to get the prompts they win and you do not. Not charged on failure.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"yandex-webmaster-mcp": {
"command": "npx",
"args": [
"-y",
"@boxlab/yandex-webmaster-mcp"
],
"env": {
"YANDEX_WEBMASTER_TOKEN": "YOUR_YANDEX_WEBMASTER_TOKEN_HERE",
"YANDEX_OAUTH_CLIENT_ID": "YOUR_YANDEX_OAUTH_CLIENT_ID_HERE",
"YANDEX_OAUTH_CLIENT_SECRET": "YOUR_YANDEX_OAUTH_CLIENT_SECRET_HERE"
}
}
}
}
{
"mcpServers": {
"zaialamm-citable-mcp": {
"command": "npx",
"args": [
"-y",
"citable-mcp"
],
"env": {
"CITABLE_WALLET": "YOUR_CITABLE_WALLET_HERE",
"CITABLE_MAX_PRICE": "YOUR_CITABLE_MAX_PRICE_HERE",
"CITABLE_API": "YOUR_CITABLE_API_HERE"
}
}
}
}