get_ledger
Retrieve detailed information and recent voucher entries for any ledger in TallyPrime by providing its exact name.
Instructions
Get details and recent vouchers for a specific ledger.
Args: name: Exact ledger name as it appears in TallyPrime (case-sensitive).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
Implementation Reference
- The 'get_ledger' MCP tool handler function. It is an async function decorated with @mcp.tool(), registered inside the ledgers.register() function. Takes a ledger name, calls client.get_ledger(name), and returns the result as JSON.
@mcp.tool() async def get_ledger(name: str) -> str: """ Get details and recent vouchers for a specific ledger. Args: name: Exact ledger name as it appears in TallyPrime (case-sensitive). """ try: data = await client.get_ledger(name) return json.dumps(data, indent=2) except TallyError as e: return f"Error: {e}" - src/tallyprime_mcp/tools/ledgers.py:6-34 (registration)The ledgers.register() function that registers all ledger-related tools including 'get_ledger' onto the FastMCP instance via the @mcp.tool() decorator.
def register(mcp, client: TallyClient): @mcp.tool() async def get_all_ledgers() -> str: """Get all ledgers in TallyPrime with their group and closing balance.""" try: ledgers = await client.get_all_ledgers() if not ledgers: return "No ledgers found." text = f"Found {len(ledgers)} ledgers:\n\n" for l in ledgers: text += f" * {l['name']} (Group: {l['group']}, Balance: {l['closing']})\n" return text except TallyError as e: return f"Error: {e}" @mcp.tool() async def get_ledger(name: str) -> str: """ Get details and recent vouchers for a specific ledger. Args: name: Exact ledger name as it appears in TallyPrime (case-sensitive). """ try: data = await client.get_ledger(name) return json.dumps(data, indent=2) except TallyError as e: return f"Error: {e}" - The TallyClient.get_ledger() method. It builds XML via get_ledger_xml(), sends it to TallyPrime, parses the response, and converts XML to a dict.
async def get_ledger(self, name: str) -> dict: from .xml_builder import get_ledger_xml return self._elem_to_dict(self._parse(await self.send_xml(get_ledger_xml(name)))) - The get_ledger_xml() function that builds the TDL XML request string using the 'Ledger Vouchers' report and a LEDGERNAME parameter.
def get_ledger_xml(name: str) -> str: return f"""<ENVELOPE> <HEADER> <TALLYREQUEST>Export Data</TALLYREQUEST> </HEADER> <BODY> <EXPORTDATA> <REQUESTDESC> <REPORTNAME>Ledger Vouchers</REPORTNAME> <STATICVARIABLES> <SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT> <LEDGERNAME>{name}</LEDGERNAME> </STATICVARIABLES> </REQUESTDESC> </EXPORTDATA> </BODY> </ENVELOPE>""" - src/tallyprime_mcp/tools/__init__.py:7-11 (registration)The register_all() function in the tools package __init__.py that calls ledgers.register(mcp, client), which is where get_ledger gets registered.
def register_all(mcp: FastMCP, client: TallyClient): company.register(mcp, client) ledgers.register(mcp, client) vouchers.register(mcp, client) reports.register(mcp, client)