Skip to main content
Glama

Zovo Tally Import

Make Tally vouchers from transactions

generate_tally_vouchers
Read-only

Use this when the user wants bank statement to Tally XML from rows they pasted, typed or showed in a statement photo or table: "bank statement to tally entry", "tally xml format for bank statement". First convert what the user gave into transaction objects (date, narration, withdrawal or deposit, balance, optional ledger); pass raw pasted text in text only if you cannot. Returns Payment, Receipt and Contra vouchers against the bank ledger, keyword ledger rules with a suspense fallback, a balance check to the paisa, the vouchers XML, a ledgers XML and an Excel review sheet. Do not use when a statement file is attached (use convert_statement_to_tally); does not post into Tally or file GST.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "generate_tally_vouchers"
  }
}

Input Schema

NameRequiredDescriptionDefault
textNoFallback only: pasted statement text or CSV when you cannot build the objects, e.g. "02/04/2026 NEFT ACME 25,000.00 Cr 1,45,000.00".
companyNoOptional Tally company name, e.g. Sharma Traders 2026-27. Leave empty to import into the company open in Tally.
date_orderNoOrder of numeric dates: DMY (default, 02/04/2026 = 2 April) or MDY. Detected from the file when a day is above 12.
auto_contraNoBook ATM withdrawals and cash deposits as Contra vouchers against the cash ledger. Default true.
bank_ledgerNoYour bank ledger name exactly as in Tally, e.g. HDFC Bank A/c. Default: Bank Account.
cash_ledgerNoCash ledger for ATM withdrawals and cash deposits (booked as Contra), e.g. Cash. Default: Cash.
ledger_rulesNoNarration keyword to ledger rules, first match wins, e.g. [{"match":"SALARY","ledger":"Salary Payable"},{"match":"GST","ledger":"GST Payable"}] or text "SALARY=Salary Payable; RENT=Rent". Rows that match no rule go to the suspense ledger.
transactionsNoThe bank rows as objects in statement order, e.g. [{"date":"02/04/2026","narration":"NEFT-ACME TRADERS","deposit":"25,000.00"},{"date":"03/04/2026","narration":"ATM WDL MG ROAD","withdrawal":5000}]. Pasted statement text is also accepted.
statement_yearNoYear for dates printed without one, e.g. 2026, or a financial year like "FY 2026-27" (April to December 2026, January to March 2027).
closing_balanceNoClosing balance if the file has none, e.g. 98450.00. With the opening balance it proves no row is missing.
opening_balanceNoOpening balance if the file has none, e.g. 125000.50 or "1,25,000.50 Cr". Used to check the total.
suspense_ledgerNoLedger for rows that match no rule, e.g. Suspense. Default: Suspense.
bank_ledger_groupNoGroup of the bank ledger in the ledgers file: Bank Accounts (default) or Bank OD A/c.
voucher_type_namesNoOnly if you renamed voucher types in Tally, e.g. {"payment":"Bank Payment","receipt":"Bank Receipt"}. Defaults: Payment, Receipt, Contra.

Output Schema

NameRequiredDescriptionDefault
sourceYes
totalsYes
ledgersYes
previewYes
vouchersYes
warningsYes
downloadsYes
xml_checkYes
bank_ledgerYes
import_stepsYes
not_importedYes
unread_linesYes
ledgers_countNo
preview_countNo
reconciliationYes
suspense_countYes
financial_yearsYes
not_imported_countYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered; the description usefully reinforces this by stating it does not post into Tally or file GST. It also discloses processing rules (keyword ledger matching, suspense fallback, paisa-level balance check) and the artifacts produced. It stops short of things like size limits or failure modes when the balance check fails, so it adds context but not full behavioral depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the use case and trigger utterances, then inputs, then outputs, then exclusions – a sensible order. It is a single dense paragraph and the output enumeration (vouchers XML, ledgers XML, Excel sheet) is somewhat listy, but nearly every clause carries decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter generator with an output schema, it covers the entry path, the fallback path, ledger mapping behavior, and the exclusion boundary. Minor gaps remain around limits and error handling, but nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description goes further by establishing the precedence between the `transactions` objects and the `text` fallback and by noting the per-row optional `ledger` override. It does not explain the interaction of opening/closing balance beyond 'used to check the total', but adds real routing meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('bank statement to Tally XML', generates Payment/Receipt/Contra vouchers) and explicitly distinguishes itself from convert_statement_to_tally for attached files. An agent can tell the two siblings apart without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit trigger phrases, a when-not-to-use rule ('Do not use when a statement file is attached (use convert_statement_to_tally)'), and a precedence rule for inputs ('First convert ... pass raw pasted text in text only if you cannot'). Both the alternative tool and the condition selecting it are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources