Skip to main content
Glama
visheshStallion

tally-mcp-server

Tally MCP Server

A Model Context Protocol server that exposes Tally (TallyPrime / Tally.ERP 9) accounting data and operations as tools for LLM clients such as Claude Desktop, Claude Code, or any other MCP-compatible client.

It talks to Tally over its built-in HTTP/XML gateway — the same interface used by ODBC connectors and third-party integrations — so no plugin needs to be installed inside Tally itself.

Prerequisites

  1. Tally (TallyPrime or Tally.ERP 9) running locally or on a reachable host.

  2. The Tally XML/HTTP gateway enabled:

    • In Tally, go to Gateway of Tally > F1 (Help) > Settings > Connectivity.

    • Ensure "Client/Server configuration" is set up and the port (default 9000) is open. Tally must have a company loaded for most tools to return data.

  3. Node.js 18+.

Related MCP server: Tally Prime MCP Server

Install & build

npm install
npm run build

Configuration

The server reads its Tally connection settings from environment variables:

Variable

Default

Description

TALLY_URL

http://localhost:9000

Base URL of the Tally HTTP/XML gateway.

TALLY_COMPANY

(active company)

Company name to scope requests to (optional).

Running

npm start

This starts the server on stdio, ready to be attached to an MCP client.

Claude Desktop / Claude Code configuration

Add to your MCP client's server config (e.g. claude_desktop_config.json):

{
  "mcpServers": {
    "tally": {
      "command": "node",
      "args": ["/absolute/path/to/tally-mcp-server/dist/index.js"],
      "env": {
        "TALLY_URL": "http://localhost:9000",
        "TALLY_COMPANY": "My Company Name"
      }
    }
  }
}

Available tools

Tool

Description

list_companies

List companies currently open in Tally.

list_ledgers

List all ledger accounts with balances.

get_ledger

Get a single ledger's details/balance by name.

list_groups

List ledger groups (chart-of-accounts hierarchy).

list_stock_items

List inventory items with closing stock and value.

get_stock_item

Get a single stock item's details by name.

list_vouchers

List transaction vouchers within a date range, optionally by type.

create_voucher

Create a new voucher (Payment, Receipt, Journal, Sales, Purchase, ...).

get_balance_sheet

Fetch the Balance Sheet as of a date.

get_profit_and_loss

Fetch the Profit & Loss statement over a date range.

get_trial_balance

Fetch the Trial Balance as of a date.

get_day_book

Fetch the Day Book over a date range.

Development

npm run dev     # run directly with tsx, no build step
npm run watch   # incremental tsc build

Notes & limitations

  • Tally's XML gateway must be reachable from wherever this server runs; if Tally is on another machine, expose the configured port on your network and point TALLY_URL at it.

  • Only one company can be actively targeted per server instance (TALLY_COMPANY); to work with another company, restart with a different value or omit it to use whatever company is currently open in Tally.

  • create_voucher requires ledger entries to balance (debits == credits); the server checks this client-side before submitting, but Tally performs its own validation as well (e.g. required masters must already exist).

Available Tools

12 tools
create_voucherA

Create a new accounting voucher (e.g. Payment, Receipt, Journal, Contra, Sales, Purchase) in the active Tally company. Provide the full set of ledger entries; debits and credits must balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesVoucher date as YYYY-MM-DD or YYYYMMDD.
entriesYesLedger entries for the voucher. Sum of debit amounts must equal sum of credit amounts.
narrationNoOptional narration/description for the voucher.
voucherTypeYesTally voucher type name, e.g. "Payment", "Receipt", "Journal", "Contra", "Sales", "Purchase".
voucherNumberNoOptional voucher number; Tally auto-numbers if omitted.
partyLedgerNameNoOptional party ledger name, relevant for Sales/Purchase vouchers.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses an important behavioral requirement: the voucher must contain the full set of ledger entries and debits must equal credits, and it references the active company context. However, it does not describe what happens on failure, whether the operation is reversible, permission requirements, or what response the caller should expect after creation.

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

Conciseness5/5

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

Two concise sentences deliver the core purpose, scope, and key constraint without repetition or filler. The most decision-relevant details are front-loaded: what is created, where, and what input condition must hold.

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 create-oriented tool with a fully documented schema, the description covers the essential operational context: active company, voucher types, complete entries, and the balancing rule. The main gaps are the absence of return-value behavior and failure semantics, but these are minor given the schema already defines all inputs and there is no output schema to reconcile.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all six parameters clearly, including voucherType examples, date formats, the meaning of isDebit, and the entries requirement. The description adds only the general balance constraint and active-company context, which does not materially exceed what the schema already conveys.

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?

The description uses a specific verb ('Create') with a clear resource ('accounting voucher') and gives concrete examples (Payment, Receipt, Journal, Contra, Sales, Purchase). It also scopes the action to the active Tally company, making it unmistakably distinct from the read-only sibling tools like list_vouchers and get_ledger.

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

Usage Guidelines4/5

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

The description makes clear this is the tool for creating vouchers in the active Tally company, and the balance/full-entry requirement signals when the input is valid. It does not explicitly name alternative tools for reading or listing vouchers, but since all siblings are read-only and there are no other creation tools, the usage context is effectively clear.

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

get_balance_sheetB

Fetch the Balance Sheet report for the active company as of a given date.

ParametersJSON Schema
NameRequiredDescriptionDefault
asOfDateNoReporting date as YYYY-MM-DD or YYYYMMDD. Defaults to Tally's current period.

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. 'Fetch' and 'report' imply a read-only operation, and 'active company' plus 'as of a given date' provide useful scoping. However, it does not disclose auth requirements, error behavior, or whether some report sections are excluded.

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

Conciseness5/5

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

A single, front-loaded sentence with no filler. Every phrase adds relevant information: the action, the resource, the scope, and the reporting date.

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

Completeness3/5

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

Adequate for a simple one-parameter report fetch, but with no annotations and no output schema, the description could clarify the read-only nature or briefly mention that the date defaults to the current period. The sibling report tools are close enough that a small usage hint would improve completeness.

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

Parameters3/5

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

Schema description coverage is 100%, with asOfDate fully documented including its default. The description only paraphrases the date concept and adds no new constraints, aliases, or formatting details beyond the schema.

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

Purpose4/5

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

The description states a specific verb ('Fetch') and a specific resource ('Balance Sheet report'), and adds scope ('active company', 'as of a given date'). It is clearly distinguishable from siblings by report type, though it does not explicitly name or differentiate from get_profit_and_loss or get_trial_balance.

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

Usage Guidelines2/5

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

No guidance is given on when to choose this tool over related report tools like get_trial_balance or get_profit_and_loss. There are no exclusions, preconditions, or alternative tool references, so the agent must infer usage solely from the report name.

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

get_day_bookA

Fetch the Day Book (chronological transaction listing) for the active company over a date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
toDateNoPeriod end as YYYY-MM-DD or YYYYMMDD. Defaults to Tally's current period.
fromDateNoPeriod start as YYYY-MM-DD or YYYYMMDD. Defaults to Tally's current period.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It indicates a read-only fetch, chronological ordering, and date-range scope, but it does not mention output format, pagination, or what happens if no active company is set. It is adequate but not deeply transparent.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It communicates the resource, its nature, scope, and range in a compact form.

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 simple read operation with two optional parameters fully documented in the schema, the description sufficiently identifies the resource, its chronological nature, and its scope. It lacks explicit alternative routing and behavioral caveats, but the tool is simple enough that these are not critical.

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

Parameters3/5

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

The input schema fully describes both parameters, including formats and default behavior. The description only restates 'date range' and adds no additional meaning beyond the schema, so the baseline of 3 applies.

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?

The description uses a specific verb ('Fetch') and names a clear resource ('Day Book'), with a parenthetical explaining it as a chronological transaction listing. This is distinct enough from siblings like get_ledger or list_vouchers that an agent can identify the intended purpose.

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

Usage Guidelines3/5

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

The description implies when to use the tool: when a chronological transaction listing for the active company over a date range is needed. However, it does not explicitly mention alternative tools, exclusions, or prerequisites such as ensuring an active company is selected.

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

get_ledgerA

Get details and current balance for a single ledger account by exact name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesExact ledger name as it appears in Tally.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavior. It correctly implies a read-only operation ('Get') and a current balance, but does not state what happens when the exact ledger name is not found, whether matching is case-sensitive, or what 'details' includes.

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

Conciseness5/5

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

One sentence communicates the action, object, return scope, and matching criterion with no filler. Every word contributes.

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 simple, single-parameter read tool, the description is largely complete: it states the input requirement and the returned information (details and current balance). However, without an output schema it leaves the exact composition of 'details' somewhat open.

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

Parameters3/5

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

Schema documentation coverage is 100%: the name parameter is described as 'Exact ledger name as it appears in Tally.' The tool description adds no new semantic information about the parameter beyond that, so baseline 3 applies.

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?

The description names a concrete verb ('Get'), a specific resource ('single ledger account'), and the key selector ('by exact name'), which clearly differentiates it from list_ledgers and other list tools. It is immediately obvious what the tool does.

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

Usage Guidelines4/5

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

The phrase 'by exact name' establishes the condition for using this tool: you already know the precise ledger name. It does not explicitly name alternatives or exclusions, but the prerequisite is clear enough to route an agent to list_ledgers when the name is unknown.

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

get_profit_and_lossA

Fetch the Profit and Loss statement for the active company over a date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
toDateNoPeriod end as YYYY-MM-DD or YYYYMMDD. Defaults to Tally's current period.
fromDateNoPeriod start as YYYY-MM-DD or YYYYMMDD. Defaults to Tally's current period.

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. The verb 'fetch' implies read-only behavior, and the scope is stated, but the description does not disclose return format, whether the report includes summary balances, or any other behavioral details.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. It communicates action, resource, and scope efficiently, and every word earns its place.

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

Completeness3/5

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

For a simple two-parameter read-only tool with fully documented params, the description is adequate but leaves gaps: no mention of what the response contains, and no reference to the 'active company' selection mechanism used by siblings like list_companies. With no output schema or annotations, a bit more context would improve completeness.

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

Parameters3/5

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

The input schema already documents both parameters (toDate/fromDate with formats and defaults) at 100% coverage. The description's 'over a date range' adds no meaning beyond what the schema provides, so the baseline of 3 applies.

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?

The description states a specific action ('Fetch'), a clear resource ('Profit and Loss statement'), and a scope ('active company over a date range'). This unambiguously distinguishes it from sibling tools like get_balance_sheet or get_trial_balance.

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

Usage Guidelines3/5

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

The description gives useful context (active company, date range) but no explicit when-to-use guidance or alternatives. It does not name siblings or describe exclusions, so the usage scenario is only implied by the financial report name.

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

get_stock_itemB

Get details for a single stock item by exact name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesExact stock item name as it appears in Tally.

TDQS

B3.3/5.0
Behavior2/5

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 only says 'Get details' without specifying what details are returned, how exact matching behaves, or what happens when the item is not found. This is a minimal transparency gap for a read tool.

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?

The description is a single clear sentence that front-loads the resource and scope. It is appropriately sized for a simple tool, with no redundant wording.

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

Completeness2/5

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

Given there is no output schema, the description's vague 'details' leaves the return shape uncertain, and it does not clarify error behavior or how this tool relates to list_stock_items. For a tool with minimal documentation, this leaves an agent guessing about the response.

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

Parameters3/5

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

The schema already documents the 'name' parameter well, and the description reinforces the 'exact' requirement. Since schema coverage is 100%, the description adds marginal semantic value beyond restating the existing parameter description.

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?

The description uses a specific verb ('Get') and resource ('single stock item') with an explicit scoping constraint ('by exact name'). This clearly distinguishes it from the sibling list_stock_items, which retrieves multiple items.

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

Usage Guidelines3/5

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

The 'by exact name' phrasing implies this tool is for looking up one known item, but it does not explicitly state when to prefer list_stock_items or what to do if the exact name is unknown. The guidance is present only implicitly.

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

get_trial_balanceA

Fetch the Trial Balance report for the active company as of a given date.

ParametersJSON Schema
NameRequiredDescriptionDefault
asOfDateNoReporting date as YYYY-MM-DD or YYYYMMDD. Defaults to Tally's current period.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the transparency burden. It does disclose the active-company scope and date-scoping behavior, and 'Fetch' signals read-only retrieval. However, it does not state absence of side effects, error behavior if no active company exists, or output format.

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

Conciseness5/5

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

A single sentence with no filler, leading with the action and packing the necessary constraints (active company, date) into a compact structure. Every word contributes.

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 low-complexity tool with one optional and well-documented parameter, the description supplies the essential context: active company and as-of date. It does not describe return-structure details, but 'Trial Balance report' is a standard report concept and no output schema exists to add more.

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

Parameters3/5

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

The only parameter, asOfDate, is fully documented in the schema with format and default behavior, giving 100% schema coverage. The description's 'as of a given date' merely echoes that semantic without adding new detail, so the baseline of 3 is appropriate.

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 action ('Fetch'), a specific resource ('the Trial Balance report'), and scope ('active company ... as of a given date'). The explicit report name distinguishes it from sibling report tools such as get_balance_sheet and get_profit_and_loss.

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

Usage Guidelines4/5

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

Provides clear usage context: this is the tool to call when the Trial Balance for the active company at a specific date is needed. It does not explicitly mention alternatives or exclusions, but the report type makes selection unambiguous.

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

list_companiesA

List the companies currently open/loaded in Tally.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the disclosure burden. It correctly signals a read-only enumeration and the 'currently open/loaded' constraint, but it does not mention return shape, behavior when no companies are open, or any errors that might occur.

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

Conciseness5/5

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

A single, front-loaded sentence with no filler. Every word contributes: the operation, the target, and the scope.

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 zero-parameter list operation, the description is essentially complete. It could be stronger by stating what fields each listed company contains or how the list is ordered, but the core usage is unambiguous.

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?

The tool takes zero parameters, so parameter documentation is not needed. The baseline of 4 applies; the empty schema correctly confirms no input is required.

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?

The description uses a specific verb ('List') and resource ('companies') and adds a precise scope qualifier ('currently open/loaded in Tally'). This clearly differentiates it from sibling tools that target ledgers, groups, stock items, and vouchers.

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

Usage Guidelines4/5

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

The description makes plain when to use the tool: whenever an agent needs to enumerate active companies in Tally. It doesn't explicitly name alternatives or exclusions, but the resource distinction from the sibling tools is clear.

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

list_groupsA

List all ledger groups (account classification hierarchy, e.g. Sundry Debtors, Current Assets) in the active company.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the transparency burden; the verb "List" clearly indicates a read-only operation, and "in the active company" discloses the implicit scope dependency. It does not describe error behavior when no active company exists or the exact structure of the returned hierarchy, but for a zero-parameter list tool this is a modest gap.

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

Conciseness5/5

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

One concise, front-loaded sentence clearly states the action, resource, semantic clarification, and scope. The parenthetical examples earn their place by resolving ambiguity with ledger categories, and there is no redundant or filler content.

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 zero-parameter listing tool, the description is largely complete: it names what is listed, what those things are, and the active-company context. The absence of an output schema means a note about the expected return shape would have been helpful, but the tool's simplicity and clear name keep this from being a major gap.

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?

The input schema has zero parameters, so there are no parameter semantics to document. Description scope like "in the active company" is contextual rather than parameter-related, and the baseline for zero-parameter tools applies.

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?

The description uses a specific verb and resource: "List all ledger groups" and further clarifies the domain with examples like Sundry Debtors and Current Assets. It is clearly distinguished from siblings like list_ledgers, which likely operate at a different level of the accounting hierarchy.

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

Usage Guidelines3/5

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

The description implies this is the tool for retrieving the account classification hierarchy rather than individual ledgers, but it does not explicitly state when to use list_groups versus list_ledgers or other sibling tools. The 'in the active company' qualifier gives useful context but no direct alternatives or exclusion criteria.

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

list_ledgersA

List all ledger accounts (chart of accounts) in the active Tally company, including opening/closing balances.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameContainsNoOnly return ledgers whose name contains this substring (case-sensitive, as stored in Tally).

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it states this is a listing (read-only) operation, restricts scope to the 'active Tally company', and discloses that balances are included. It does not mention filtering behavior or potential absence of results, but these are minor for a simple list operation.

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

Conciseness5/5

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

The description is a single sentence that front-loads the core action ('List all ledger accounts') and then adds essential scope and content details. There is no redundant or filler wording.

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 tool with one optional documented parameter and no output schema, the description is nearly complete: it specifies the resource, scope, and return content. It could go slightly further by noting the effect of the nameContains filter, but that is already fully documented in the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no parameter-specific meaning, but the schema already documents the nameContains parameter, including case sensitivity and its filtering effect. The description does not need to repeat this.

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?

The description uses a specific verb ('List') and resource ('ledger accounts (chart of accounts)'), and further clarifies the scope to the active Tally company and the inclusion of opening/closing balances. This clearly distinguishes it from sibling tools like get_ledger (single account), list_groups (different resource), and list_stock_items.

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

Usage Guidelines3/5

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

The description implies usage: to enumerate ledger accounts in the active Tally company. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or conditions under which a different sibling (e.g., get_ledger) would be more appropriate.

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

list_stock_itemsA

List inventory/stock items in the active Tally company, including closing stock quantity and value.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameContainsNoOnly return stock items whose name contains this substring.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the disclosure burden. It correctly implies a read-only listing operation and adds useful context about the active company and returned fields. It does not mention permissions, pagination, or empty-result behavior, but for a simple list operation the core behavior is reasonably transparent.

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

Conciseness5/5

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

The description is one concise sentence with no filler. It front-loads the action and resource, then adds the key output information. Every word contributes value.

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 simple tool with one optional parameter and no output schema, the description covers the essential context: what is listed, where it is listed, and what relevant fields are returned. It could additionally clarify sorting or absence behavior, but those are minor gaps for this tool's complexity.

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

Parameters3/5

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

The single optional parameter nameContains is already fully described in the input schema with 100% description coverage. The tool description adds no additional parameter-level detail, so the baseline score of 3 applies.

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?

The description clearly states a specific action ('List'), a specific resource ('inventory/stock items'), and a scope ('active Tally company'). It also mentions the included output fields ('closing stock quantity and value'), distinguishing it from the singular sibling get_stock_item without confusion.

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

Usage Guidelines3/5

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

The intended use is implied: call this to enumerate stock items in the active company. However, the description does not explicitly mention when to prefer this over alternatives such as get_stock_item, nor does it state exclusions or conditions. Some guidance is present, but it relies on inference.

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

list_vouchersB

List transaction vouchers (Sales, Purchase, Payment, Receipt, Journal, etc.) in the active company within a date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
toDateYesEnd date, inclusive, as YYYY-MM-DD or YYYYMMDD.
fromDateYesStart date, inclusive, as YYYY-MM-DD or YYYYMMDD.
voucherTypeNoRestrict to a single voucher type, e.g. "Sales" or "Payment".

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It discloses scoping ('active company', 'date range') but not return content, ordering, pagination, whether voided vouchers are included, or the complete set of valid voucherType values.

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?

A single front-loaded sentence presents the verb and object first, followed by voucher-type examples and scoping. Nothing is wasted; the trailing 'etc.' is slightly vague but acceptable.

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

Completeness3/5

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

For a 3-parameter tool with no output schema and no annotations, the description captures the intent but not the return structure or full voucherType value set. It also references the 'active company' without explaining how the agent determines or selects it, though that may be a broader tool-context concept.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3; each parameter already has a description in the schema, including date formats and a voucherType example. The description adds little beyond pointing to a date range and five example voucher types, which is consistent with the schema but not additive.

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

Purpose4/5

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

The description uses a specific verb ('List') with a concrete resource ('transaction vouchers') and enumerates common voucher types (Sales, Purchase, Payment, Receipt, Journal), making the purpose immediately clear. It does not explicitly name a differentiating sibling such as get_day_book or get_ledger, though the voucher-type scope largely separates it from list_companies, list_ledgers, and create_voucher.

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

Usage Guidelines3/5

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

The usage context is implied: use this when vouchers in the active company within a date range are needed. No explicit when-not-to-use guidance or alternatives (e.g., get_day_book, get_ledger, create_voucher) are given, so the agent must infer the right choice.

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. 12 tool updatesv0.1.0
    • First observedcreate_voucher
    • First observedget_balance_sheet
    • First observedget_day_book
    • First observedget_ledger
    • First observedget_profit_and_loss
    • First observedget_stock_item
    • First observedget_trial_balance
    • First observedlist_companies
    • First observedlist_groups
    • First observedlist_ledgers
    • First observedlist_stock_items
    • First observedlist_vouchers

TDQS

A4/5.0

Scored across 12 tools

Disambiguation5/5

Every tool maps to a distinct resource or report: list/get for ledgers and stock items, list for companies/groups/vouchers, and separate tools for each financial report. There is no meaningful overlap or ambiguity between tool purposes.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using list_, get_, or create_. This makes the tool set predictable and easy for an agent to navigate.

Tool Count5/5

Twelve tools is well within the ideal range and each tool earns its place for a Tally accounting integration. The count covers both master data queries, transaction listing/creation, and core financial reports without unnecessary bloat.

Completeness4/5

The tool set provides strong coverage for reading companies, ledgers, stock items, vouchers, and financial reports, plus creating vouchers. Missing operations like editing or deleting vouchers, viewing individual voucher details, or creating ledgers are minor gaps for an integration focused on retrieval and transaction entry.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

  • AI for Tally Prime and Tally ERP 9. Hosted MCP server to ask your accounts in any language.

  • Malaysian SME accounting, e-Invoice and payroll for your AI. 64 tools; writes are approved drafts.

  • Taokeh is accounting software for Malaysian SMEs — double-entry books, LHDN e-Invoice (MyInvois), SST, and full statutory payroll — and this connector opens a company's live books to the AI its owner already uses. 59 tools. The reads answer real questions from the ledger: P&L and balance sheet with server-computed comparisons, cash position, A/R and A/P aging, per-channel marketplace sales, an 8-week cash-flow forecast, tax position, document search with e-Invoice standing, and a one-call daily brief. The writes are drafts only — expenses, invoices, bills, quotes, purchase orders, receipts, credit and debit notes, adjusting journals, bank-statement imports and bank-row suggestions — every figure re-checked by the server, every draft waiting for a human tap in Taokeh. The AI can also work the Shoebox: staff snap paper on free phone logins, and the connector lists the pile, reads each photo, and files the draft with the original attached — the server maps its own stored copy, so the document trail stays byte-perfect. One connection is bound to one company at consent; no tool takes a company argument. Migrating from another system? The same connector stages the chart of accounts, opening balances, contacts, products, historical documents and workspace settings onto the owner's own review screens. Bring your own AI subscription — no per-call fees.

  • Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables Large Language Models to access and query Tally Prime ERP data, including financial reports, masters, and inventory summaries, via the Model Context Protocol.
    74
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Bridges Tally Prime ERP with AI assistants, enabling querying financial reports, managing masters, creating vouchers, and analyzing GST data through natural language.
    AGPL 3.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Gives AI models native-level control over TallyPrime ERP, covering 169+ tools across all functional modules including masters, vouchers, reports, GST, payroll, and more.
    -
  • F
    license
    A
    quality
    C
    maintenance
    Exposes TallyPrime accounting data to MCP-compatible clients via Tally's XML HTTP API. Enables listing companies, ledgers, groups, stock items, day book vouchers, and outstanding balances.
    6
    -

Latest Blog Posts

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/visheshStallion/tally-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server