mcp-fns-check
This MCP server enables due diligence on Russian legal entities and individual entrepreneurs by aggregating data from public federal registries (FNS, EFRSB, FSSP, arbitration courts, and others).
Tools available:
check_contractor— Primary tool: full counterparty check by INN or OGRN, returning an aggregated report with a deterministic verdict (safe_to_proceed,manual_review_required,high_risk_do_not_proceed,impossible_contractor_defunct) and actionable recommendations.check_inn— Retrieves a company/entrepreneur profile card from EGRUL/EGRIP by INN (taxpayer ID).check_ogrn— Retrieves a company profile card by OGRN (legal entity) or OGRNIP (sole proprietor).get_legal_status— Returns the current legal lifecycle status (active, liquidating, bankruptcy, liquidated, reorganizing, or excluded as inactive), enriched with EFRSB bankruptcy data.get_okveds— Returns main and supplementary OKVED (Russian industry classification) codes with human-readable descriptions.get_directors_history— Returns current director/manager information (full historical changes planned for future versions).check_for_red_flags— Runs 8 risk checks: mass registration address, mass director, disqualified director, active bankruptcy records, tax debts, missing tax reporting, open enforcement proceedings (bailiff service), and active arbitration lawsuits where the counterparty is a defendant.ping— Diagnostic tool to verify the server is running and reachable.
Data sources: egrul.nalog.ru (EGRUL/EGRIP), bankrot.fedresurs.ru (EFRSB), pb.nalog.ru (FNS Transparent Business), fssp.gov.ru (bailiff proceedings), kad.arbitr.ru (arbitration courts), and local FNS open data registries.
atomno-mcp-fns-check
MCP server for verifying Russian counterparties (legal entities and individual entrepreneurs) via public Federal Tax Service data: EGRUL/EGRIP, EFRSB, "Transparent Business", FSSP, and KAD.
Ready to be connected to Claude Desktop, Cursor, Claude Code, Cline, and any other client compatible with the Model Context Protocol (MCP).
Why
An AI agent (Claude, Cursor, etc.) usually knows nothing about Russian counterparties: EGRUL is not indexed properly by search engines, data in the FNS Transparent Business portal is behind POST requests and CAPTCHA, and EFRSB provides HTML. This MCP server gives the agent seven tools through which it can get a complete picture in a single call:
Who they are: name, address, OKVED, director.
Status: active, in liquidation, bankruptcy, liquidated, reorganization.
Is it safe to work with them: mass address, mass director, disqualification, bankruptcy, tax debts, failure to file reports, enforcement proceedings, arbitration cases.
The main tool — check_contractor(identifier) — accepts an INN or OGRN and returns an aggregated report with a verdict (safe_to_proceed / manual_review_required / high_risk_do_not_proceed / impossible_contractor_defunct) and a list of specific recommendations.
Related MCP server: mcp-egrul
Quick Start
Installation
pip install atomno-mcp-fns-checkOr via uv / pipx:
uv pip install atomno-mcp-fns-check
# или
pipx install atomno-mcp-fns-checkVerifying Operation
atomno-mcp-fns-check --version
# → atomno-mcp-fns-check 0.1.1
atomno-mcp-fns-check --help
# → полный список флагов: --transport / --host / --port / --log-levelBy default, the package runs as a stdio-MCP server: the agent communicates with it via stdin/stdout JSON-RPC. You cannot "poke" it directly from the shell — connect it to an MCP client. For network scenarios, the --transport {http,sse,streamable-http} flag is available with --host/--port.
Connecting to MCP Clients
Cursor
Edit mcp.json (Cursor → Settings → Cursor Settings → MCP):
{
"mcpServers": {
"fns-check": {
"command": "atomno-mcp-fns-check"
}
}
}Restart Cursor. In the chat, ask: "Check counterparty INN 7707083893" — the agent will call check_contractor itself.
Claude Desktop
Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"fns-check": {
"command": "atomno-mcp-fns-check"
}
}
}Restart Claude Desktop.
Claude Code (CLI)
claude mcp add fns-check atomno-mcp-fns-checkCline (VS Code)
In cline_mcp_settings.json:
{
"mcpServers": {
"fns-check": {
"command": "atomno-mcp-fns-check",
"disabled": false,
"autoApprove": []
}
}
}Tools
Tool | Purpose | Input | Sources |
| Main. Full check by a single identifier + deterministic verdict and recommendations |
| all 5 |
| Basic EGRUL card |
| egrul.nalog.ru |
| Basic card by OGRN/OGRNIP |
| egrul.nalog.ru |
| Life status with enrichment |
| EGRUL + EFRSB |
| OKVED codes with descriptions |
| EGRUL + OKVED-2 dictionary |
| Current director (+ history as per Open Data) |
| EGRUL |
| 8 risk checks (4 basic + 4 extended) |
| all 5 |
Public sources used:
egrul.nalog.ru — EGRUL/EGRIP, counterparty card.
bankrot.fedresurs.ru — EFRSB (Unified Federal Register of Bankruptcy Information).
pb.nalog.ru — FNS Transparent Business (tax debts, failure to file reports).
fssp.gov.ru — FSSP Enforcement Proceedings Data Bank.
kad.arbitr.ru — Arbitration Case File.
Local FNS registry slices — mass addresses, mass directors, disqualified persons (loaded by the
atomno-mcp-fns-etlscript from FNS Open Data).
Example check_contractor response
{
"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"
}Behavior during source failures
EGRUL is the only blocking source. If it is unavailable,
check_contractorraisesSourceUnavailableError(the agent will receive a human-readable message).Other sources are mixed in on a best-effort basis: CAPTCHA on FSSP, antibot on KAD, 5xx on pb.nalog.ru — everything is collected in
risks.errors[]and does NOT crash the report. The high-level verdict becomesmanual_review_required.
Configuration
All settings are via environment variables. No credentials are required (sources are public).
Variable | Description | Default |
| Path to the SQLite cache file |
|
| Path to the SQLite registry file (mass addresses/directors/disqualifications) |
|
| TTL for cached cards, hours |
|
| HTTP timeout, seconds |
|
| HTTP client User-Agent |
|
| Logging level (DEBUG/INFO/WARNING/ERROR) |
|
Template — .env.example.
Local FNS Registries
Registries of mass addresses / directors / disqualified persons are CSV/XML dumps from FNS Open Data. The package comes with a built-in mini-seed (registries_seed.json, synthetic test records) — it is enough for the tools to work "out of the box" and show flags on test INNs.
For production checks, update the registries with full slices via the 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 --commitOpen Data sources:
mass_addresses→ nalog.gov.ru/opendata/7707329152-massreg/mass_directors→ nalog.gov.ru/opendata/7707329152-massuchredt/disqualified→ service.nalog.ru/disqualified.do
By default, the CLI runs in --dry-run (parses and prints a sample); for writing, an explicit --commit is required. Meta-fields <registry>.last_etl, <registry>.last_etl_source, <registry>.last_etl_count are saved automatically — use them for cron monitoring of data freshness.
Development
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_checkExternal APIs in tests are never called directly — only via respx (httpx mocking) + local fixtures in tests/fixtures/.
Limitations
No history for directors — FNS does not provide change history via the search API; full history will appear after loading the EGRUL Open Data slice (planned for v0.5+).
FSSP / KAD sometimes block via CAPTCHA / antibot. In this case, the check falls into
errors[], and the overall verdict becomesmanual_review_required.Transparent Business only provides the fact ("has debt" / "no reporting"), without the amount. The amount must be requested from the IFNS.
Pro-tier (hosted backend in atomno-mcp-fns-check-server — closed backend) removes these limitations via: 24h Redis cache, proxy rotation to bypass CAPTCHA, full EGRUL Open Data slice, batch checks up to 100 INNs, AI-summary via LLM. The backend itself is not published.
Security and Legal Status
All sources are publicly open FNS data and related registries. Use is legal under Federal Law 149-FZ "On Information".
Legal entities and individual entrepreneurs do not fall under 152-FZ (On Personal Data).
Full names of individual directors are published by the FNS in EGRUL openly; in outbound responses, the director's personal INN is masked (format
XXX*****YY).No write operations to any external API.
No credentials / tokens required — sources are completely public.
Disclaimer
The service is an aggregator and a convenient interface over public FNS data. It is not affiliated with the FNS of Russia, EFRSB, KAD, or FSSP. Use at your own risk.
Information in the service's responses does not replace a full legal or financial assessment. The decision to enter into a contract with a counterparty is yours.
License
MIT — see LICENSE.
Links
GitHub: atomno-labs/mcp-fns-check
More MCP servers under the atomno brand: atomno.ru catalog (coming soon)
MCP specification: modelcontextprotocol.io
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityAmaintenanceCentral 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.52MIT
- AlicenseAqualityAmaintenanceMCP 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.82MIT
- AlicenseAqualityFmaintenanceMCP 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.31102MIT
- Alicense-qualityCmaintenanceMCP 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
Related MCP Connectors
Remote MCP server to enrich company profiles with structured B2B data and confidence scores.
A paid remote MCP for hosted MCP server, built to return verdicts, receipts, usage logs, and audit-r
RU INN/OGRN, banks, geo, WHOIS. Agent self-registers via register_agent. 20 free/day.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/atomno-mcp/mcp-fns-check'
If you have feedback or need assistance with the MCP directory API, please join our Discord server