rekvizit-mcp-
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@rekvizit-mcp-Проверь ИНН 7707083893 и скажи, это юрлицо или ИП"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
rekvizit-mcp-
MCP-сервер для работы с российскими реквизитами. Пять инструментов: детерминированная валидация по контрольным суммам, извлечение реквизитов из произвольного текста и карточка контрагента по ИНН.
Зачем это ассистенту: языковые модели уверенно «проверяют» ИНН на глаз и ошибаются. Контрольные суммы считаются точно или никак — это ровно тот класс задач, который надо выносить в инструменты.
Инструменты
Инструмент | Что делает |
| ИНН 10/12 знаков, контрольные разряды по приказу ФНС, определение юрлицо/физлицо |
| ОГРН (mod 11) и ОГРНИП (mod 13), разбор года и региона из номера |
| Расчётный/корреспондентский счёт против БИК (веса 7-1-3, mod 10) |
| Извлечение всех реквизитов из текста договора/письма с перекрёстной проверкой (счета сверяются с найденными БИК) |
| Карточка контрагента через DaData: статус, банкротство, руководитель, адрес |
Четыре инструмента работают полностью офлайн. Единственный внешний вызов — check_counterparty; наружу уходит только ИНН.
Особенность parse_requisites: кандидат попадает в выдачу, только если сошлась контрольная сумма или рядом стоит текстовая метка («ИНН», «БИК»…). Номер договора из 10 цифр не будет объявлен ИНН, а БИК не притворится КПП — на это есть регрессионные тесты.
Related MCP server: checko-mcp
Установка и подключение
git clone https://github.com/omotsart/rekvizit-mcp-.git && cd rekvizit-mcp-
pip install -e .Фрагмент конфигурации MCP-клиента (Claude Desktop, Cursor и др. — точное расположение конфига смотрите в документации вашего клиента, для Claude Desktop это claude_desktop_config.json, обычно %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"legal-requisites": {
"command": "python",
"args": ["-m", "legal_mcp.server"],
"env": { "DADATA_API_KEY": "ваш_ключ" }
}
}
}pip install -e . создаёт и короткую команду rekvizit-mcp (можно указать её как "command": "rekvizit-mcp"), но на Windows каталог Scripts часто не в PATH — запуск через python -m legal_mcp.server надёжнее.
DADATA_API_KEY нужен только для check_counterparty (бесплатный ключ выдаёт dadata.ru); остальные четыре инструмента работают полностью офлайн.
Проверка
pip install -e ".[dev]"
pytest # 22 теста контрольных сумм на публичных реквизитах госоргановПроверить весь путь через MCP-протокол (поднять сервер по stdio и вызвать инструменты, как это делает клиент) можно демо-скриптом:
python demo_client.pyОн запускает сервер как подпроцесс, перечисляет инструменты и вызывает validate_inn, validate_ogrn, parse_requisites на публичном ИНН — удобно как smoke-тест интеграции и как пример клиента на mcp.ClientSession.
Совместимость: написано под MCP Python SDK 2.x (MCPServer); в 1.x тот же класс назывался FastMCP — большинство туториалов в сети ещё про него.
Лицензия
MIT
Available Tools
5 toolscheck_counterpartyA
Возвращает карточку контрагента по ИНН: статус (действует / ликвидируется / банкрот), руководитель, адрес, даты регистрации.
Требует переменную окружения DADATA_API_KEY.
Args: inn: ИНН контрагента (10 или 12 цифр).
| Name | Required | Description | Default |
|---|---|---|---|
| inn | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It does disclose the required environment variable and the kind of data returned, but it does not mention that this likely performs an external API call, how errors are handled, or explicitly state that the operation is read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: the first sentence states the core purpose, followed by a one-line requirement and a clean Args spec. There is no filler or repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter lookup tool with no output schema and no annotations, the description covers the input format and lists the main returned fields. It omits edge-case behavior (e.g., invalid INN, API errors) and the exact response structure, but the essentials are present for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is the only source of parameter meaning. The Args section specifies that 'inn' must be 10 or 12 digits, which adds real semantic value beyond the schema's plain string type. It could be richer (e.g., example or accepted formats) but is adequate for a single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Возвращает') and names the resource (counterparty card by INN) plus the key data fields returned (status, head, address, registration dates). This clearly distinguishes it from the validation-focused siblings like validate_inn, though it does not explicitly call out any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states a prerequisite (DADATA_API_KEY) and implies the tool is used when you have an INN and need a counterparty card. However, it does not mention when to use this tool instead of parse_requisites or validate_inn, nor does it provide any exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_requisitesA
Извлекает реквизиты из произвольного текста (договор, письмо, счёт).
Находит ИНН, ОГРН/ОГРНИП, КПП, БИК и счета; каждый кандидат подтверждается контрольной суммой или текстовой меткой рядом. Счета автоматически сверяются с найденными БИК.
Args: text: Произвольный текст с реквизитами.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior itself. It does: each candidate is confirmed by a control sum or nearby text label, and accounts are automatically reconciled with found BIK. This informs the agent about internal verification logic. It does not detail failure modes or return structure, but the core behavioral traits are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: three sentences plus a structured Args block. It front-loads the primary purpose, then adds verification details in the following sentences. Every sentence adds information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter extraction tool with no annotations, the description covers the input, the extraction target, and the verification behavior. It does not specify the output schema, but that is not necessary for invoking the tool correctly. Minor missing details like return format or error behavior prevent a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden of documenting the parameter. The 'Args: text' section explains that text is arbitrary text containing requisites, giving semantic meaning beyond the schema's 'type': 'string'. For a single free-text parameter, this is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Извлекает' (extracts) with a clear resource ('реквизиты из произвольного текста') and explicitly names the fields found: ИНН, ОГРН/ОГРНИП, КПП, БИК, счета. This differentiates it from the sibling validation tools such as validate_inn or check_counterparty, which check rather than extract.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the intended context: extracting requisites from arbitrary text such as a contract, letter, or invoice. It does not explicitly mention when not to use it or name alternatives, but the extraction-versus-validation distinction in sibling names provides implicit routing. No exclusion criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_bank_accountA
Проверяет расчётный или корреспондентский счёт против БИК банка.
Ловит опечатки в паре «счёт + БИК» до отправки платёжки.
Args: account: 20-значный номер счёта. bik: 9-значный БИК банка.
| Name | Required | Description | Default |
|---|---|---|---|
| bik | Yes | ||
| account | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It does indicate this is a checking/validation operation and that it catches typos, which implies no data mutation. However, it does not disclose return format, error behavior, or whether any external lookup occurs, leaving notable gaps for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: purpose first, usage context second, and parameter details last. Every sentence adds information, with no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter validation tool with no output schema and no annotations, the description covers the main purpose and parameter formats, but omits the return value and error behavior. An agent would not know whether the tool returns a boolean, a result object, or throws on mismatch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates by defining both parameters: account as '20-значный номер счёта' and bik as '9-значный БИК банка'. This adds length and semantic meaning beyond the raw schema strings, though it stops short of specifying allowed character sets or validation rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Проверяет) and resource (расчётный или корреспондентский счёт против БИК банка), making the tool's purpose unambiguous. It is clearly distinguished from sibling tools like validate_inn/validate_ogrn, which target tax identifiers, and parse_requisites/check_counterparty, which handle different bank-data operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Ловит опечатки в паре «счёт + БИК» до отправки платёжки' gives a concrete use case: validating before payment submission. This implies when to use the tool, though it does not explicitly name alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_innA
Проверяет контрольную сумму ИНН (10 цифр — юрлицо, 12 — физлицо/ИП).
Args: inn: ИНН; лишние символы (пробелы, дефисы) игнорируются.
| Name | Required | Description | Default |
|---|---|---|---|
| inn | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It clarifies that the tool only validates the checksum and that extra characters like spaces and hyphens are ignored. It does not describe return/error behavior, but for a pure validation function the exposed behavior is otherwise clear and useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences: the first front-loads the tool's purpose, and the second gives the parameter detail. There is no filler, no repetition of the schema, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple single-required-parameter validator, so the description covers the key input semantics and the checksum-only scope. The only notable omission is explicit return-shape information, which is minor given the tool's clear validation intent. Overall, an agent has enough context to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema offers only a required string named 'inn' with no per-parameter description, so schema description coverage is 0%. The description compensates by defining what an INN is, giving the 10/12-digit distinction, and stating that spaces and hyphens are tolerated. This adds meaning directly relevant to constructing a correct argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action precisely: "Проверяет контрольную сумму ИНН" (checks the INN checksum), and even distinguishes between 10-digit legal entities and 12-digit individuals/entrepreneurs. This makes its resource and operation unambiguous and clearly separates it from siblings like validate_ogrn and validate_bank_account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: call this tool when an INN string needs checksum validation. However, it does not explicitly name alternative tools or explain when not to use this one, so an agent must infer routing from the sibling list rather than receiving direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_ogrnA
Проверяет контрольную сумму ОГРН (13 цифр) или ОГРНИП (15 цифр).
Args: ogrn: ОГРН или ОГРНИП; тип определяется по длине.
| Name | Required | Description | Default |
|---|---|---|---|
| ogrn | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full behavioral disclosure burden. It does reveal the core logic (checksum check and length-based type determination), which is valuable. However, it does not state what the tool returns or how it behaves on invalid length or non-digit input.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded, with no filler or redundant content. Every sentence contributes either the purpose, the formats, or the type-detection rule.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite outlining the validation logic, the description leaves out the return value and error handling (e.g., what happens with an invalid string). With no annotations and no output schema, this information is necessary for the agent to correctly consume the result. This is a significant gap for a complete tool definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines a string parameter titled 'ogr', giving no semantic meaning. The description compensates fully by explaining the accepted formats (13 or 15 digits) and that the type is inferred from length, which is essential for correct use.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Проверяет контрольную сумму') and the resource (ОГРН/ОГРНИП with digit counts), making its purpose obvious. This naturally distinguishes it from sibling validators like validate_inn and validate_bank_account without needing extra comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool vs alternatives. The name and resource imply usage for OGRN/OGRNIP validation, but there are no explicit exclusions or mention of other validators, so the agent must infer the correct context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: parsing/extraction, counterparty lookup, and standalone validation of INN, OGRN/OGRNIP, and bank account-BIK pairs. Even though parse_requisites performs some internal checks, it does not overlap with the dedicated validation tools.
All tool names follow a consistent snake_case verb_noun pattern: parse_requisites, check_counterparty, validate_inn, validate_ogrn, validate_bank_account. The validate_ prefix is used uniformly for all validation operations.
Five tools is well-scoped for the server's stated purpose of working with Russian business requisites. Each tool contributes a distinct capability: extraction, counterparty lookup, and validation of key identifiers.
The toolset covers extraction, counterparty status, and checksum validation for the most important requisites. A minor gap is the lack of standalone validation for KPP and BIK, though parse_requisites does surface these fields and account validation requires a BIK.
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 Connectors
Russian company lookup (EGRUL/INN), Cyrillic search, RU page to Markdown. Pay per call in USDC.
Validate EU, UK, AU VAT numbers for AI agents. EU ViDA e-invoicing compliance.
RU INN/OGRN, banks, geo, WHOIS. Agent self-registers via register_agent. 20 free/day.
EU compliance checks for AI agents: sanctions, company, VAT ID, IBAN, email. Pay per call.
Related MCP Servers
- FlicenseAqualityDmaintenanceEuropean business compliance suite for AI agents — 28 tools covering tax ID validation (PT, ES, FR, DE, IT, UK, NL), IBAN verification, EU VAT rates, invoice requirements, e-invoicing rules, payment terms, labor calendar helpers, VAT breakdown calculations and invoice schema validation for 18+ European countries.28
- AlicenseAqualityDmaintenanceEnables AI assistants to search and retrieve data about Russian companies, entrepreneurs, and individuals via the Checko.ru API, including financial reports, legal cases, and bankruptcy information.1213MIT
- AlicenseAqualityBmaintenanceVerified validation of structured identifiers — IBAN, payment cards, ISBN-13 and VIN — for AI agents. Runs the real checksum algorithms (mod-97, Luhn, mod-10, ISO 3779) instead of letting the model guess, and returns structured results with clear errors.450Apache 2.0

Qinisoofficial
AlicenseAqualityBmaintenanceThe deterministic fact-verification layer for AI agents. Validates the structured facts an agent emits — IBANs, payment cards, VAT and national tax IDs, crypto and bank addresses, domains, emails, phone numbers, securities and academic identifiers, plus dates, currencies and holidays — against checksums and curated authoritative data, not guesses.561Apache 2.0
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/omotsart/rekvizit-mcp-'
If you have feedback or need assistance with the MCP directory API, please join our Discord server