Skip to main content
Glama

atomno-mcp-fns-check

러시아 거래처(법인 및 개인사업자)를 공공 연방세무국(FNS) 데이터(EGRUL/EGRIP, EFRSB, '투명한 비즈니스', FSSP, KAD)를 통해 검증하기 위한 MCP 서버입니다.

build version license mcp tests coverage

Claude Desktop, Cursor, Claude Code, Cline 및 Model Context Protocol(MCP)과 호환되는 모든 클라이언트에 연결할 준비가 되어 있습니다.


목적

AI 에이전트(Claude, Cursor 등)는 일반적으로 러시아 거래처에 대해 알지 못합니다. EGRUL은 검색 엔진에서 제대로 인덱싱되지 않고, FNS의 '투명한 비즈니스' 데이터는 POST 요청과 CAPTCHA 뒤에 숨겨져 있으며, EFRSB는 HTML을 반환합니다. 이 MCP 서버는 에이전트에게 7가지 도구를 제공하여 단 한 번의 호출로 전체 상황을 파악할 수 있게 합니다:

  • 기본 정보: 명칭, 주소, OKVED, 대표자.

  • 상태: 운영 중, 청산 중, 파산, 청산 완료, 조직 개편.

  • 거래 안전성: 대량 주소, 대량 대표자, 자격 박탈, 파산, 세금 체납, 보고서 미제출, 집행 절차, 중재 사건.

주요 도구인 check_contractor(identifier)는 INN 또는 OGRN을 입력받아 판결이 포함된 종합 보고서(safe_to_proceed / manual_review_required / high_risk_do_not_proceed / impossible_contractor_defunct)와 구체적인 권장 사항 목록을 반환합니다.


Related MCP server: mcp-egrul

빠른 시작

설치

pip install atomno-mcp-fns-check

또는 uv / pipx를 통해:

uv pip install atomno-mcp-fns-check
# или
pipx install atomno-mcp-fns-check

작동 확인

atomno-mcp-fns-check --version
# → atomno-mcp-fns-check 0.1.1

atomno-mcp-fns-check --help
# → полный список флагов: --transport / --host / --port / --log-level

기본적으로 이 패키지는 stdio-MCP 서버로 실행됩니다. 에이전트는 stdin/stdout JSON-RPC를 통해 통신합니다. 셸에서 직접 테스트할 수는 없으며, MCP 클라이언트에 연결해야 합니다. 네트워크 시나리오의 경우 --host/--port와 함께 --transport {http,sse,streamable-http} 플래그를 사용할 수 있습니다.


MCP 클라이언트 연결

Cursor

mcp.json을 편집합니다 (Cursor → Settings → Cursor Settings → MCP):

{
  "mcpServers": {
    "fns-check": {
      "command": "atomno-mcp-fns-check"
    }
  }
}

Cursor를 재시작합니다. 채팅에서 "INN 7707083893 거래처를 확인해줘"라고 물어보면 에이전트가 자동으로 check_contractor를 호출합니다.

Claude Desktop

claude_desktop_config.json을 편집합니다 (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):

{
  "mcpServers": {
    "fns-check": {
      "command": "atomno-mcp-fns-check"
    }
  }
}

Claude Desktop을 재시작합니다.

Claude Code (CLI)

claude mcp add fns-check atomno-mcp-fns-check

Cline (VS Code)

cline_mcp_settings.json에서:

{
  "mcpServers": {
    "fns-check": {
      "command": "atomno-mcp-fns-check",
      "disabled": false,
      "autoApprove": []
    }
  }
}

도구

도구

용도

입력

출처

check_contractor

메인. 단일 식별자를 통한 전체 검증 + 결정적 판결 및 권장 사항

identifier: str (INN 10/12 또는 OGRN 13/15)

5개 전체

check_inn

기본 EGRUL 카드

inn: str

egrul.nalog.ru

check_ogrn

OGRN/OGRNIP 기준 기본 카드

ogrn: str

egrul.nalog.ru

get_legal_status

보강된 법적 상태

inn 또는 ogrn

EGRUL + EFRSB

get_okveds

해석이 포함된 OKVED 코드

inn 또는 ogrn

EGRUL + OKVED-2 사전

get_directors_history

현재 대표자 (+ Open Data에 따른 이력)

inn: str

EGRUL

check_for_red_flags

8가지 위험 검사 (기본 4개 + 확장 4개)

inn: str

5개 전체

사용되는 공공 출처:

  • egrul.nalog.ru — EGRUL/EGRIP, 거래처 카드.

  • bankrot.fedresurs.ru — EFRSB (연방 파산 정보 등록부).

  • pb.nalog.ru — FNS 투명한 비즈니스 (세금 체납, 보고서 미제출).

  • fssp.gov.ru — FSSP 집행 절차 데이터베이스.

  • kad.arbitr.ru — 중재 사건 카드 인덱스.

  • FNS 레지스트리 로컬 슬라이스 — 대량 주소, 대량 대표자, 자격 박탈자 (atomno-mcp-fns-etl 스크립트를 통해 FNS Open Data에서 로드).

check_contractor 응답 예시

{
  "identifier": "7707083893",
  "identifier_type": "inn",
  "inn": "7707083893",
  "ogrn": "1027700132195",
  "card": {
    "name": {"full": "ПАО СБЕРБАНК", "short": "СБЕРБАНК"},
    "status": "active",
    "address": {"full": "117997, Г.Москва, УЛ. ВАВИЛОВА, Д. 19", "is_mass_address": false},
    "director": {"full_name": "Греф Г. О.", "position": "Президент"},
    "okved_main": {"code": "64.19", "name": "Денежное посредничество прочее"}
  },
  "legal_status": {"status": "active", "status_label_ru": "Действующее", "sources_checked": ["egrul", "efrsb"]},
  "risks": {"overall_risk_level": "low", "overall_risk_score": 0, "flags": [], "errors": []},
  "verdict_action": "safe_to_proceed",
  "verdict_reason_ru": "Статус «Действующее», уровень риска — low (score 0/100). Препятствий к заключению сделки по открытым источникам не найдено.",
  "recommendations": [
    "По открытым источникам препятствий к заключению сделки не обнаружено. Соблюдайте стандартные меры должной осмотрительности (ст. 54.1 НК РФ): копия устава, приказ на руководителя, договор."
  ],
  "sources": {"sources_queried": ["efrsb", "egrul", "fssp", "kad", "pb_fns", "registries"]},
  "tier": "open",
  "checked_at": "2026-04-24T20:15:00Z"
}

출처 오류 발생 시 동작

  • EGRUL은 유일한 blocking 출처입니다. 사용할 수 없는 경우 check_contractor는 SourceUnavailableError를 발생시킵니다(에이전트는 사람이 읽을 수 있는 메시지를 받습니다).

  • 나머지 출처는 best-effort 방식으로 혼합됩니다. FSSP의 CAPTCHA, KAD의 antibot, pb.nalog.ru의 5xx 오류 등은 모두 risks.errors[]에 저장되며 보고서를 실패시키지 않습니다. 상위 수준의 판결은 manual_review_required가 됩니다.


구성

모든 설정은 환경 변수를 통해 이루어집니다. 자격 증명은 필요하지 않습니다(출처는 공개되어 있음).

변수

설명

기본값

MCP_FNS_CACHE_DB

카드 캐시 SQLite 파일 경로

./atomno_mcp_fns_check_cache.sqlite

MCP_FNS_REGISTRIES_DB

레지스트리 SQLite 파일 경로 (대량 주소/대표자/자격 박탈)

<cache>.registries.sqlite

MCP_FNS_CACHE_TTL_HOURS

캐시된 카드 TTL (시간)

168 (7일)

MCP_FNS_HTTP_TIMEOUT

HTTP 타임아웃 (초)

15

MCP_FNS_USER_AGENT

HTTP 클라이언트 User-Agent

atomno-mcp-fns-check/0.1 (+https://github.com/atomno-labs/mcp-fns-check)

MCP_FNS_LOG_LEVEL

로깅 레벨 (DEBUG/INFO/WARNING/ERROR)

INFO

템플릿은 .env.example을 참조하세요.


FNS 로컬 레지스트리

대량 주소/대표자/자격 박탈자 레지스트리는 FNS Open Data의 CSV/XML 덤프입니다. 패키지에는 내장된 미니 시드(registries_seed.json, 합성 테스트 레코드)가 포함되어 있어 도구가 즉시 작동하고 테스트 INN에서 플래그를 표시할 수 있습니다.

프로덕션 검증을 위해서는 atomno-mcp-fns-etl CLI를 통해 전체 슬라이스로 레지스트리를 업데이트하세요:

atomno-mcp-fns-etl --registry mass_addresses --source ./fns_open_data/ulm.csv --commit
atomno-mcp-fns-etl --registry mass_directors --source ./fns_open_data/uchredt.csv --commit
atomno-mcp-fns-etl --registry disqualified --source ./fns_open_data/disqualified.csv --commit

Open Data 출처:

기본적으로 CLI는 --dry-run 모드에서 작동합니다(파싱 및 샘플 출력). 기록을 위해서는 명시적인 --commit이 필요합니다. <registry>.last_etl, <registry>.last_etl_source, <registry>.last_etl_count 메타 필드는 자동으로 저장되므로 데이터 신선도 모니터링(cron)에 사용하세요.


개발

git clone https://github.com/atomno-labs/mcp-fns-check
cd mcp-fns-check
python -m venv .venv
source .venv/bin/activate    # Linux/macOS
# .venv/Scripts/activate     # Windows
pip install -e ".[dev]"
pytest -v --cov=src/atomno_mcp_fns_check

테스트에서 외부 API는 절대 직접 호출되지 않으며, respx(httpx 모킹) + tests/fixtures/의 로컬 픽스처를 통해서만 호출됩니다.


제한 사항

  • 대표자 이력 없음 — FNS는 검색 API를 통해 변경 이력을 제공하지 않습니다. 전체 이력은 EGRUL Open Data 슬라이드 로드 후 제공될 예정입니다(v0.5+ 계획).

  • FSSP / KAD 차단 — 때때로 CAPTCHA / antibot에 의해 차단됩니다. 이 경우 검사는 errors[]로 넘어가고 전체 판결은 manual_review_required가 됩니다.

  • 투명한 비즈니스 — 금액 없이 사실 여부('체납 있음' / '보고서 미제출')만 제공합니다. 금액은 IFNS에 직접 문의해야 합니다.

Pro-tier(비공개 백엔드 atomno-mcp-fns-check-server)는 Redis 24시간 캐시, CAPTCHA 우회를 위한 프록시 로테이션, 전체 EGRUL Open Data 슬라이스, 최대 100개 INN 배치 검사, LLM을 통한 AI 요약 등을 통해 이러한 제한을 제거합니다. 백엔드 자체는 공개되지 않았습니다.


보안 및 법적 상태

  • 모든 출처는 FNS 및 관련 레지스트리의 공개 데이터입니다. 149-FZ '정보에 관한 법률'에 따라 합법적으로 사용됩니다.

  • 법인 및 개인사업자는 152-FZ(개인정보 보호법)의 적용을 받지 않습니다.

  • 개인 대표자의 성명은 FNS가 EGRUL에 공개적으로 게시합니다. 아웃바운드 응답에서 대표자의 INN은 마스킹 처리됩니다(XXX*****YY 형식).

  • 외부 API에 대한 쓰기 작업은 없습니다.

  • 자격 증명/토큰이 필요하지 않습니다. 출처는 완전히 공개되어 있습니다.


면책 조항

이 서비스는 FNS 공개 데이터에 대한 집계 및 편리한 인터페이스입니다. 러시아 연방세무국, EFRSB, KAD, FSSP와 제휴되어 있지 않습니다. 사용자의 책임하에 사용하십시오.

서비스 응답 정보는 완전한 법적 또는 재무적 평가를 대체하지 않습니다. 거래처와의 계약 체결 결정은 사용자가 직접 내려야 합니다.


라이선스

MIT — LICENSE를 참조하세요.


링크

Available Tools

8 tools
check_contractorA

Главный тул: полная проверка контрагента по одному идентификатору.

Принимает ИНН (10 цифр — юр.лицо, 12 — ИП/физлицо) или ОГРН (13 цифр — юр.лицо, 15 — ИП). Тип определяется строго по длине и контрольной цифре.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesИНН (10/12 цифр) или ОГРН/ОГРНИП (13/15 цифр). Пример: '7707083893' (Сбербанк) или '1027700132195'.
include_extended_risksNoЗапускать ли 4 расширенные проверки (Прозрачный бизнес, ФССП, КАД). По умолчанию True.
lawsuits_threshold_rubNoПорог фильтрации арбитражных дел в рублях. По умолчанию 1 000 000 ₽ — отсекает мелкие споры.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility. It discloses identifier validation logic and parameter defaults (extended risks, lawsuit threshold), but does not elaborate on what the 'full check' entails, side effects, or authentication requirements. The output schema exists but is not referenced.

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?

The description is concise (three sentences) with the main purpose front-loaded. Every sentence adds critical information: identifier formats, validation, and parameter defaults. No redundant or vague phrasing.

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?

Given the output schema, return values are covered. The description sufficiently explains input validation and parameter behavior for a 3-param tool. It does not mention prerequisites (e.g., API keys) or how this tool relates to siblings beyond being the 'main' one, but overall it is adequate for agent invocation.

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

Parameters5/5

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

With 100% schema coverage, the description adds significant value beyond the schema. It explains identifier format and validation rules, specifies what extended risks include (4 checks: transparent business, FSSP, KAD), and clarifies the lawsuit threshold filters small disputes. Default values are contextualized.

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?

The description clearly states the tool performs a full counterparty check using a single identifier (INN or OGRN). It specifies validation criteria (digit length, control digit) and implicitly differentiates from sibling tools (check_inn, check_ogrn) that only handle one identifier type.

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?

The description advises when to use this tool (for a full check) and provides input validation rules. It does not explicitly state when to use alternatives or when not to use this tool, but the context of being the 'main tool' implies it is the default for comprehensive checks.

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

check_for_red_flagsA

Агрегированный риск-чек по контрагенту (8 проверок, SPEC §3.5).

Базовые 4 проверки (всегда):

  • mass_address — массовый юр.адрес ФНС;

  • mass_director — массовый руководитель (≥10 действующих компаний);

  • disqualified_director — руководитель в реестре дисквалифицированных;

  • bankruptcy_records — активные дела в ЕФРСБ.

Расширенные 4 проверки (include_extended=True):

  • tax_debts — индикатор задолженности по налогам (Прозрачный бизнес);

  • no_reporting — нет налоговой отчётности > 1 года (Прозрачный бизнес);

  • enforcement_proceedings — открытые исп.производства (Банк данных ФССП);

  • active_lawsuits — активные арбитражные дела где контрагент ответчик (КАД), фильтр по сумме иска через lawsuits_threshold_rub.

Любая внешняя проверка может вернуть ошибку (CAPTCHA, 5xx, timeout) — она попадёт в errors[] и не сорвёт остальные проверки.

ParametersJSON Schema
NameRequiredDescriptionDefault
innYesИНН контрагента (10 или 12 цифр).
include_extendedNoзапускать ли расширенные 4 проверки. По умолчанию True.
lawsuits_threshold_rubNoпорог фильтра арбитражных дел в рублях. По умолчанию 1 000 000 ₽ (отсечь мелкие споры).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations, so description carries full burden. Discloses possible errors (CAPTCHA, 5xx, timeout) and that errors are collected without failing other checks. Reveals behavioral traits beyond annotations.

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?

Well-structured with bullet points for readability, but slightly lengthy. Front-loaded with purpose. Could be slightly more concise.

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?

Covers purpose, parameter details, error handling, and references SPEC. Output schema exists, so return values are handled. Adequate for a tool with 8 sub-checks and error handling.

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?

Input schema has 100% coverage, but description adds value by listing the specific checks controlled by include_extended and explaining the lawsuit filter threshold.

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?

Clearly states it performs a aggregated risk check with 8 checks, referencing SPEC §3.5. Differentiates from siblings like check_contractor, check_inn by being comprehensive.

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?

Explains basic vs extended checks with include_extended, and describes error handling. Does not explicitly contrast with sibling tools, but context is clear when to use.

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

check_innA

Полная карточка контрагента по ИНН (10 цифр — юр.лицо, 12 — ИП).

ParametersJSON Schema
NameRequiredDescriptionDefault
innYesИНН контрагента. Пример: '7707083893' (Сбербанк).
include_extendedNoзарезервировано для S2.x (Прозрачный бизнес).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It describes the output as a 'full card' but does not disclose behavioral traits such as auth requirements, rate limits, or side effects. The description adds minimal behavioral context beyond the input format.

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?

The description is a single, well-structured sentence that front-loads the main purpose. Every word adds value, with no filler. It is appropriately concise.

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?

Given that an output schema exists, the description does not need to detail return values. However, the description is terse and does not specify what the 'full card' includes, leaving some ambiguity. It adequately covers the basic purpose but could be more comprehensive.

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?

Schema description coverage is 100%, so baseline is 3. The description adds meaningful context for the 'inn' parameter by specifying the digit length for legal entities vs IPs. For 'include_extended', it clarifies it is reserved for future use, adding value beyond the schema.

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?

The description clearly states the tool returns a full counterparty card by INN, and specifies the length distinction (10 digits for legal entities, 12 for individual entrepreneurs). This is a specific verb and resource, and it helps distinguish from sibling tools like check_ogrn (which checks OGRN).

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?

The description implies usage for obtaining a counterparty card based on INN but does not explicitly state when to use this tool versus alternatives like check_contractor or check_for_red_flags. No when-not conditions 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.

check_ogrnC

Карточка контрагента по ОГРН (13 цифр) или ОГРНИП (15 цифр).

ParametersJSON Schema
NameRequiredDescriptionDefault
ogrnYes
include_extendedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/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 burden. It does not disclose any behavioral traits, such as whether the operation is read-only, requires authentication, or has rate limits. The description only states what the tool does, not its side effects or safety 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?

Single sentence that front-loads the purpose. No wasted words, but could be slightly more informative without losing conciseness.

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?

Given the output schema exists, return values need not be described. However, the description is minimal; it lacks context about the optional parameter and does not clarify the scope of 'counterparty card' relative to sibling tools.

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 0%, so the description must compensate. It adds meaning to the 'ogrn' parameter by specifying digit length (13 or 15). However, it does not mention the 'include_extended' parameter, leaving it unexplained.

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 clearly states it returns a counterparty card by OGRN/OGRNIP, distinguishing it from siblings like check_inn which uses a different identifier. However, it doesn't elaborate on what the card contains, preventing a 5.

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?

No explicit guidance on when to use this tool versus alternatives like check_inn or check_contractor. The description only implies usage when an OGRN is available.

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

get_directors_historyA

История смены руководителей и учредителей по ИНН.

На стадии S3 возвращает только текущего руководителя из egrul.nalog.ru плюс предупреждение о неполноте данных. Полная история (с датами назначения/увольнения) появится на стадии S5 после загрузки Open Data slice ЕГРЮЛ.

ParametersJSON Schema
NameRequiredDescriptionDefault
innYesИНН контрагента (10 или 12 цифр).
depth_yearsNoна S3 не используется (история пока без дат).
include_foundersNoна S3 не используется (ЕГРЮЛ-search не отдаёт учредителей).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, but description discloses important behavioral traits: returns only current director at S3 with data incompleteness warning, and full history only at S5. Details about parameter non-usage at S3 add transparency. Doesn't mention auth or rate limits, but given no annotations, this is good.

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 sentences with front-loaded purpose. No wasted words; each sentence provides distinct, necessary information (purpose, stage behavior, parameter notes).

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?

Given 3 parameters and existing output schema, the description covers stage-dependent behavior and parameter constraints. It doesn't detail output schema, but that's covered by the output schema itself. Sufficient for the complexity.

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?

Schema coverage is 100%, and the description adds value by noting that depth_years and include_founders are not effective at S3. This clarifies parameter behavior beyond the schema descriptions.

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?

Clearly states 'История смены руководителей и учредителей по ИНН' (History of changes of directors and founders by TIN), specifying the verb (get history) and resource (by TIN). This distinguishes it from sibling tools like check_inn or get_legal_status.

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?

Provides stage-specific behavior: at S3 returns only current director with a warning, full history at S5. Also explains that depth_years and include_founders are not used at S3. While it doesn't explicitly list when not to use or compare to siblings, it gives clear usage context.

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

get_okvedsC

Перечень кодов ОКВЭД основной + дополнительные с расшифровкой по справочнику ОКВЭД-2.

ParametersJSON Schema
NameRequiredDescriptionDefault
innNo
ogrnNo
include_historyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, authorization needs, or rate limits. For a tool with no annotations, more behavioral context is needed.

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

Conciseness2/5

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

The description is a single short sentence, which is concise but omits essential information about inputs and usage. It is underspecified for a tool with multiple optional 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?

Given the lack of param documentation and annotations, the description is insufficient. The output schema exists but the description does not cover input semantics or invocation requirements.

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%, and the description does not explain the purpose of any parameter (inn, ogrn, include_history). The agent cannot infer how to specify input correctly.

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 clearly states the tool returns a list of OKVED codes with interpretations. However, it does not specify that the user must provide either INN or OGRN as input, which is crucial for clarity.

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?

No guidance on when to use this tool versus siblings like check_inn or get_directors_history. No alternatives or exclusions are mentioned.

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

pingA

Диагностический тул: проверяет, что сервер запущен и доступен.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, but the description discloses that the tool performs a read-only check without side effects. It is adequate for a ping tool; additional details like return type are covered by the 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.

Conciseness5/5

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

Single sentence with no wasted words. Front-loaded purpose, efficient and structured.

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?

Given the tool's simplicity (no parameters, no side effects), the description is complete. Output schema exists to explain return values, so no further description needed.

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?

No parameters exist, so baseline score of 4 applies. Description adds no parameter info, but none is needed.

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?

The description clearly states the tool is a diagnostic tool that checks server availability, using specific verb 'проверяет' and resource 'сервер'. It distinguishes well from sibling tools which focus on business data.

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?

The description implies usage for verifying server connectivity, which is distinct from siblings. However, it does not explicitly state when to use or when not to use, but the context is clear enough for a simple diagnostic tool.

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. 8 tool updatesv0.1.1
    • First observedcheck_contractor
    • First observedcheck_for_red_flags
    • First observedcheck_inn
    • First observedcheck_ogrn
    • First observedget_directors_history
    • First observedget_legal_status
    • First observedget_okveds
    • First observedping

TDQS

A3.6/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct aspect of contractor verification: comprehensive checks by identifier, risk flags, specific identifier lookups, director history, legal status, OKVED codes, and a diagnostic ping. No overlap in purpose.

Naming Consistency4/5

Tools follow a consistent snake_case pattern with clear verb prefixes (check_, get_, ping). Minor deviation with 'check_for_red_flags' using 'for', but overall pattern is predictable.

Tool Count5/5

8 tools is well-scoped for the domain of Russian contractor verification, covering all essential operations without being excessive or too sparse.

Completeness4/5

Covers core lifecycle: identifier validation, comprehensive checks, risk assessment, director history, legal status, and OKVED codes. Minor gaps like batch operations, but the main workflows are complete.

Maintenance

ActivitySlowing
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Central Bank of Russia (CBR) data for AI agents — daily and historical currency rates, key rate, inflation, and macro statistics. Five typed MCP tools, in-memory TTL cache, MIT-licensed, no API key required.
    5
    104 PyPI
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for the Russian state registries EGRUL (legal entities) and EGRIP (individual entrepreneurs), built on official Federal Tax Service open-data dumps. Self-hosted via local SQLite.
    8
    98 PyPI
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server that provides 31 tools for the DaData API, enabling address autocomplete, company lookup, bank details, phone/email/passport validation, car recognition, geocoding, and reference directory queries.
    31
    13 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for verifying Polish business entities from the National Court Register (KRS) and VAT White List. Allows querying by KRS, NIP, or REGON to retrieve official company data including name, address, board, and capital.
    Apache 2.0