MCP server for the real Tochka Bank business API (Russia) — accounts, balances, statements, payments, customers.
Strong tool naming (all verb-first), comprehensive parameter descriptions, and clear destructive/read-only risk annotations. Output schemas are documented in descriptions. However, input schemas lack formal JSON Schema type definitions in the visible code, parameters are described textually but not registered with explicit type/required/enum constraints. Error handling is present but generic. Composition is clean (7 focused tools, no 'and' operations). Missing: formal schema validation, enum constraints for known-value params (e.g., balance types, payment statuses), and structured error recovery guidance.
Create an outgoing RUB payment in Tochka Bank via the 'for-sign' flow. IMPORTANT: amount is in RUBLES (decimal, e.g. 75000.50) — NOT kopeks. The payment is created but NOT sent: a human must sign it in Tochka internet-bank (SMS). Returns a dry-run preview unless confirm:true is set.
Get the balances of a Tochka Bank account by its accountId. Returns multiple rows (one per balance type: OpeningAvailable, ClosingAvailable, Expected, OverdraftAvailable); each value is under Amount.amount.
Get your company details (name, INN, KPP, OGRN, etc.) for a customer code. If customer_code is omitted and you have exactly one customer, it is selected automatically.
Check the status of a payment by its requestId (returned by create_payment). Statuses include WaitingForSign, Allowed, Created, Paid, Rejected, Canceled.
Get an account statement (transactions) for a date range. The Tochka statement API is asynchronous: this tool creates the request and polls until it is Ready. If it is not ready within the timeout, it returns the statementId and a 'pending' status so you can retry later.
Input schemas lack formal JSON Schema type definitions. Parameters are described textually (e.g., 'account_id: string') but not registered with explicit type, required, enum, or pattern constraints in the tool config. This forces LLMs to infer types from descriptions alone, increasing hallucination risk.
Payment status enum values (WaitingForSign, Allowed, Created, Paid, Rejected, Canceled) are documented in the description but not exposed as an enum constraint. LLMs cannot validate status values before calling get_payment_status.
create_payment has 10 parameters, 2 of which are optional (to_inn, payment_date). No mutual exclusivity or dependency documentation. The 'confirm' and 'dry_run' flags lack clear guidance on interaction (e.g., does dry_run override confirm?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2025-06-18+ | v2 |
List all business accounts in Tochka Bank (account IDs, currencies, types, statuses).
List your Tochka customer codes (the legal entities available to this token).
Error handling is present (errorReporting=true) but responses lack recovery guidance. No examples of 'retryable' vs 'user-fixable' vs 'fatal' error classification. Agents cannot determine next steps on failure.
Output schemas are documented in descriptions but not formally defined. No structured response examples or field-level type info visible in tool registration. LLMs must parse descriptions to understand response structure.