Skip to main content
Glama
ComplyEaze

ComplyEaze Bridge: TallyPrime MCP server for Claude Desktop

Official

voucher_presence

Read-only

Checks up to 500 proposed vouchers against a TallyPrime date window, returning present, possibly present, or absent to help avoid duplicate entries.

Instructions

Answer which of 1–500 proposed vouchers are already in the book. presence is present, possibly_present or absent, and only present names a book voucher. A nonempty window is read as complete only when its rows were checked voucher for voucher against a count ComplyEaze Bridge made of the window first, as vouchers labels it; ComplyEaze Bridge makes that count for every book that has held a voucher, however few, so a small book can read complete too. A nonempty window not counted is partial with reason nonempty_window_unqualified. An empty window is complete only when a read widened by a day on each side is also empty and the company has no vouchers (company_has_no_vouchers); it is otherwise partial, with empty_uncorroborated when the widened read is also empty but the company has vouchers, and empty_window_wider_read_nonempty when the widened read found rows on the neighbouring days, which cannot count the window. present and possibly_present never need a complete window and are produced either way, but absent means absent from the whole window and is only ever produced from one proven complete — a proposal that would otherwise be absent from a merely partial window instead comes back possibly_present with reason window_not_proven_complete. The conditional decision basis can use a voucher number on a voucher type you declare manual — unique on both sides, within an observed voucher type, and never onto a cancelled or optional voucher; or, for a voucher ComplyEaze Bridge wrote into a file a person imported by hand, the narration marker derived from the supplied batch_id and bridge_txn_id together. A native post (post_import) writes no marker, so this tool cannot identify its vouchers: one edited or re-dated in Tally can read absent here. Check a natively posted batch with verify_import, which finds its vouchers by the GUIDs its post created once its binding is made, before posting any of them again. It neither accepts nor reads client remote identifiers. Supplying only one narration identity component is an error. The marker reaches only the current writer identity scheme; older-scheme ComplyEaze Bridge writes stay unidentified rather than matched. Date, party and amount only ever produce candidates, with the rule that surfaced each and no ranking or score. Every voucher type a proposal names needs a declared numbering method; under automatic Tally discards the supplied number, so nothing can be decided from it. absent means absent from this window, so cover the dates the book could hold. A proposal comes back absent only when the window is proven complete, nothing in it resembles the proposal, a voucher type declared manual carries its voucher number, and the party was supplied and could be compared completely; a proposal with no party (a Journal has none), no manual number, or a party whose comparison was cut short comes back possibly_present with a reason such as party_not_supplied, manual_number_not_supplied or party_not_decidable, however complete the window is. Reads the full window before comparing; dense windows can fail source limits. Party names bind through the same rules as validate_masters. A reported difference on a present voucher is a finding for a person, not a work item: correcting a voucher by Alter or Cancel silently creates a duplicate instead (§9.7), and no ComplyEaze Bridge path can correct a voucher it did not write. This never dispatches import XML to Tally. To list the vouchers of a date window, use vouchers instead. Each call appends metadata-only receipt lines (tool, company, counts, request and response fingerprints; no book content) to ComplyEaze Bridge's local log on this computer; it writes nothing to Tally.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toYesThe last day of the date range, included (YYYYMMDD or YYYY-MM-DD).
fromYesThe first day of the date range, included (YYYYMMDD or YYYY-MM-DD).
limitNoThe most rows to return on this page. The default and the maximum are this server's row limit (500 unless it is configured otherwise).
offsetNoHow many rows to skip before this page: 0, the default, is the first page.
vouchersYes1 to 500 proposed vouchers to look for in the book; the description says what decides present, possibly_present and absent.
numberingYesOne entry per voucher type the proposals name, with its numbering method as the person confirms it for the series used, not the numbering_method of the masters tool: manual, automatic or unknown. Under automatic, Tally discards a supplied number, so nothing is decided from it.
company_guidYesThe company's company_guid, as list_companies returns it.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changedv0.4.3
    • addedInput schema / properties / company_guid / description
      Added value: +"The company's company_guid, as list_companies returns it."
    • addedInput schema / properties / from / description
      Added value: +"The first day of the date range, included (YYYYMMDD or YYYY-MM-DD)."
    • removedInput schema / properties / limit / default
      Removed value: -500
    • addedInput schema / properties / limit / description
      Added value: +"The most rows to return on this page. The default and the maximum are this server's row limit (500 unless it is configured otherwise)."
    • addedInput schema / properties / numbering / description
      Added value: +"One entry per voucher type the proposals name, with its numbering method as the person confirms it for the series used, not the numbering_method of the masters tool: manual, automatic or unknown. Under automatic, Tally discards a supplied number, so nothing is decided from it."
    • addedInput schema / properties / offset / description
      Added value: +"How many rows to skip before this page: 0, the default, is the first page."
    • addedInput schema / properties / to / description
      Added value: +"The last day of the date range, included (YYYYMMDD or YYYY-MM-DD)."
    • addedInput schema / properties / vouchers / description
      Added value: +"1 to 500 proposed vouchers to look for in the book; the description says what decides present, possibly_present and absent."
  2. First observedv0.4.1

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly/non-destructive/closed-world, but the description adds substantial context beyond them: it writes nothing to Tally yet appends metadata-only receipt lines to a local log, dense windows can fail source limits, it does not accept client remote identifiers, and it never dispatches import XML. These are behavioral facts the annotations cannot express.

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

Conciseness3/5

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

The core purpose is front-loaded, and most sentences carry genuine decision-bearing information, but the description is a ~450-word run-on block that mixes presence semantics, marker identity, error reasons, and caveats without sub-structure. It is dense enough to impede parsing even if little is truly redundant.

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

Completeness5/5

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

For a complex, high-parameter tool with no output schema, the description carries the full burden and does so: it enumerates the `presence` values, the `complete`/`partial` window conditions, every reason code, and the failure modes. An agent has enough to call it and interpret results.

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 schema baseline is 3, but the description adds real meaning: it explains that `numbering` must be declared `manual` for a voucher number to decide anything, that `automatic` makes Tally discard the number, and that `batch_id`+`bridge_txn_id` together derive the narration marker (one alone is an error). This goes beyond the schema's field-level text.

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 opening sentence states a specific verb and resource ('Answer which of 1–500 proposed vouchers are already in the book'), and the closing sentence names the sibling it is not ('To list the vouchers of a date window, use vouchers instead'). An agent can distinguish it from `vouchers` and `verify_import` without opening any 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?

It explicitly routes the agent: use `vouchers` to list a date window, and use `verify_import` for natively posted batches ('Check a natively posted batch with verify_import'). It also states the preconditions for each decision outcome, so when-to-use and when-not-to-use are both covered.

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