Skip to main content
Glama
lokesh-sparrow

PNPC-MCP-Tally-Prime

create_sales_order

Record a future sale commitment in TallyPrime as a Sales Order voucher, including the required order number and per-item due dates, before goods are dispatched or invoiced.

Instructions

Create a Sales Order in TallyPrime — a future commitment to sell, before any goods move or invoicing happens. Same item-line shape as create_sales_invoice/create_delivery_note but VCHTYPE is 'Sales Order' and Tally classifies it as an Order-class voucher, structurally different from Delivery Note's inventory-class. Follow up with create_delivery_note (dispatch) and/or create_sales_invoice (billing) against the same party once goods actually move. Same voucher-type-active prerequisite as create_delivery_note (confirmed live) — check it's on in the company before relying on this. orderNumber and each item's dueDate are REQUIRED (unlike other item-invoice tools, where the equivalent fields are optional): confirmed live that Tally rejects an Order-class voucher with 'Order No. is missing in Item Allocations' and separately 'Due Date of Order is missing in Item Allocations' without them. Reverse-engineered from a real manually-created Sales Order's own export: the UI's 'Order no.' field is backed by the voucher-level REFERENCE tag (independent of the voucher number — the real example had voucherNumber '1' and Order no. '12345' as genuinely different values), while the per-item Order No. and Due Date both live nested inside each item's BATCHALLOCATIONS.LIST, not as direct ALLINVENTORYENTRIES fields as their names might suggest. Also confirmed live: Tally silently reassigns its own voucher number for Order-class vouchers regardless of an explicit voucherNumber passed in (its 'Auto Retain' numbering style for this voucher type) — check the actual assigned number via get_vouchers after creating one, don't assume the value you passed was used.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dateYesOrder date in DD-MM-YYYY format
itemsYesOne entry per line.
narrationNoNarration / description
orderNumberYesREQUIRED — the order reference shown as 'Order no.' in Tally's UI. Independent of voucherNumber; can be any value the customer/business uses to reference this order.
partyLedgerYesCustomer ledger name
voucherNumberNoExplicit voucher number. Normally omit and let Tally auto-number — but some Tally configurations stop auto-numbering certain voucher types via the XML gateway (confirmed live for item-invoice types; unconfirmed either way for Sales Order). If creation fails with a blank EXCEPTIONS:1, check get_vouchers for the highest existing number of this voucher type and retry with voucherNumber set to the next one. Distinct from orderNumber.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Addedv1.11.2

TDQS

A4.8/5.0
Behavior5/5

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

All four annotations are neutral/false, so the description carries the full behavioral burden and over-delivers: Tally silently reassigns voucher numbers regardless of an explicit voucherNumber (Auto Retain numbering), and it rejects Order-class vouchers with exact missing-field messages ('Order No. is missing in Item Allocations', 'Due Date of Order is missing in Item Allocations'). It also reveals the reverse-engineered XML mapping — voucher-level REFERENCE tag and item-nested BATCHALLOCATIONS.LIST — which is exactly the non-obvious behavior an agent cannot infer from schema or annotations. No contradiction with the annotations (write operation matches readOnlyHint=false).

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 ~230-word description is dense but nearly every block earns its place — prerequisites, fatal error messages, field-to-XML mapping, and post-create verification are all load-bearing for correct invocation. It could be tightened (the 'confirmed live' caveat appears twice and the required-field error text is partly restated in the schema), and the single-paragraph wall of text would benefit from light structuring, but there is no fluff.

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 write tool with high quirk quotient and no output schema, nothing essential is missing: it covers the prerequisite, exact failure messages, the XML nesting that dictates how items must be shaped, and the post-condition instruction to verify the assigned voucher number via get_vouchers. The only nominal gap, the success response format, is practically compensated by the explicit follow-up verification step.

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, but the description adds genuine meaning beyond the schema: orderNumber is 'the order reference shown as Order no. in Tally's UI' backed by the REFERENCE tag and independent of voucherNumber (real example: voucherNumber '1' vs Order no. '12345'), and it clarifies that per-item Order No./dueDate live inside BATCHALLOCATIONS.LIST rather than as direct ALLINVENTORYENTRIES fields. Not every parameter gets enrichment (date, partyLedger, narration rest on the schema), which keeps this at 4.

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?

Opens with a specific verb and resource — 'Create a Sales Order in TallyPrime — a future commitment to sell' — which immediately scopes the operation as pre-dispatch and pre-invoicing. It then distinguishes the tool from create_sales_invoice and create_delivery_note by voucher class ('Order-class voucher, structurally different from Delivery Note's inventory-class'), so an agent can pick it correctly among dozens of create_* siblings without opening schemas.

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?

The description gives explicit workflow sequencing: create the order first, then 'follow up with create_delivery_note (dispatch) and/or create_sales_invoice (billing) ... once goods actually move' — which both states when this tool applies and implicitly when the siblings replace it. It also names the voucher-type-active prerequisite shared with create_delivery_note and a concrete retry rule for voucherNumber (blank EXCEPTIONS:1 → check get_vouchers and pass the next number).

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

Install Server

Other Tools

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/lokesh-sparrow/PNPC-MCP-Tally-Prime'

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