@theyahia/atol-online-mcp
Click on "Deploy 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., "@@theyahia/atol-online-mcpCreate a sell receipt for 1x Coffee at 350 rub paid electronically"
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.
@theyahia/atol-online-mcp
MCP server for ATOL Online fiscal receipt API -- 54-FZ compliant receipt generation, refunds, corrections, and status checks for Russian online cash registers.
Tools
Tool | Description |
| Get authentication token |
| Create a sell receipt (fiscal check) |
| Create a sell refund receipt |
| Create a correction receipt |
| Get receipt status/report by UUID |
| Create a buy receipt |
| Create a buy refund receipt |
| Check current token status |
Related MCP server: @theyahia/tkassa-mcp
Install
Claude Desktop / Cline / Cursor
{
"mcpServers": {
"atol-online": {
"command": "npx",
"args": ["-y", "@theyahia/atol-online-mcp"],
"env": {
"ATOL_LOGIN": "<YOUR_LOGIN>",
"ATOL_PASSWORD": "<YOUR_PASSWORD>",
"ATOL_GROUP_CODE": "<YOUR_GROUP_CODE>",
"ATOL_COMPANY_INN": "<YOUR_INN>",
"ATOL_PAYMENT_ADDRESS": "<YOUR_PAYMENT_URL>"
}
}
}
}Environment Variables
Variable | Required | Description |
| Yes | ATOL Online login |
| Yes | ATOL Online password |
| Yes | KKT group code |
| No | Company INN for receipts |
| No | Payment address / URL |
Demo Prompts
"Create a sell receipt for 1x Coffee at 350 rub paid electronically"
"Refund the last receipt for item 'Subscription' at 990 rub"
"Check receipt status for UUID abc-123-def"
"Create a correction receipt for a missed cash sale of 500 rub"
"Generate a buy receipt for purchasing supplies at 15000 rub"
"What's the current token status?"
API Reference
Base URL: https://online.atol.ru/possystem/v5/
Docs: https://online.atol.ru/possystem/v5/
License
MIT
Available Tools
8 toolscreate_buy_receiptB
Create a buy receipt (purchase from individual).
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Purchase items | |
| payments | Yes | Payments | |
| external_id | Yes | Unique external receipt ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for disclosing behavior. It only states it creates a buy receipt and gives no indication of side effects, permissions, return values, or idempotency. This is a significant gap for a mutation 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 a single, clear sentence with no wasted words. It front-loads the primary action and resource, and the parenthetical clarifies scope 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 tool with a complex nested schema (items, payments) and no output schema or annotations, the description is under-specified. It does not explain what happens on success, whether an ID is returned, or any special constraints, leaving the agent to infer behavior entirely from the parameter schema.
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 documents all three parameters (external_id, items, payments) with descriptions, and schema coverage is 100%. The description adds no parameter-level detail, so the baseline score of 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 uses a specific verb ('Create') and resource ('buy receipt'), and adds the qualifier '(purchase from individual)' which clearly distinguishes it from its sibling `create_sell_receipt`. This makes the tool's purpose unambiguous.
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 provided about when to use this tool versus alternatives. It does not mention scenarios, exclusions, or relationships to sibling tools like `create_buy_refund` or `create_sell_receipt`. The context of 'buy' vs 'sell' is implicit but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_buy_refundB
Create a buy refund receipt.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Refund items | |
| payments | Yes | Refund payments | |
| external_id | Yes | Unique external receipt ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it only discloses that the tool creates something. It does not mention side effects, idempotency, required authentication, or validation behavior. This is minimal for a mutating operation.
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 a single, clear sentence with the verb front-loaded. There is no redundant or vague wording.
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?
Although the schema is rich, the description lacks broader context such as refund semantics, relationship to a prior receipt, external_id uniqueness expectations, or any usage guidance. This makes it incomplete for a non-trivial refund creation operation.
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 has 100% description coverage, so the baseline is 3. The description adds no parameter-level detail, but the schema already explains parameters like external_id, items, and payments sufficiently.
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 'Create a buy refund receipt' has a specific verb ('Create') and resource ('buy refund receipt'), clearly distinguishing it from siblings like create_sell_refund and create_buy_receipt. The resource scope is precise.
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 provided on when to use this tool versus alternatives such as create_sell_refund or create_correction. The description only states what it does, not when to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_correctionC
Create a correction receipt (self or by FNS instruction).
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Correction type: self-correction or by FNS instruction | |
| items | Yes | Correction items | |
| payments | Yes | Correction payments |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of behavioral disclosure. It only restates the purpose and offers no information about side effects, requirements, or return values.
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?
One sentence, no filler, front-loaded with the action and resource. It is appropriately concise and well-structured.
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 has a moderately complex schema and no output schema or annotations. The description is too terse to provide an agent with enough context to correctly select this tool among the receipt-related siblings, nor does it clarify the correction workflow.
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 covers 100% of parameters with descriptions, so the baseline is 3. The description's mention of 'self or by FNS instruction' mirrors the type parameter description and adds little 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 uses a specific verb 'Create' and identifies the resource as a 'correction receipt', clearly distinguishing it from sibling tools like create_sell_receipt and create_buy_receipt. It also notes the two subtypes (self or by FNS instruction), which adds clarity.
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 on when to use this tool vs its siblings. It doesn't state that corrections are for fixing prior receipts or provide any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sell_receiptB
Create a sell receipt (fiscal check) for 54-FZ compliance.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Receipt items | |
| client | Yes | Client contact for receipt delivery | |
| payments | Yes | Payments | |
| external_id | Yes | Unique external receipt ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It only says 'Create a sell receipt', which implies a write operation, but it does not disclose side effects such as fiscal data transmission, receipt delivery to the client, or potential irreversibility. This is a significant gap for a mutation tool that creates fiscal documents.
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 a single, concise sentence that front-loads the action and object. It contains no unnecessary words and is easily scannable, achieving maximum efficiency.
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 the rich schema, the description is too minimal for a tool that creates fiscal documents. It omits when to use the tool vs alternatives, what the fiscal implications are, and what the expected outcome or response is. The sole mention of '54-FZ compliance' provides some domain context, but not enough for an agent to confidently invoke this tool in varied scenarios.
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 has 100% description coverage, with every property and nested field clearly described (e.g., external_id as 'Unique external receipt ID', payments with type mapping). The description adds no parameter-specific information, but the schema already fully documents parameters, so a baseline score of 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 action ('Create') and the specific resource ('sell receipt'), and distinguishes it from sibling tools like create_buy_receipt by the word 'sell'. It also adds relevant regulatory context ('for 54-FZ compliance'), making the purpose unambiguous.
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?
Usage is implied by the name and the contrast with sibling tools (e.g., create_sell_refund, create_buy_receipt), but the description does not explicitly state when to use this tool versus alternatives. It lacks any 'use this when selling' or 'use refund instead for returns' guidance, so the agent must infer the context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sell_refundC
Create a sell refund receipt.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Refund items | |
| payments | Yes | Refund payments | |
| external_id | Yes | Unique external receipt ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It says only 'Create a sell refund receipt' and offers no information about side effects, persistence, authorization requirements, idempotency, or return behavior, which is particularly important for a mutation 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 a single, clear sentence with no unnecessary words. It is front-loaded and efficient, though very terse.
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 three required parameters, nested objects, and no output schema or annotations, the description is too minimal. It lacks behavioral context, return value expectations, or any caveats, making it incomplete for an agent to use correctly without inferring from the schema alone.
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%, so the schema already documents all parameters (external_id, items, payments) with descriptions. The description adds no parameter-specific meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a sell refund receipt.' clearly states the specific verb (create) and resource (sell refund receipt). It distinguishes from siblings like create_buy_refund and create_sell_receipt by specifying 'sell refund'.
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 provided about when to use this tool versus alternatives. The description does not mention exclusions, prerequisites, or related tools such as create_buy_refund for purchase refunds.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reportA
Get receipt processing status/report by UUID.
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Receipt UUID returned by create operations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description is minimal. It indicates a read operation ('Get') but does not disclose potential errors, return format, or polling behavior. Basic transparency but limited additional context.
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 a single, front-loaded sentence that directly communicates the tool's purpose with no unnecessary 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?
For a simple one-parameter read tool with no output schema, the description plus schema are adequate for selection and invocation. It could benefit from mentioning what the report contains or how to interpret statuses, but it is not critically incomplete.
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 fully describes the single parameter 'uuid' with useful context ('Receipt UUID returned by create operations'). The tool description adds no further parameter detail, so the schema carries the burden.
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 action (get) and resource (receipt processing status/report) with the key identifier (UUID). It is distinct from sibling tools, which are create operations or token-related.
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 schema clarifies that the UUID comes from create operations, implying use after receipt creation. However, the description itself does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tokenA
Get ATOL Online authentication token.
| Name | Required | Description | Default |
|---|---|---|---|
| login | Yes | ATOL Online login | |
| password | Yes | ATOL Online password |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only states the action (get token) with no details about side effects, token expiration, security implications, or whether the operation requires prior setup. The description is not misleading but is highly minimal.
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 a single, concise sentence that immediately communicates the tool's purpose. It is front-loaded and contains no filler or redundant information, making it highly efficient.
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 simple, and the schema covers all parameters, but there is no output schema or description of the return value. The description does not explain what the token looks like, its validity period, or how it relates to other tools like get_token_info. This leaves some gaps, but the core function is adequately conveyed.
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 fully describes both parameters ('ATOL Online login' and 'ATOL Online password') with 100% coverage. The description does not add any additional meaning beyond what the schema provides, so the baseline score of 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 'Get ATOL Online authentication token' uses a specific verb ('Get') and a clear resource ('ATOL Online authentication token'). It is distinct from sibling tools like get_token_info, which suggests retrieving information about a token, not the token itself.
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 implies usage when an authentication token is needed, but it does not explicitly state when to use this tool versus alternatives like get_token_info. There is no mention of prerequisites or exclusions, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_token_infoB
Check current token status and expiry.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It implies a safe read-only operation via 'check', but does not describe the return format, potential error states, rate limits, or any side effects, which is insufficient for a tool without structured metadata.
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 a single concise sentence with no filler. It front-loads the action ('Check') and the object ('current token status and expiry'), making it immediately scannable and free of 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 zero-parameter tool with no output schema, the description gives only a minimal sense of purpose. It fails to explain what 'current token status' encompasses or what the response will look like, leaving the agent uncertain about the tool's full behavior and output.
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 tool has zero parameters, so the schema is empty. The description adds no parameter information, but the baseline for 0-param tools is 4, and nothing here detracts from that baseline.
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 the verb 'check' and specifies the resource as 'token status and expiry', which clearly indicates a read-only information query. It distinguishes from sibling 'get_token' by focusing on status/expiry rather than token retrieval, though the referent of 'token' remains somewhat ambiguous.
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 provided on when to use this tool versus alternatives like 'get_token' or the create/report siblings. There is no mention of prerequisites, scenarios, or exclusions, leaving the agent without contextual selection cues.
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.
8 tool updates
v1.0.1- First observed
create_buy_receipt - First observed
create_buy_refund - First observed
create_correction - First observed
create_sell_receipt - First observed
create_sell_refund - First observed
get_report - First observed
get_token - First observed
get_token_info
TDQS
Scored across 8 tools
Each tool has a clear, distinct purpose: token management (get_token, get_token_info), receipt creation for each fiscal operation type (sell, sell_refund, buy, buy_refund, correction), and report retrieval. No overlapping functionality.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_token, create_sell_receipt). The use of 'get' for retrieval and 'create' for creation is consistent and predictable.
With 8 tools, the server is well-scoped for the ATOL Online fiscal receipt domain. Each tool covers an essential operation without unnecessary redundancy or bloat.
The tool set covers the full lifecycle of fiscal receipt management: authentication (token retrieval and info), all receipt types (sell, buy, refunds, correction), and status checking via report. No obvious gaps for typical 54-FZ operations.
Maintenance
Related MCP Connectors
Brazilian fiscal MCP server - issue NF-e, NFC-e, NFS-e, CT-e, MDF-e and DC-e via SEFAZ.
A paid remote MCP for hosted MCP server, built to return verdicts, receipts, usage logs, and audit-r
MCP server for Quaderno — tax-rate calculation, invoices, contacts, products, receipts & expenses.
A paid remote MCP for AI SDK MCP gateway registry, built to return verdicts, receipts, usage logs, a
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceMCP server for Altegio API — appointments, clients, services, staff schedules1-
- AlicenseNot gradedqualityFmaintenanceMCP server for T-Kassa (T-Bank/Tinkoff) payment API. Provides 16 tools for payments, refunds, recurring charges, customer management, saved cards, SBP, receipts, and T-Invest portfolio.35MIT
- AlicenseAqualityAmaintenanceMCP server for YooKassa API enabling payments, refunds, receipts, payouts, webhooks, and more via 20 tools.20524MIT
- AlicenseAqualityDmaintenanceMCP server for Factura.uz electronic invoicing system (Uzbekistan). Supports creating, signing, accepting, and rejecting e-invoices, plus company and product lookups.87MIT