mcp-fns-calc
atomno-mcp-fns-calc
Налоговый калькулятор РФ прямо в AI-ассистенте — Russian tax math & fiscal-status checks for AI agents (Cursor, Claude Desktop, Cline, and any MCP client).
MCP-сервер (Model Context Protocol) для бухгалтеров, ИП и малого бизнеса. 6
калькуляторов работают локально и офлайн, без ключа, с формулой и ссылкой на статью
НК РФ: calc_vat (НДС 20/10/0 и спец-ставки 5/7), calc_usn (доходы 6% и
доходы-минус-расходы 15% с минимальным налогом и вычетом взносов), calc_insurance_ip
(фиксвзносы ИП + 1% с дохода свыше 300 000 ₽, неполный год), calc_ndfl
(прогрессивная шкала 2025+ 13/15/18/20/22% с разбивкой по ступеням), calc_patent
(ПСН), calc_penalty (пени по ключевой ставке ЦБ, 1/300 и 1/150). Плюс get_rates —
актуальные ставки и лимиты.
Ещё 5 live-проверок фискальных статусов (через hosted-API, тариф Pro):
check_selfemployed (самозанятый/НПД по ИНН — обязательная проверка перед выплатой
физлицу), check_ip_status (ИП/ОКВЭД из ЕГРИП), check_disqualified,
check_account_block, check_tax_arrears.
Калькуляторы — бесплатно и офлайн. Live-проверки и всегда-свежие ставки берём с hosted-бэкенда Atomno MCP (данные ФНС на дату запроса, ничего парсить не нужно) — для них нужен API-ключ: atomno-mcp.ru/pricing.
Каждый ответ содержит дисклеймер и ссылку на первоисточник. Не является налоговой консультацией.
Быстрый старт
uvx atomno-mcp-fns-calc # запустить без установки
# или
pipx install atomno-mcp-fns-calcmcp.json (Cursor / Claude Desktop) — калькуляторы работают сразу, без ключа:
{
"mcpServers": {
"fns-calc": {
"command": "uvx",
"args": ["atomno-mcp-fns-calc"],
"env": { "MCP_FNS_CALC_TOKEN": "<ключ для live-проверок, опционально>" }
}
}
}Related MCP server: mcp-fns-check
Переменные окружения
Переменная | Описание | Обязательна |
| API-ключ (тариф Pro) для live-проверок статусов и свежих ставок | нет (калькуляторы работают без него) |
| Базовый URL hosted-бэкенда | нет |
| Таймаут HTTP, сек (default 30) | нет |
Инструменты
Тул | Тип | Что делает |
| офлайн | НДС: начислить сверху / выделить из суммы |
| офлайн | УСН доходы 6% / доходы-расходы 15% + мин.налог |
| офлайн | Взносы ИП «за себя» + 1% сверх 300k |
| офлайн | НДФЛ по прогрессивной шкале 2025+ |
| офлайн | Стоимость патента (ПСН) |
| офлайн | Пени по ключевой ставке ЦБ РФ |
| офлайн/hosted | Ставки и лимиты (снапшот или свежие) |
| hosted (Pro) | Статус самозанятого (НПД) по ИНН |
| hosted (Pro) | Статус ИП и ОКВЭД из ЕГРИП |
| hosted (Pro) | Реестр дисквалифицированных лиц |
| hosted (Pro) | Приостановление операций по счетам |
| hosted (Pro) | Недоимки / задолженность |
Дисклеймер
Инструмент расчётов и доступа к открытым данным ФНС. Не является налоговой, бухгалтерской или юридической консультацией. Ставки и лимиты меняются — проверяйте актуальность по НК РФ и официальным сервисам ФНС / Банка России. Не аффилирован с ФНС.
Лицензия
MIT.
Available Tools
12 toolscalc_insurance_ipA
IP fixed insurance contributions + 1% on income above 300k RUB (NK RF art. 430).
When to use: annual IP self-contribution estimate; set months<12 for partial year. When NOT to use: employee payroll — use payroll tools; amounts for closed years without snapshot check. Side effects: read-only, deterministic, offline; rates from bundled snapshot.
Returns: {fixed, extra_1pct, total, income, year, months, formula, article, disclaimer}.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Год расчёта. | |
| income | Yes | Годовой доход ИП. | |
| months | No | Полных месяцев деятельности (неполный год). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description fully carries the burden by stating side effects: read-only, deterministic, offline, and rates from bundled snapshot. No contradictions.
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?
Description is concise, front-loading purpose, then usage, side effects, and return fields. Every sentence serves a purpose, no 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?
Covers purpose, usage, behavior, and return fields. Missing error conditions or edge cases (e.g., negative income), but given sibling tools and output schema existence, it is largely complete.
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 coverage is 100%, so parameters are already documented. Description adds value by clarifying 'months' usage for partial year, reinforcing schema ranges and defaults.
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?
Description clearly states it calculates IP fixed insurance contributions plus 1% on income above 300k RUB, citing tax code art. 430. It distinguishes from sibling tools like calc_ndfl and calc_patent by focusing on IP self-contribution.
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?
Explicitly provides 'When to use' (annual IP self-contribution estimate, partial year with months<12) and 'When NOT to use' (employee payroll, closed years without snapshot check) with alternative tool suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calc_ndflA
Progressive personal income tax (NDFL/НДФЛ) 2025+ with per-bracket breakdown (NK RF art. 224).
When to use: estimate annual NDFL on salary or IP income after deductions. When NOT to use: monthly withholding by employer — use payroll; non-resident rates not modeled. Side effects: read-only, deterministic, offline; no auth or network.
Returns: {tax_total, taxable_base, brackets[], formula, article, disclaimer, snapshot_date}.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Год (прогрессивная шкала с 2025). | |
| income | Yes | Годовой доход. | |
| deductions | No | Вычеты. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses 'Side effects: read-only, deterministic, offline; no auth or network.' These are critical behavioral traits. However, it could mention error handling or edge cases (e.g., negative income already handled by schema minimum=0). Still, the key safety and performance aspects are clearly stated.
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 highly concise: 4 sentences covering purpose, usage guidelines, side effects, and return structure. Every sentence adds value with no redundancy or fluff.
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?
Given the complexity of the tool (progressive tax, 3 parameters, output schema exists), the description covers purpose, when/not to use, side effects, and return fields. It lacks detailed explanation of bracket structure in returns, but since an output schema likely exists, this is acceptable. The legal reference (NK RF art. 224) adds useful context.
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 100% (all parameters have descriptions). The description reinforces that deductions are subtracted from income and that the result includes per-bracket breakdown, but it does not add significant new meaning beyond the schema. Baseline 3 is appropriate.
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?
Description clearly states 'Progressive personal income tax (NDFL/НДФЛ) 2025+ with per-bracket breakdown' and specifies the resource 'salary or IP income after deductions'. The verb 'estimate annual NDFL' is precise, and the tool is clearly distinguished from siblings like calc_insurance_ip, calc_vat, etc.
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?
Explicitly provides 'When to use' and 'When NOT to use' sections, including an alternative for employer withholding ('use payroll') and a limitation ('non-resident rates not modeled'). This provides clear guidance on when to invoke this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calc_patentA
Patent taxation (PSN/ПСН) cost: potential income × 6% × months/12 minus contributions (NK RF ch. 26.5).
When to use: compare patent cost vs USN for an activity; potential_income from regional law. When NOT to use: eligibility/OKVED limits — verify with FNS; employee-heavy cases need manual review. Side effects: read-only, deterministic, offline; no auth or network.
Returns: {patent_cost, before_deduction, contributions_deduction, months, formula, article, disclaimer}.
| Name | Required | Description | Default |
|---|---|---|---|
| months | No | Срок патента в месяцах. | |
| has_employees | No | Есть работники (вычет взносов макс. 50%). | |
| potential_income | Yes | Потенциально возможный годовой доход (закон региона). | |
| contributions_paid | No | Уплаченные страховые взносы. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses side effects: read-only, deterministic, offline, no auth/network, and lists the return fields.
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?
Concise, front-loaded with formula, and each sentence adds value (usage, side effects, return structure). No fluff.
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?
Complete coverage: calculation formula, usage guidelines, side effects, and return fields. Output schema exists, so return value detail is adequate.
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 coverage is 100% with descriptions; the additional formula and usage context in the description provide extra meaning (e.g., how contributions_paid and has_employees affect the calculation).
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 the tool calculates patent taxation (PSN/ПСН) cost using a specific formula, distinguishing it from sibling tax calculators (e.g., calc_usn, calc_vat).
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?
Explicitly provides 'When to use' (compare patent vs USN, use regional law potential_income) and 'When NOT to use' (eligibility limits, employee-heavy cases), with clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calc_penaltyA
Estimate late-payment tax penalty (пени) per NK RF art. 75 using the CBR key rate.
When to use
Quick what-if: how much penalty accrues on a known arrears amount and delay in days.
Org vs IP/individual: orgs use 1/300 for days 1–30, then 1/150; IP and individuals use 1/300 for all days.
Before a payment plan or negotiation — ballpark figure, not a filing document.
When NOT to use
Multi-period calculation where the key rate changed during the delay (this tool uses one flat rate).
Penalties on non-tax debts (commercial loans, fines outside NK art. 75).
Official amount on a tax notice — always take the figure from FNS/LK; use this tool only for estimates.
Parameters
amount: principal arrears in RUB (non-negative).
days: calendar days of delay (0 → penalty 0).
key_rate: annual CBR %; omit to use bundled snapshot default (response includes warning_ru if default used).
payer:
org|ip|individual— selects the 1/300 vs 1/150 split for legal entities.
Returns (dict)
penalty (float): total penalty in RUB, rounded to kopecks.
amount, days, key_rate, payer: echo inputs used in the formula.
formula (str): human-readable breakdown.
article: "ст. 75 НК РФ".
snapshot_date, disclaimer, source: metadata for audit trail.
warning_ru (optional): present when key_rate was taken from snapshot, not passed explicitly.
Limitations
Single key rate for the whole period; for rate changes call get_rates(fresh=true) and run per sub-period manually.
Does not include other sanctions (штрафы) under NK art. 122/123 — only пени art. 75.
Read-only, offline, deterministic; no side effects; idempotent for identical inputs.
Examples
Org, 100_000 RUB, 45 days, key_rate=21: days 1–30 @ amount×21%/300×30 + days 31–45 @ amount×21%/150×15.
IP, 50_000 RUB, 10 days: amount×rate%/300×10 for all days.
days=0 → penalty=0 regardless of amount.
| Name | Required | Description | Default |
|---|---|---|---|
| days | Yes | Число календарных дней просрочки с даты, когда платёж должен был быть уплачен. | |
| payer | No | Тип плательщика: org (организация), ip (ИП), individual (физлицо, не ИП). | ip |
| amount | Yes | Сумма недоимки (руб.), на которую начисляются пени. | |
| key_rate | No | Ключевая ставка ЦБ РФ, % годовых. Если не задана — берётся из встроенного снапшота (см. snapshot_date в ответе). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description fully handles disclosure. It states read-only, offline, deterministic, no side effects, idempotent, and lists limitations like single key rate and exclusion of other sanctions.
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?
Well-structured with sections and bullet points, every sentence adds value. Slightly long but necessary for a complex tax tool. No 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?
Comprehensive coverage: purpose, when-to-use/not, parameter explanations, return value details (dict fields), limitations, and examples. Output schema referenced. Full context for an AI agent to use 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?
Description adds significant meaning beyond schema: explains amount as principal arrears, days as calendar delay, key_rate as optional with default warning, and payer selecting penalty split. Includes examples illustrating parameter usage.
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 the tool estimates late-payment tax penalty under NK RF art. 75 using CBR key rate. It distinguishes from siblings like calc_insurance_ip by focusing on tax penalties.
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?
Explicit 'When to use' and 'When NOT to use' sections provide clear guidance. It mentions context (quick what-if, before payment plan) and exclusions (multi-period, non-tax debts, official amounts).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calc_usnA
Calculate simplified tax (USN/УСН): 6% on income or 15% income-minus-expense with minimum tax (NK RF ch. 26.2).
When to use
Estimate USN tax for a quarter/year before payment.
Object
income(6%): deduct paid IP contributions (capped at 50% if has_employees).Object
income_minus_expense(15%): apply minimum tax 1% of income if 15% base is lower.
When NOT to use
Exact advance-payment calendar or KKT cash reporting.
Taxpayers above USN income limits — check get_rates for limits first.
Parameters: income, obj, expenses, rate (regional override), contributions_paid, has_employees, advances_paid.
Returns: {tax, base, rate, min_tax, contributions_deduction, advances, formula, article, disclaimer}.
Limitations: read-only, offline; regional rates optional; subtracts advances_paid from result.
| Name | Required | Description | Default |
|---|---|---|---|
| obj | No | income (6%) или income_minus_expense (15%). | income |
| rate | No | Региональная ставка, если отличается от базовой. | |
| income | Yes | Доход за период. | |
| expenses | No | Расходы (для income_minus_expense). | |
| advances_paid | No | Ранее уплаченные авансовые платежи. | |
| has_employees | No | Есть работники (ограничивает вычет взносов 50%). | |
| contributions_paid | No | Уплаченные страховые взносы (для объекта income). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explicitly states the tool is 'read-only, offline', explains the calculation logic for both tax objects, minimum tax, contributions deduction, and that it subtracts advances_paid. It also lists return fields, providing full behavioral transparency.
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 well-structured with headings ('When to use', 'When NOT to use', 'Parameters', 'Returns', 'Limitations') and bullet points. It is concise yet comprehensive, with every sentence adding necessary 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?
Given the tool's complexity (7 params, two tax regimes, contributions deduction, minimum tax), the description covers all aspects: usage context, parameter explanation, return structure, and limitations. The existence of an output schema complements the description, but the description itself is highly complete.
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 coverage is 100%, so baseline is 3. The description adds value by grouping parameters (e.g., 'Parameters: income, obj, expenses...') and explaining their role in context (e.g., 'contributions_paid: for object income'). It also notes rate is regional override, enhancing understanding beyond schema.
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 'Calculate simplified tax (USN/УСН): 6% on income or 15% income-minus-expense with minimum tax'. It uses a specific verb and resource, and the description distinguishes it from sibling tools like calc_ndfl or calc_vat by specifying the tax type and regime. The limitations section further clarifies scope.
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 includes explicit 'When to use' and 'When NOT to use' sections, providing clear context. It advises to check get_rates for income limits, and lists exclusions like exact advance-payment calendar or KKT cash reporting. This helps the agent decide when to invoke this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calc_vatA
Compute Russian VAT (НДС): add on top of net or extract from gross (NK RF art. 164, 168).
When to use
Invoice line: net→gross (mode=add) or gross→net+VAT (mode=extract).
USN taxpayers on special VAT rates 5% or 7% (from 2025 rules).
Quick sanity check before bookkeeping export.
When NOT to use
VAT declaration filing, multi-rate invoices, or export/zero-rate cases.
Mixed taxable/exempt lines — sum per line in accounting software.
Parameters
amount: base sum in RUB (net for add, gross for extract).
rate: 20, 10, 0, 5, or 7 (percent).
mode:
add|extract.
Returns: {net, vat, gross, rate, mode, formula, article, disclaimer, snapshot_date}.
Limitations: read-only, offline, single-rate line; no side effects. Example: amount=100000, rate=20, mode=add → vat=20000, gross=120000.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | add — начислить сверху; extract — выделить из суммы. | add |
| rate | No | Ставка НДС: 20/10/0 или спец 5/7 (УСН с 2025). | |
| amount | Yes | Сумма (без НДС для add, с НДС для extract). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description fully covers behavior: states read-only, offline, single-rate line, no side effects. Describes return object fields and includes an example. Exceeds required disclosure.
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?
Well-structured with clear sections (purpose, when to use, when not, parameters, returns, limitations, example). Every sentence is informative and necessary. Front-loaded with core action.
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?
Given 3 parameters and an output schema, the description is fully complete: covers all use cases, exclusions, parameter semantics, return format, limitations, and provides an example. No gaps.
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 describes all 3 parameters with 100% coverage. Description adds context for each parameter (e.g., 'base sum in RUB (net for add, gross for extract)') and demonstrates usage with example. Adds value beyond schema.
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?
Clearly states the tool computes Russian VAT (НДС) with two modes (add to net or extract from gross). Distinguishes from sibling tools like calc_insurance_ip by focusing specifically on VAT.
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?
Provides explicit 'When to use' (invoice line, USN taxpayers, sanity check) and 'When NOT to use' (VAT declaration, multi-rate, export/zero-rate, mixed lines). This is comprehensive guidance for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_account_blockA
Bank account operation suspension info from FNS (10–12 digit INN). Requires Pro API key.
When to use: treasury/compliance check before large outbound payment. When NOT to use: real-time bank balance — different service; offline unavailable. Side effects: read-only HTTPS; needs MCP_FNS_CALC_TOKEN.
Returns: {suspended, inn, details, disclaimer} or error.
| Name | Required | Description | Default |
|---|---|---|---|
| inn | Yes | ИНН организации/ИП. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses read-only HTTPS behavior, required token (MCP_FNS_CALC_TOKEN), and that it returns an object or error. No annotations present, so description carries full burden and does so well.
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?
Front-loaded with purpose, then uses bullet points for usage, side effects, and return value. Every sentence adds value, no wasted words.
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?
Given output schema exists, description explains return structure ({suspended, inn, details, disclaimer}) and covers prerequisites, limitations, and side effects comprehensively.
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 has 100% coverage for 'inn' parameter with description; tool description adds context like '10–12 digit' and 'from FNS', enhancing meaning beyond schema.
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?
Clearly states it checks bank account operation suspension info from FNS using a 10–12 digit INN. Differentiates from sibling tools like check_tax_arrears and check_ip_status.
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?
Explicitly specifies when to use (treasury/compliance check before large outbound payment) and when not to use (real-time bank balance, offline unavailable).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_disqualifiedA
Match against FNS disqualified persons register by INN or FIO. Requires Pro API key.
When to use: compliance screen before appointing director/signatory; provide inn or fio. When NOT to use: sole evidence for legal decisions — result is indicative, verify manually. Side effects: read-only HTTPS; needs MCP_FNS_CALC_TOKEN. At least one of inn/fio required.
Returns: {matches[], query, disclaimer} or validation/error.
| Name | Required | Description | Default |
|---|---|---|---|
| fio | No | ФИО для поиска (если нет ИНН). | |
| inn | No | ИНН для поиска в реестре дисквалифицированных. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description fully discloses behavioral traits: read-only operation, HTTPS side effect, required token (MCP_FNS_CALC_TOKEN), and input constraints (at least one of inn/fio required). It also notes the indicative nature of results.
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 with 5 sentences, each serving a distinct purpose (overall purpose, when to use, when not to use, side effects, returns). No redundant information, and front-loaded with the core action.
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?
Given the tool's low complexity (2 parameters, output schema exists), the description covers all necessary aspects: purpose, usage guidelines, behavioral constraints, parameter requirements, and return format. It is fully sufficient for an agent to select and invoke the tool 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 coverage is 100%, so baseline is 3. The description adds value by clarifying that at least one of inn or fio is required (schema marks both as optional) and explains the purpose of each parameter, elevating the score.
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 the tool's purpose: 'Match against FNS disqualified persons register by INN or FIO.' It specifies the resource (disqualified persons register) and the action (match), and distinguishes it from sibling tools that handle different checks or calculations.
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 explicitly provides when-to-use ('compliance screen before appointing director/signatory') and when-not-to-use ('sole evidence for legal decisions — result is indicative, verify manually'), along with the required input conditions ('provide inn or fio'). This is exemplary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_ip_statusA
IP registration status, OKVED and EGRIP dates by 12-digit INN. Requires Pro API key.
When to use: confirm counterparty is active IP before contract/payment. When NOT to use: full EGRUL extract — use mcp-egrul; offline mode unavailable. Side effects: read-only HTTPS; needs MCP_FNS_CALC_TOKEN.
Returns: {status, inn, okved, registration_date, ... disclaimer} or error.
| Name | Required | Description | Default |
|---|---|---|---|
| inn | Yes | ИНН ИП (12 цифр). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden of behavioral disclosure. It states the operation is read-only HTTPS, requires MCP_FNS_CALC_TOKEN, and lists side effects. This is comprehensive for a simple lookup tool.
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 (6 lines) and well-structured with clear sections: purpose, when to use, when not to use, side effects, and return value. Every sentence adds value, and there is no 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?
Given the tool has only one parameter and the description mentions the output schema (status, inn, okved, etc.) and error conditions, it is complete. No critical information is missing for an agent to decide when and how to use this tool.
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 input schema already provides a description of the 'inn' parameter (12-digit INN for individual entrepreneur). The description briefly reiterates the 12-digit requirement but does not add meaningful new semantics beyond what the schema provides. Schema coverage is 100%, so baseline 3 is appropriate.
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 the tool's purpose: checking IP registration status, OKVED, and EGRIP dates using a 12-digit INN. It distinguishes from siblings by explicitly noting that for full EGRUL extract one should use mcp-egrul (though not listed, it provides differentiation).
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 includes explicit 'When to use' (confirm counterparty is active IP before contract/payment) and 'When NOT to use' (full EGRUL extract, offline mode unavailable). It also provides an alternative tool (mcp-egrul) and mentions prerequisites (Pro API key).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_selfemployedA
Check self-employed (NPD/НПД) status by taxpayer INN via FNS open data. Requires Pro API key.
When to use: before paying a sole proprietor as individual — mandatory NPD verification. When NOT to use: offline what-if math — use calculators; without token returns missing_token error. Side effects: read-only HTTPS to hosted backend; no local data mutation. Needs MCP_FNS_CALC_TOKEN.
Returns: {is_selfemployed, inn, checked_at, source, disclaimer} or error/missing_token.
| Name | Required | Description | Default |
|---|---|---|---|
| inn | Yes | ИНН физлица (10 или 12 цифр). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description fully compensates by declaring read-only side effects, no local mutation, token requirement, and error case for missing token.
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?
Concise and well-structured: main action first, then usage guidelines, side effects, and return format. No redundant sentences.
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?
Covers all essential aspects: purpose, usage cues, side effects, parameter, and return structure. Output schema is referenced, fulfilling completeness for a simple read-only tool.
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 coverage is 100% with description 'ИНН физлица (10 или 12 цифр).' Description adds no extra semantics beyond 'taxpayer INN', which is not significant.
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?
Describes specific verb ('Check') and resource ('self-employed status by INN'), clearly distinguishing from sibling calculators and other check tools.
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?
Explicitly states when to use (mandatory verification before payment) and when not to use (offline calculations, missing token), and directs to alternatives like calculators.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_tax_arrearsA
Tax arrears / debt flags from FNS Transparent Business open data. Requires Pro API key.
When to use: counterparty due diligence alongside mcp-fns-check; 10–12 digit INN. When NOT to use: official debt certificate — request from FNS; offline unavailable. Side effects: read-only HTTPS; needs MCP_FNS_CALC_TOKEN.
Returns: {has_arrears, inn, amounts[], disclaimer} or error.
| Name | Required | Description | Default |
|---|---|---|---|
| inn | Yes | ИНН организации/ИП. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description covers behavioral aspects: read-only HTTPS, requires Pro API key and token, returns structure. It lacks details on error handling or rate limits but is sufficiently transparent.
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 with three short paragraphs: purpose, usage guidelines, and return format. Every sentence adds value with no 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?
Given the simple tool (1 required parameter, no nested objects, output described), the description covers purpose, usage, requirements, and output adequately. Could mention error handling or data freshness but is largely complete.
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 coverage is 100% with schema description for 'inn'. The description adds usage context (10–12 digit INN, counterparty due diligence) beyond the schema's 'ИНН организации/ИП.', enhancing the parameter semantics.
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 the tool checks tax arrears/debt flags from a specific data source, with a specific resource (INN). However, it does not explicitly differentiate from sibling check tools like check_account_block, though the domain (tax arrears) is distinct.
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?
Explicitly provides when-to-use (counterparty due diligence with specific INN length) and when-not-to-use (official certificate, offline), including an alternative. This fully meets the dimension criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ratesA
Tax rates and limits: offline snapshot (default) or live hosted pull (fresh=true, Pro key).
When to use
Before calc_penalty: pass fresh CBR key_rate or read cbr_key_rate_default from snapshot.
Before calc_usn/calc_insurance_ip: verify USN income limits and IP contribution fixed amounts.
kinds filter narrows response: cbr_key_rate | ip_fixed_contrib | usn_limits | ndfl_scale | deflator.
When NOT to use
Legal interpretation of limits — snapshot may lag; use fresh=true for production DD.
Parameters
fresh: false (default) = bundled snapshot, no network; true = hosted API (MCP_FNS_CALC_TOKEN).
kinds: optional list to subset tables.
Returns: rate tables, snapshot_date (offline) or live payload + disclaimer.
Limitations: fresh=true requires Pro token; snapshot date fixed at package build time.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | true — тянуть свежие ставки с hosted (нужен ключ Pro); false — офлайн-снапшот. | |
| kinds | No | Фильтр: cbr_key_rate | ip_fixed_contrib | usn_limits | ndfl_scale | deflator. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description fully discloses behavior: offline vs live, snapshot date fixed, and that fresh=true requires a Pro token. No contradictions.
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 well-structured with clear headings, uses bullet points for readability, and contains no unnecessary words. Each section efficiently conveys important 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?
Given the presence of an output schema, the description adequately summarizes return values. It covers all necessary aspects: what the tool does, when to use, parameters, returns, and limitations, ensuring the agent can determine correct invocation.
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?
Both parameters have schema descriptions (100% coverage), but the description adds English usage context, default behavior, and practical implications, enhancing understanding beyond the schema.
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 the tool retrieves tax rates and limits, with two modes (offline snapshot or live hosted pull). It distinguishes itself from sibling calculators like calc_penalty or calc_usn by being the data provider.
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 explicitly advises when to use the tool (before calculations) and when not to (legal interpretation). It also explains the difference between snapshot and fresh=true, guiding selection based on context.
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. Dates show when Glama detected each change.
1 tool update
v0.1.4- Changed
calc_penalty4 fields changed- changed
Input schema / properties / amount / descriptionBefore"Сумма недоимки."
After"Сумма недоимки (руб.), на которую начисляются пени."
- changed
Input schema / properties / days / descriptionBefore"Дней просрочки."
After"Число календарных дней просрочки с даты, когда платёж должен был быть уплачен."
- changed
Input schema / properties / key_rate / descriptionBefore"Ключевая ставка ЦБ РФ, % годовых (если не задана — снапшот)."
After"Ключевая ставка ЦБ РФ, % годовых. Если не задана — берётся из встроенного снапшота (см. snapshot_date в ответе)."
- changed
Input schema / properties / payer / descriptionBefore"org (1/300 до 30 дн, далее 1/150); ip/individual (1/300)."
After"Тип плательщика: org (организация), ip (ИП), individual (физлицо, не ИП)."
12 tool updates
v0.1.0- First observed
calc_insurance_ip - First observed
calc_ndfl - First observed
calc_patent - First observed
calc_penalty - First observed
calc_usn - First observed
calc_vat - First observed
check_account_block - First observed
check_disqualified - First observed
check_ip_status - First observed
check_selfemployed - First observed
check_tax_arrears - First observed
get_rates
TDQS
Each tool targets a distinct tax or compliance function, with calculators (calc_*) clearly separated from checks (check_*) and rates (get_rates). There is no overlap in purpose.
All tools follow a consistent verb_noun pattern using underscores: calc_* for calculations, check_* for verifications, and get_rates for rates. No mixing of styles.
With 12 tools covering tax calculations, compliance checks, and rate retrieval, the count is well-scoped for the server's stated purpose—neither too few nor too many.
The tool set covers key Russian tax calculations (IP, NDFL, patent, penalty, USN, VAT) and essential checks (account block, disqualified persons, IP status, self-employed, tax arrears). Obvious gaps like corporate income tax or full EGRUL are implied to be handled by other servers, keeping this surface focused and complete.
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
Hosted MCP server for Mini Accountant: invoices, expenses, customers, analytics, tax estimates.
MCP server: 447 pay-as-you-go research tools (SEO, ads, SERP) + verified prowl_analyze reports
TaxSort — Tollbooth-monetized MCP server for personal tax transaction classification
Hosted MCP server for real-world data: business registries, sanctions, companies, domains, crypto.
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
- AlicenseAqualityBmaintenanceMCP server for verifying Russian counterparties (legal entities and individual entrepreneurs) via public Federal Tax Service data: EGRUL/EGRIP, bankruptcy registry (EFRSB), Transparent Business, bailiff service (FSSP), and arbitration courts (KAD).815MIT
- 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
- FlicenseNot gradedqualityBmaintenanceA public, no-auth remote MCP server that exposes Arc & Ledger's free tax calculators and intake funnel as tools inside AI assistants. Provides tools for IRS notice explanation, FBAR/FATCA, LLC vs S-Corp comparison, quarterly tax estimates, and more.-
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-calc'
If you have feedback or need assistance with the MCP directory API, please join our Discord server