Skip to main content
Glama

seodata-mcp

MCP-сервер SEO-комбайна (seodata.win) — plug-and-play доступ нейросетей (Claude, Kimi, Cursor, ChatGPT и любых MCP-клиентов) к витринам, статьям, SEO-аудитам, AI-генерации контента и позициям ключей. Авторизация — одним ключом seo_<48 hex>.

English below

Сервер — тонкая stateless-обёртка Model Context Protocol над публичным клиентским API комбайна /api/public/v1. Ничего не хранит, одна зависимость (@modelcontextprotocol/sdk), Node.js ≥ 18.


Быстрый старт

0. Получить ключ

Админка комбайна → раздел «API-ключи» → создать ключ. Scopes под задачи:

Scope

Что открывает

content:read

витрины, статьи, страницы, поиск

audit:run

SEO-аудит доменов

generate:run

AI-генерация статей (фоном)

jobs:read

статус фоновых задач

positions:read

позиции ключей за 30 дней

Лимиты ключа: дневная квота (по умолчанию 1000) + 60 запросов/мин.

1. Подключить клиент

Без установки (через GitHub):

{
  "mcpServers": {
    "seodata": {
      "command": "npx",
      "args": ["-y", "github:Shalom182/seodata-mcp"],
      "env": { "SEODATA_API_KEY": "seo_ваш_ключ" }
    }
  }
}

npm (когда пакет опубликован):

{
  "mcpServers": {
    "seodata": {
      "command": "npx",
      "args": ["-y", "seodata-mcp"],
      "env": { "SEODATA_API_KEY": "seo_ваш_ключ" }
    }
  }
}

Локально:

git clone https://github.com/Shalom182/seodata-mcp.git
cd seodata-mcp && npm install
{
  "mcpServers": {
    "seodata": {
      "command": "node",
      "args": ["/путь/к/seodata-mcp/index.js"],
      "env": { "SEODATA_API_KEY": "seo_ваш_ключ" }
    }
  }
}

Этот блок mcpServers одинаково работает в Claude Desktop (claude_desktop_config.json), Cursor/Windsurf (mcp.json), Kimi Code и любом MCP-совместимом клиенте.

2. Проверить

Спросите нейросеть: «проверь связь с комбайном» — она вызовет seodata_whoami и покажет scopes, квоту и расход за сегодня.


Related MCP server: apexapi-mcp

Инструменты (10)

Инструмент

Что делает

Scope

seodata_whoami

Ключ: имя, scopes, квота, расход за сегодня. Вызывать первым

—

seodata_list_storefronts

Витрины владельца: id, slug, язык, домен

content:read

seodata_list_articles

Опубликованные статьи витрины (limit/offset)

content:read

seodata_get_article

Полная статья: контент, meta, ключи, обложка

content:read

seodata_get_page

Статическая страница витрины

content:read

seodata_search

Поиск по всему опубликованному контенту

content:read

seodata_run_audit

SEO-аудит домена (~5–15 с): score + проверки; опционально сохраняет в витрину

audit:run

seodata_generate_article

AI-генерация статьи в фоне → jobId (статья упадёт черновиком)

generate:run

seodata_get_job

Статус фоновой задачи + результат/ошибка

jobs:read

seodata_get_positions

Позиции ключей витрины за 30 дней

positions:read

Ресурсы

URI

Что отдаёт

seodata://status

Базовый URL, наличие ключа, доступность API

seodata://openapi.json

Живая OpenAPI 3.0 спека /api/public/v1 с продакшена

Типовые сценарии

  • «Какие у меня витрины и что на них опубликовано?» → list_storefronts → list_articles

  • «Найди статью про X и перепиши» → search → get_article

  • «Проведи SEO-аудит домена» → run_audit

  • «Напиши статью про X на витрину Y» → generate_article → поллинг get_job → черновик в админке

  • «Как движутся позиции?» → get_positions

Ошибки API приходят нейросети с полем hint на русском: что случилось (401/403/404/429/no_api_key) и что сделать.

Конфигурация (env)

Переменная

По умолчанию

Назначение

SEODATA_API_KEY

—

Ключ seo_<48 hex> (обязателен для авторизованных вызовов)

SEODATA_BASE_URL

https://seodata.win

Базовый URL комбайна (для self-hosted копии)

Без ключа сервер стартует, но инструменты вернут no_api_key с подсказкой — удобно для диагностики конфигурации клиента.

Безопасность

  • Ключ живёт только в env на машине пользователя; сервер ничего не логирует и не хранит.

  • Видимость данных = владелец ключа (owner-изоляция на стороне API).

  • MCP покрывает только публичный клиентский API: чтение контента, аудиты, постановка генерации в очередь, позиции. Мутирующее управление (публикация, сателлиты, домены, пользователи) остаётся в админке.

Самопроверка

npm install
npm test                          # initialize, tools/resources, обработка ошибок
SEODATA_API_KEY=seo_... node e2e-full-run.mjs   # полный боевой прогон всех методов

Файлы

Файл

Назначение

index.js

Сервер (stdio-транспорт, 10 инструментов, 2 ресурса)

test-client.mjs

Самопроверка без ручного MCP-клиента

e2e-full-run.mjs

E2E-прогон каждого инструмента против живого API

Лицензия

MIT © Shalom182 (seodata.win)


English

MCP server for the SEO Combine (seodata.win) — plug-and-play LLM access (storefronts, articles, SEO audits, AI article generation, keyword positions) via a single seo_<48 hex> API key. Thin stateless wrapper over the combine's public client API /api/public/v1. One dependency, Node.js ≥ 18.

Quick start

  1. Get an API key: admin panel → API keys → create with scopes (content:read, audit:run, generate:run, jobs:read, positions:read).

  2. Add to any MCP client (Claude Desktop, Cursor, Kimi Code, …):

{
  "mcpServers": {
    "seodata": {
      "command": "npx",
      "args": ["-y", "github:Shalom182/seodata-mcp"],
      "env": { "SEODATA_API_KEY": "seo_your_key" }
    }
  }
}
  1. Ask the model: "check the combine connection" — it will call seodata_whoami and show scopes and quota.

Tools

seodata_whoami · seodata_list_storefronts · seodata_list_articles · seodata_get_article · seodata_get_page · seodata_search · seodata_run_audit (domain SEO audit, ~5–15 s) · seodata_generate_article (queued AI article → jobId) · seodata_get_job · seodata_get_positions (30 days).

Resources: seodata://status (connectivity), seodata://openapi.json (live OpenAPI 3.0 spec). API errors are returned with a human-readable hint field (401/403/404/429/no_api_key).

Configuration

Env

Default

Purpose

SEODATA_API_KEY

—

seo_<48 hex> key

SEODATA_BASE_URL

https://seodata.win

Combine base URL (self-hosted)

Security: the key never leaves the user's machine; data visibility is scoped to the key owner; the server is read-only except for queueing article generation.

Self-test

npm install && npm test

License: MIT © Shalom182 (seodata.win)

Available Tools

10 tools
seodata_generate_articleA

Запуск AI-генерации статьи в фоне (очередь комбайна). Возвращает jobId — статус смотри через seodata_get_job; готовая статья появится черновиком витрины. Scope: generate:run.

ParametersJSON Schema
NameRequiredDescriptionDefault
toneNoТон (по умолчанию expert)
topicYesТема статьи, 3–2000 символов
lengthNoОбъём (по умолчанию medium)
keywordsNoКлючевые слова через запятую (до 1000 символов)
languageNoЯзык (по умолчанию ru)
keywordIdNoId главного ключа из панорамы — статья пишется строго под него
storefrontIdYesId витрины (число из seodata_list_storefronts)

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does reasonably well: it discloses that generation is asynchronous (background/очередь), returns a jobId, that the finished article lands as a draft, and that it requires the generate:run scope. It omits error/failure behavior and any rate or quota limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact, front-loaded sentence covering action, async nature, return value, and scope with no filler. Slightly dense due to parenthetical queue note and trailing scope, but efficient overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description appropriately explains the return (jobId) and the async follow-up path via seodata_get_job, plus the final draft destination. It is complete enough for a 7-param generation tool, though permission/error details remain thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 (tone, length, keywords, keywordId, etc.) with defaults and constraints. The description adds no parameter-level detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (запуск AI-генерации) and resource (статья) and notes it runs in the background queue. It also clarifies the outcome (article appears as a storefront draft), which distinguishes it from read-oriented siblings like seodata_list_articles or seodata_get_article.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It directs the agent to seodata_get_job for status tracking, establishing the async workflow, and implies the tool is the entry point for article creation. However, it does not explicitly state when NOT to use it or contrast it against other generation paths.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seodata_get_articleB

Полная опубликованная статья: заголовок, контент, meta, ключи, обложка. Scope: content:read.

ParametersJSON Schema
NameRequiredDescriptionDefault
articleSlugYes
storefrontSlugYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry behavioral disclosure, and it does add real context: 'опубликованная' signals only published (not draft) articles are returned, and 'Scope: content:read' indicates the required permission. However, it says nothing about error behavior, missing articles, or pagination/size limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence followed by a scope tag; the return contents are front-loaded and there is no filler. It is efficient, though the terse style leaves explanatory room unused.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully lists the returned fields, and it flags the auth scope. But with no annotations and zero parameter documentation, an agent still lacks the input semantics and failure behavior needed to call it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the two undocumented parameters (storefrontSlug, articleSlug) — and it does not. Neither parameter's meaning, format, or relationship to storefronts is explained anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (a published article) and enumerates what is returned: title, content, meta, keys, cover. This clearly separates it from list_articles or get_page in intent, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus seodata_list_articles, seodata_get_page, or seodata_search. The only hint is the 'content:read' scope, which speaks to permissions, not selection between alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seodata_get_jobA

Статус фоновой задачи (например генерации статьи): pending/processing/done/error + результат/ошибка. Scope: jobs:read.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYesId задачи из seodata_generate_article

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the state machine (pending/processing/done/error), that a result or error payload accompanies the status, and the required auth scope (jobs:read). It omits polling guidance and behavior for an unknown/invalid jobId.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the core purpose (job status) before the state list and the scope. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the returnable states and the result/error payload, which is what an agent needs to interpret the response. Missing only polling semantics and edge-case behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema itself explains jobId ('Id задачи из seodata_generate_article'), so the description adds no parameter detail beyond it. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: retrieving the status of a background job, with concrete example ('генерации статьи') and the enumerable states it can return. This implicitly ties it to the sibling seodata_generate_article as the job creator, though it never names an alternative tool explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The article-generation example implies the typical poll-after-create flow, but there is no explicit when-to-use guidance, no statement about when the job is terminal, and no named alternative to call instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seodata_get_pageC

Статическая страница витрины (о нас, контакты и т.п.). Scope: content:read.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageSlugYes
storefrontSlugYes

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. The only behavioral disclosure is 'Scope: content:read', which indicates a read permission, but the description does not explicitly state read-only behavior, return format, error handling, or any side-effect profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence plus a short scope note, with no wasted words. It is efficiently structured, though it is arguably too terse given the undocumented parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with two required parameters, no annotations, and no output schema, the description is incomplete. It identifies the resource and scope but does not clarify parameter usage or what the tool returns, leaving meaningful gaps for an agent invoking it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for two required parameters (storefrontSlug and pageSlug). The description mentions a storefront page but does not explain what the slugs represent, their expected format, or how the two identifiers relate. It adds essentially no parameter meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource type (a static storefront page) and gives examples, and the tool name supplies the 'get' verb. However, it does not explicitly state that the tool retrieves or returns the page, so the purpose is inferable rather than stated outright. It also does not clearly route the agent away from sibling tools like seodata_get_article.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 seodata_get_article or seodata_search. The 'Scope: content:read' note hints at required permission but does not explain selection context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seodata_get_positionsB

Позиции отслеживаемых ключей витрины за последние 30 дней: плоский массив {keywordId, keyword, date, position, url}. Scope: positions:read.

ParametersJSON Schema
NameRequiredDescriptionDefault
storefrontIdYesId витрины (число из seodata_list_storefronts)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden. It does disclose the fixed 30-day window, the required scope (positions:read) and the return shape, which is meaningful context, but it says nothing about pagination, rate limits, or whether the array can be large/null.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with no waste: resource, time window, return shape and scope are all front-loaded and every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 does a good job by specifying the 30-day window, the flat-array return fields, and the required scope. Only the absence of pagination/volume details keeps it short of complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter with 100% schema coverage; the schema already explains that storefrontId is a numeric id obtained from seodata_list_storefronts. The description adds no syntax or constraint details beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (get positions of tracked keywords in a storefront), scopes it to the last 30 days, and even names the return shape. It is clearly distinguishable from siblings like seodata_search or seodata_get_page, though it does not call out the distinction explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance and no alternative tool is named, despite a crowded sibling list. The agent must infer from the resource name that this is the tool for pulling keyword position data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seodata_list_articlesB

Опубликованные статьи витрины с полным контентом. Scope: content:read.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoМакс. статей (1–100, по умолчанию 50)
offsetNoСмещение для пагинации (по умолчанию 0)
storefrontSlugYesSlug витрины из seodata_list_storefronts

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses two things beyond the schema: results are limited to published articles with full content (not summaries), and the call requires the content:read scope. It omits pagination semantics, result ordering, and whether the full content is truncated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short fragments, front-loaded with the resource and its key property, then the required scope. Nothing is wasted, though the telegraphic fragment style leaves no room for routing or pagination context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list endpoint with no output schema and no annotations, the description covers what is returned (published, full content) and the auth scope, but says nothing about pagination behavior, default/max page sizes, or result shape. Adequate but with clear gaps an agent must discover by calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so limit, offset, and storefrontSlug are already documented in the schema (including the cross-reference to seodata_list_storefronts). The description adds no parameter-level meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the resource precisely ('Опубликованные статьи витрины') and adds a meaningful qualifier ('с полным контентом'), so an agent knows this returns published articles with full bodies. It does not, however, differentiate itself from the sibling seodata_get_article (single article) or seodata_search, leaving the boundary to be 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance. The only usage-adjacent signal is the 'Scope: content:read' permission note; nothing tells the agent to prefer this over seodata_get_article or seodata_search, nor that a storefrontSlug must first come from seodata_list_storefronts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seodata_list_storefrontsA

Список витрин (сайтов) владельца ключа: id, имя, slug, язык, домен. Scope: content:read. Идентификаторы отсюда нужны остальным инструментам.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose the required auth scope (content:read) plus the shape of the result. However it says nothing about pagination, result size limits, or whether the list is exhaustive, which matters for a listing endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with purpose, then return fields, then auth scope and usage hint. Nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the returned fields and the auth scope, which is enough for a parameterless list call. Only pagination/volume behavior is left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; there is no parameter semantics to explain and the description does not waste effort on them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Список витрин (сайтов)") scoped to the key owner, and enumerates the returned fields (id, имя, slug, язык, домен). It is distinguishable from siblings like list_articles, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Идентификаторы отсюда нужны остальным инструментам" clearly frames this as the entry point whose IDs feed other tools, giving real context for when to call it first. It stops short of naming a specific alternative or stating exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seodata_run_auditA

SEO-аудит главной страницы домена (~5–15 с): score 0–100 + список проверок (title, meta, h1, canonical, robots, sitemap, скорость и др.). Если передать storefrontId — результат сохранится в историю аудитов витрины. Scope: audit:run.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesДомен без протокола и путей, например example.com
storefrontIdNoНеобязательно: id витрины для сохранения аудита

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does reasonably well: it discloses expected runtime (~5–15 s), the shape of the result, the side effect that passing storefrontId persists the audit to storefront history, and the required scope (audit:run). It does not cover failure modes or rate limits, but the mutation/auth profile is unusually well surfaced for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact and front-loaded: the core action and output lead, followed by the side-effect condition and scope. The check list ('title, meta, h1, ...') is arguably padding but it usefully signals audit breadth, so waste is minimal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with no output schema and no annotations, the description supplies what an agent needs: duration, return contents, persistence side effect, and required scope. Minor gaps remain around error handling and whether the audit runs against the live site versus cached data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 restates what the schema already documents for storefrontId ('saved to storefront audit history') and does not add format or edge-case detail for domain beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('SEO-аудит главной страницы домена') plus the concrete deliverable (score 0–100 + list of checks with named items). It is clearly distinguishable from every sibling, all of which deal with articles, pages, positions, or search rather than running an audit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: no explicit when-to-use/when-not-to-use and no alternatives named among the sibling tools. The conditional behavior for storefrontId and the 'Scope: audit:run' requirement give some operative context, but the agent must infer the triggering conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seodata_whoamiA

Кто я: имя ключа, префикс, scopes, дневная квота и расход за сегодня. Используй первым — проверка авторизации и доступных прав.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden, and it does disclose the salient behavior: this is a read/inspection call whose payload is credentials, scopes and quota consumption. Side-effect freedom and the fact that reading it does not consume quota are left implicit, which keeps it out of 5 territory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences: the return contents first, then the imperative usage directive. No filler, and the most actionable guidance is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must describe the return payload — and it does, listing key name, prefix, scopes, quota and daily usage. For a zero-parameter tool this is fully sufficient to call and interpret it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero input parameters, so per the rubric the baseline is 4; there is nothing for the description to disambiguate. It adds no misleading parameter claims.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific operation (identity/authorization introspection) and enumerates exactly what it returns: key name, prefix, scopes, daily quota and today's consumption. This is clearly distinct from the data-retrieval siblings (list_storefronts, get_article, run_audit), none of which report credentials or quota.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly directs 'Use first — authorization check and available permissions', which gives a concrete ordering and intent signal. It stops short of stating when not to use it or naming an alternative, but for a sole identity tool no alternative exists.

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.

  1. 10 tool updatesv1.0.0
    • First observedseodata_generate_article
    • First observedseodata_get_article
    • First observedseodata_get_job
    • First observedseodata_get_page
    • First observedseodata_get_positions
    • First observedseodata_list_articles
    • First observedseodata_list_storefronts
    • First observedseodata_run_audit
    • First observedseodata_search
    • First observedseodata_whoami

TDQS

B3.4/5.0

Scored across 10 tools

Disambiguation4/5

Each tool has a largely distinct purpose: identity check, storefront listing, article listing/retrieval, page retrieval, search, audit, generation, job status, and positions. There is minor overlap between seodata_list_articles (returns full content) and seodata_get_article, and seodata_search partially overlaps with listing, but the descriptions clarify scope adequately.

Naming Consistency4/5

Nearly all tools follow a consistent seodata_verb_noun snake_case pattern (list_storefronts, get_article, run_audit, generate_article, get_job, get_positions). Only seodata_whoami deviates, being a bare noun-style identifier rather than verb_noun, but overall the convention is highly predictable.

Tool Count5/5

Ten tools is well within the ideal 3-15 range and each one maps to a concrete operation (auth, listing, retrieval, search, audit, generation, jobs, positions). No redundant or filler tools are present.

Completeness4/5

The read-oriented SEO/content surface is well covered: auth, storefronts, articles, pages, search, audits, AI generation, async jobs, and position tracking. Minor gaps exist—there's no explicit article update/delete or keyword management, and audit history retrieval isn't exposed—but core workflows are supported.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

  • Remote MCP server that gives Claude, ChatGPT, Cursor or any MCP client Google search volume, CPC, competition and similar keywords for 50+ countries. Works with no signup at 20 lookups a day; sign in with OAuth or an API key for higher limits, or $4.99 a month for unlimited.

  • An MCP for marketers that gives agents tools for SEO, AEO, socials and ads data. Generous free tier; works in Claude, ChatGPT, Cursor and other MCP clients.

  • Open-source AI SEO over MCP: audits, ranks, keywords, backlinks + AI visibility (GEO).

  • AI Visibility Isn’t Luck. It’s Signal Alignment. Read-only MCP access to Market Brew, a patented search engineering platform for SEO and AI visibility. Market Brew uses particle swarm optimization and template models to reverse engineer observed search behavior. Inspect ranking models, content alignment, knowledge bases, crawl data, and AI visibility history through a hosted Streamable HTTP MCP server. Requires an enabled Market Brew account and OAuth. Setup guide: https://brew.marketbrew.ai/customer-manual.htm#api-and-chatgpt-read-access

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables calling 120+ AI models and reading live web pages (scrape, crawl, structured extract) from any MCP client using one API key.
    9
    40 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Provides on-page SEO analysis via MCP tools, including page audits, schema extraction, robots.txt checks, sitemap parsing, and link analysis. No API keys required; works with any MCP-compatible client.
    5
    6 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables natural-language, read-only analysis of your own Google Search Console and Google Analytics 4 data, including search performance, engagement, sitemap health, ranking opportunities, and deterministic SEO audits through MCP clients like ChatGPT.
    MIT