Tool tree
gradeNot graded
describe_toolsAnswer
Every tool with its kind, JSON-schema input and approval rule, the person-only acts no agent can perform, and the UI routes not yet covered. Start here.
View tool JSON
{
"name": "describe_tools",
"kind": "answer",
"impl": "imperative",
"description": "Every tool with its kind, JSON-schema input and approval rule, the person-only acts no agent can perform, and the UI routes not yet covered. Start here.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
},
"page": "/"
}get_statusAnswer
Whether a .khata is open and writable, the route and mode this tab shows, which doors are open, and how many proposals wait for the person.
View tool JSON
{
"name": "get_status",
"kind": "answer",
"impl": "imperative",
"description": "Whether a .khata is open and writable, the route and mode this tab shows, which doors are open, and how many proposals wait for the person.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
},
"page": "/"
}run_selftestAction
Declaration, handler, door and route parity assertions. The check that guards this surface.
View tool JSON
{
"name": "run_selftest",
"kind": "act",
"impl": "imperative",
"description": "Declaration, handler, door and route parity assertions. The check that guards this surface.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
},
"page": "/"
}get_file_infoAnswer
Company identity, file name, versions, save status and integrity heads of the open .khata. Needs an open .khata.
View tool JSON
{
"name": "get_file_info",
"kind": "answer",
"impl": "imperative",
"description": "Company identity, file name, versions, save status and integrity heads of the open .khata. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
},
"page": "/"
}save_fileAction
Write the in-memory books to the open .khata on disk, the same path as Ctrl+S. Approved writes already save on their own. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "save_file",
"kind": "act",
"impl": "imperative",
"description": "Write the in-memory books to the open .khata on disk, the same path as Ctrl+S. Approved writes already save on their own. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}verify_integrityAction
Walk the audit hash chain and verify every ECDSA signature. Needs an open .khata.
View tool JSON
{
"name": "verify_integrity",
"kind": "act",
"impl": "imperative",
"description": "Walk the audit hash chain and verify every ECDSA signature. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
},
"page": "/"
}list_audit_entriesAnswer
The most recent audit-log entries, newest first. Read your own writes back and confirm attribution; includePayload shows the agentCall record. Needs an open .khata.
View tool JSON
{
"name": "list_audit_entries",
"kind": "answer",
"impl": "imperative",
"description": "The most recent audit-log entries, newest first. Read your own writes back and confirm attribution; includePayload shows the agentCall record. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 500,
"default": 20
},
"includePayload": {
"type": "boolean",
"default": false
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}list_customersAnswer
Customers, paged. Archived ones are hidden unless includeArchived, as in the UI. Needs an open .khata.
View tool JSON
{
"name": "list_customers",
"kind": "answer",
"impl": "imperative",
"description": "Customers, paged. Archived ones are hidden unless includeArchived, as in the UI. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"q": {
"type": "string",
"maxLength": 200,
"description": "Filter by name (substring)."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 100
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
},
"includeArchived": {
"type": "boolean",
"default": false
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}list_vendorsAnswer
Vendors, paged, with their RCM and TDS settings. Needs an open .khata.
View tool JSON
{
"name": "list_vendors",
"kind": "answer",
"impl": "imperative",
"description": "Vendors, paged, with their RCM and TDS settings. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"q": {
"type": "string",
"maxLength": 200,
"description": "Filter by name (substring)."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 100
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
},
"includeArchived": {
"type": "boolean",
"default": false
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}list_itemsAnswer
Items and services, paged, with HSN/SAC, unit and default rate in paise. Needs an open .khata.
View tool JSON
{
"name": "list_items",
"kind": "answer",
"impl": "imperative",
"description": "Items and services, paged, with HSN/SAC, unit and default rate in paise. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"q": {
"type": "string",
"maxLength": 200,
"description": "Filter by name (substring)."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 100
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
},
"includeArchived": {
"type": "boolean",
"default": false
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}list_accountsAnswer
Chart-of-accounts entries: id, name and type. Journal lines and receipts name accounts by id. Needs an open .khata.
View tool JSON
{
"name": "list_accounts",
"kind": "answer",
"impl": "imperative",
"description": "Chart-of-accounts entries: id, name and type. Journal lines and receipts name accounts by id. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"q": {
"type": "string",
"maxLength": 200,
"description": "Filter by name (substring)."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 500
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
},
"includeArchived": {
"type": "boolean",
"default": false
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}get_trial_balanceAnswer
Trial balance as of a date, with the Dr = Cr tie check. Amounts in paise. Needs an open .khata.
View tool JSON
{
"name": "get_trial_balance",
"kind": "answer",
"impl": "imperative",
"description": "Trial balance as of a date, with the Dr = Cr tie check. Amounts in paise. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"asOf": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Omit for every posting to date."
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}get_balance_sheetAnswer
Balance sheet as of a date. Asset balances carry the same sign the UI renders. Needs an open .khata.
View tool JSON
{
"name": "get_balance_sheet",
"kind": "answer",
"impl": "imperative",
"description": "Balance sheet as of a date. Asset balances carry the same sign the UI renders. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"asOf": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}get_day_bookAnswer
Every voucher posted in a date range, both ends inclusive. Needs an open .khata.
View tool JSON
{
"name": "get_day_book",
"kind": "answer",
"impl": "imperative",
"description": "Every voucher posted in a date range, both ends inclusive. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"from",
"to"
],
"additionalProperties": false
},
"page": "/"
}get_account_ledgerAnswer
One account's ledger lines over a date range. Needs an open .khata.
View tool JSON
{
"name": "get_account_ledger",
"kind": "answer",
"impl": "imperative",
"description": "One account's ledger lines over a date range. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"accountId": {
"type": "integer",
"minimum": 1
},
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"accountId",
"from",
"to"
],
"additionalProperties": false
},
"page": "/"
}get_receivables_agingAnswer
Receivables aged into buckets as of a date (default today). Needs an open .khata.
View tool JSON
{
"name": "get_receivables_aging",
"kind": "answer",
"impl": "imperative",
"description": "Receivables aged into buckets as of a date (default today). Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"asOf": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}get_stock_on_handAnswer
Closing stock per item per godown. Needs an open .khata.
View tool JSON
{
"name": "get_stock_on_hand",
"kind": "answer",
"impl": "imperative",
"description": "Closing stock per item per godown. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"itemId": {
"type": "integer",
"minimum": 1
},
"godownId": {
"type": "integer",
"minimum": 1
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}get_stock_valuationAnswer
Closing stock valuation as of a date, by each item's WAC or FIFO method. Needs an open .khata.
View tool JSON
{
"name": "get_stock_valuation",
"kind": "answer",
"impl": "imperative",
"description": "Closing stock valuation as of a date, by each item's WAC or FIFO method. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"asOf": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}get_gstr1Answer
GSTR-1 outward-supplies data for a period, in the portal JSON shape (rupees, as the portal wants). Needs an open .khata.
View tool JSON
{
"name": "get_gstr1",
"kind": "answer",
"impl": "imperative",
"description": "GSTR-1 outward-supplies data for a period, in the portal JSON shape (rupees, as the portal wants). Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"periodStart": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"periodEnd": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"periodStart",
"periodEnd"
],
"additionalProperties": false
},
"page": "/"
}get_gstr3bAnswer
GSTR-3B summary for a period, in paise. Needs an open .khata.
View tool JSON
{
"name": "get_gstr3b",
"kind": "answer",
"impl": "imperative",
"description": "GSTR-3B summary for a period, in paise. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"periodStart": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"periodEnd": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"periodStart",
"periodEnd"
],
"additionalProperties": false
},
"page": "/"
}get_form26qAnswer
Quarterly TDS return data: Form 26Q up to FY 2025-26, Form 140 from FY 2026-27 (formName in the result). Needs an open .khata.
View tool JSON
{
"name": "get_form26q",
"kind": "answer",
"impl": "imperative",
"description": "Quarterly TDS return data: Form 26Q up to FY 2025-26, Form 140 from FY 2026-27 (formName in the result). Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"fyStartYear": {
"type": "integer",
"minimum": 2000,
"maximum": 2200,
"description": "2025 for FY 2025-26."
},
"quarter": {
"type": "integer",
"minimum": 1,
"maximum": 4
}
},
"required": [
"fyStartYear",
"quarter"
],
"additionalProperties": false
},
"page": "/"
}post_journalAction
Post a balanced double-entry journal voucher. Total debits must equal total credits. A date inside a filed period posts as an amendment, as in the UI. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "post_journal",
"kind": "act",
"impl": "imperative",
"description": "Post a balanced double-entry journal voucher. Total debits must equal total credits. A date inside a filed period posts as an amendment, as in the UI. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"lines": {
"type": "array",
"minItems": 2,
"maxItems": 500,
"items": {
"type": "object",
"properties": {
"accountId": {
"type": "integer",
"minimum": 1,
"description": "Account id from list_accounts."
},
"debit": {
"type": "integer",
"minimum": 0,
"maximum": 2147483647,
"description": "Debit in integer paise (₹1,500.00 = 150000)."
},
"credit": {
"type": "integer",
"minimum": 0,
"maximum": 2147483647,
"description": "Credit in integer paise."
}
},
"required": [
"accountId"
]
}
},
"narration": {
"type": "string",
"maxLength": 2000
},
"voucherRef": {
"type": "string",
"maxLength": 120
},
"postedAt": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Defaults to today."
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"lines"
],
"additionalProperties": false
},
"page": "/"
}create_invoiceAction
Raise and post a sales invoice: header, lines, GST routing (CGST+SGST intra-state, IGST inter-state), ledger entry and stock effect, exactly as the invoice form does. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "create_invoice",
"kind": "act",
"impl": "imperative",
"description": "Raise and post a sales invoice: header, lines, GST routing (CGST+SGST intra-state, IGST inter-state), ledger entry and stock effect, exactly as the invoice form does. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"customerId": {
"type": "integer",
"minimum": 1,
"description": "Customer id from list_customers."
},
"lines": {
"type": "array",
"minItems": 1,
"maxItems": 500,
"items": {
"type": "object",
"properties": {
"description": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"quantity": {
"type": "number",
"exclusiveMinimum": 0,
"description": "A number of units, not paise."
},
"rate": {
"type": "integer",
"minimum": 0,
"maximum": 2147483647,
"description": "Price per unit in integer paise (₹150.00 = 15000)."
},
"taxRate": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "GST rate as a decimal fraction: 0.18 for 18%. Passing 18 is refused."
},
"hsnSac": {
"type": [
"string",
"null"
]
},
"itemId": {
"type": [
"integer",
"null"
],
"minimum": 1,
"description": "Item id from list_items. Links the line to the item master and its stock."
},
"cess": {
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 2147483647,
"description": "Cess in integer paise. null derives it from the HSN table."
},
"discount": {
"type": "integer",
"minimum": 0,
"maximum": 2147483647,
"description": "Line discount in integer paise."
}
},
"required": [
"description",
"quantity",
"rate"
]
}
},
"invoiceDate": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Defaults to today."
},
"invoiceNumber": {
"type": "string",
"maxLength": 60,
"description": "Generated from the series when omitted."
},
"series": {
"type": "string",
"maxLength": 60,
"description": "Invoice series; defaults to Domestic."
},
"placeOfSupply": {
"type": "string",
"maxLength": 8,
"pattern": "^[A-Z]{2}$",
"description": "Two-letter state code; defaults to the customer's state."
},
"notes": {
"type": "string",
"maxLength": 2000
},
"isComposition": {
"type": "boolean",
"default": false
},
"advanceAllocations": {
"type": "array",
"maxItems": 100,
"items": {
"type": "object",
"properties": {
"advanceId": {
"type": "integer",
"minimum": 1
},
"amount": {
"type": "integer",
"minimum": 1,
"description": "Integer paise of the advance to adjust against this invoice."
}
},
"required": [
"advanceId",
"amount"
]
},
"description": "Open advances of this customer to adjust against the invoice; see list_advances."
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"customerId",
"lines"
],
"additionalProperties": false
},
"page": "/"
}create_purchaseSensitive Action
Record and post a vendor purchase: header, lines, ITC and reverse-charge routing, ledger entry and stock effect, exactly as the purchase form does. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "create_purchase",
"kind": "transact",
"impl": "imperative",
"description": "Record and post a vendor purchase: header, lines, ITC and reverse-charge routing, ledger entry and stock effect, exactly as the purchase form does. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"vendorId": {
"type": "integer",
"minimum": 1,
"description": "Vendor id from list_vendors."
},
"billNumber": {
"type": "string",
"maxLength": 60,
"description": "The vendor's own document number."
},
"lines": {
"type": "array",
"minItems": 1,
"maxItems": 500,
"items": {
"type": "object",
"properties": {
"description": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"quantity": {
"type": "number",
"exclusiveMinimum": 0,
"description": "A number of units, not paise."
},
"rate": {
"type": "integer",
"minimum": 0,
"maximum": 2147483647,
"description": "Price per unit in integer paise (₹150.00 = 15000)."
},
"taxRate": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "GST rate as a decimal fraction: 0.18 for 18%. Passing 18 is refused."
},
"hsnSac": {
"type": [
"string",
"null"
]
},
"itemId": {
"type": [
"integer",
"null"
],
"minimum": 1,
"description": "Item id from list_items. Links the line to the item master and its stock."
},
"cess": {
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 2147483647,
"description": "Cess in integer paise. null derives it from the HSN table."
}
},
"required": [
"description",
"quantity",
"rate"
]
}
},
"billDate": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Defaults to today."
},
"internalRef": {
"type": "string",
"maxLength": 60,
"description": "Generated when omitted."
},
"placeOfSupply": {
"type": "string",
"maxLength": 8,
"pattern": "^[A-Z]{2}$"
},
"notes": {
"type": "string",
"maxLength": 2000
},
"reverseCharge": {
"type": "boolean",
"default": false
},
"itcEligible": {
"type": "boolean",
"default": true
},
"aiAssisted": {
"type": "boolean",
"default": false,
"description": "Set by the person's own Smart Capture when it drafted this purchase."
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"vendorId",
"billNumber",
"lines"
],
"additionalProperties": false
},
"page": "/"
}create_paymentSensitive Action
Record and post a customer receipt allocated against that customer's invoices. The receipt amount is the sum of the allocations; an unallocated receipt is an advance, a different voucher. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "create_payment",
"kind": "transact",
"impl": "imperative",
"description": "Record and post a customer receipt allocated against that customer's invoices. The receipt amount is the sum of the allocations; an unallocated receipt is an advance, a different voucher. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"customerId": {
"type": "integer",
"minimum": 1
},
"bankAccountId": {
"type": "integer",
"minimum": 1,
"description": "The bank or cash account id from list_accounts."
},
"allocations": {
"type": "array",
"minItems": 1,
"maxItems": 500,
"items": {
"type": "object",
"properties": {
"invoiceId": {
"type": "integer",
"minimum": 1,
"description": "An invoice of this customer."
},
"amount": {
"type": "integer",
"minimum": 1,
"maximum": 2147483647,
"description": "Integer paise applied to this invoice."
}
},
"required": [
"invoiceId",
"amount"
]
}
},
"paymentDate": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Defaults to today."
},
"paymentNumber": {
"type": "string",
"maxLength": 60
},
"paymentMode": {
"type": "string",
"maxLength": 20,
"enum": [
"cash",
"cheque",
"neft",
"rtgs",
"imps",
"upi",
"card",
"other"
]
},
"reference": {
"type": "string",
"maxLength": 120
},
"notes": {
"type": "string",
"maxLength": 2000
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"customerId",
"bankAccountId",
"allocations"
],
"additionalProperties": false
},
"page": "/"
}create_credit_noteAction
Raise and post a credit note against an invoice: full reversal, or partial by amount pro-rated over every line. Known gap: cess on the invoice is not reversed. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "create_credit_note",
"kind": "act",
"impl": "imperative",
"description": "Raise and post a credit note against an invoice: full reversal, or partial by amount pro-rated over every line. Known gap: cess on the invoice is not reversed. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"invoiceId": {
"type": "integer",
"minimum": 1
},
"cnDate": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Defaults to today."
},
"cnNumber": {
"type": "string",
"maxLength": 60
},
"reason": {
"type": "string",
"maxLength": 60,
"enum": [
"sales-return",
"rate-difference",
"discount",
"deficiency",
"other"
]
},
"notes": {
"type": "string",
"maxLength": 2000
},
"amount": {
"type": "integer",
"minimum": 1,
"description": "Integer paise for a partial note. Omit for a full reversal."
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"invoiceId"
],
"additionalProperties": false
},
"page": "/"
}create_debit_noteAction
Raise and post a debit note against a purchase: full reversal, or partial by amount pro-rated over every line. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "create_debit_note",
"kind": "act",
"impl": "imperative",
"description": "Raise and post a debit note against a purchase: full reversal, or partial by amount pro-rated over every line. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"purchaseId": {
"type": "integer",
"minimum": 1
},
"dnDate": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Defaults to today."
},
"dnNumber": {
"type": "string",
"maxLength": 60
},
"reason": {
"type": "string",
"maxLength": 60,
"enum": [
"purchase-return",
"rate-difference",
"quality",
"other"
]
},
"notes": {
"type": "string",
"maxLength": 2000
},
"amount": {
"type": "integer",
"minimum": 1,
"description": "Integer paise for a partial note. Omit for a full reversal."
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"purchaseId"
],
"additionalProperties": false
},
"page": "/"
}list_invoicesAnswer
Sales invoices of every status, newest first, with the amounts allocated, adjusted and still outstanding (paise). Needs an open .khata.
View tool JSON
{
"name": "list_invoices",
"kind": "answer",
"impl": "imperative",
"description": "Sales invoices of every status, newest first, with the amounts allocated, adjusted and still outstanding (paise). Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Earliest document date, inclusive."
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Latest document date, inclusive."
},
"customerId": {
"type": "integer",
"minimum": 1,
"description": "Only this customer's invoices."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 100
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}list_paymentsAnswer
Customer receipts, newest first, with mode, reference and bank account. Needs an open .khata.
View tool JSON
{
"name": "list_payments",
"kind": "answer",
"impl": "imperative",
"description": "Customer receipts, newest first, with mode, reference and bank account. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Earliest document date, inclusive."
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Latest document date, inclusive."
},
"customerId": {
"type": "integer",
"minimum": 1,
"description": "Only this customer's receipts."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 100
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}list_advancesAnswer
Customer advances, newest first, with the taxable value, the amount adjusted against invoices and the open balance. Needs an open .khata.
View tool JSON
{
"name": "list_advances",
"kind": "answer",
"impl": "imperative",
"description": "Customer advances, newest first, with the taxable value, the amount adjusted against invoices and the open balance. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Earliest document date, inclusive."
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Latest document date, inclusive."
},
"customerId": {
"type": "integer",
"minimum": 1,
"description": "Only this customer's advances."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 100
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}list_purchasesAnswer
Posted purchases, latest bill date first, with reverse-charge and ITC flags. Needs an open .khata.
View tool JSON
{
"name": "list_purchases",
"kind": "answer",
"impl": "imperative",
"description": "Posted purchases, latest bill date first, with reverse-charge and ITC flags. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Earliest document date, inclusive."
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Latest document date, inclusive."
},
"vendorId": {
"type": "integer",
"minimum": 1,
"description": "Only this vendor's purchases."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 100
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}list_credit_notesAnswer
Posted credit notes, latest first, with the invoice each one reverses. Needs an open .khata.
View tool JSON
{
"name": "list_credit_notes",
"kind": "answer",
"impl": "imperative",
"description": "Posted credit notes, latest first, with the invoice each one reverses. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Earliest document date, inclusive."
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Latest document date, inclusive."
},
"customerId": {
"type": "integer",
"minimum": 1,
"description": "Only this customer's credit notes."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 100
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}list_debit_notesAnswer
Posted debit notes, latest first, with the bill each one reverses. Needs an open .khata.
View tool JSON
{
"name": "list_debit_notes",
"kind": "answer",
"impl": "imperative",
"description": "Posted debit notes, latest first, with the bill each one reverses. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Earliest document date, inclusive."
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Latest document date, inclusive."
},
"vendorId": {
"type": "integer",
"minimum": 1,
"description": "Only this vendor's debit notes."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 100
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}list_delivery_challansAnswer
Delivery challans, latest first, with party, vehicle and return status. Needs an open .khata.
View tool JSON
{
"name": "list_delivery_challans",
"kind": "answer",
"impl": "imperative",
"description": "Delivery challans, latest first, with party, vehicle and return status. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Earliest document date, inclusive."
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Latest document date, inclusive."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 100
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}list_eway_billsAnswer
E-way bills, latest first, with the document each one covers. Needs an open .khata.
View tool JSON
{
"name": "list_eway_bills",
"kind": "answer",
"impl": "imperative",
"description": "E-way bills, latest first, with the document each one covers. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Earliest document date, inclusive."
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Latest document date, inclusive."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 100
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}list_stock_transfersAnswer
Inter-branch stock transfers, latest first, in both directions. Needs an open .khata.
View tool JSON
{
"name": "list_stock_transfers",
"kind": "answer",
"impl": "imperative",
"description": "Inter-branch stock transfers, latest first, in both directions. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Earliest document date, inclusive."
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Latest document date, inclusive."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 100
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}get_sales_registerAnswer
Posted invoices in a date range, oldest first, with tax columns and their totals. Needs an open .khata.
View tool JSON
{
"name": "get_sales_register",
"kind": "answer",
"impl": "imperative",
"description": "Posted invoices in a date range, oldest first, with tax columns and their totals. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"from",
"to"
],
"additionalProperties": false
},
"page": "/"
}get_purchase_registerAnswer
Posted purchases in a date range, oldest first, with tax columns and their totals. Needs an open .khata.
View tool JSON
{
"name": "get_purchase_register",
"kind": "answer",
"impl": "imperative",
"description": "Posted purchases in a date range, oldest first, with tax columns and their totals. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"from",
"to"
],
"additionalProperties": false
},
"page": "/"
}get_pnlAnswer
Income less expense over every posting, per account, with totals and net profit. Labels are the account names frozen at posting. Needs an open .khata.
View tool JSON
{
"name": "get_pnl",
"kind": "answer",
"impl": "imperative",
"description": "Income less expense over every posting, per account, with totals and net profit. Labels are the account names frozen at posting. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
},
"page": "/"
}get_dashboardAnswer
The dashboard's figures: cash flow, the current GST liability, receivables aging, top customers by outstanding, and recent activity. Needs an open .khata.
View tool JSON
{
"name": "get_dashboard",
"kind": "answer",
"impl": "imperative",
"description": "The dashboard's figures: cash flow, the current GST liability, receivables aging, top customers by outstanding, and recent activity. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"topCustomers": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 5
},
"recentActivity": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 10
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}list_stock_movementsAnswer
Every stock movement in a date range, newest first. Needs an open .khata.
View tool JSON
{
"name": "list_stock_movements",
"kind": "answer",
"impl": "imperative",
"description": "Every stock movement in a date range, newest first. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"itemId": {
"type": "integer",
"minimum": 1
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 5000,
"default": 1000
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"required": [
"from",
"to"
],
"additionalProperties": false
},
"page": "/"
}get_stock_registerAnswer
One item's movements over a date range, oldest first. Quantities are signed: issues are negative. Needs an open .khata.
View tool JSON
{
"name": "get_stock_register",
"kind": "answer",
"impl": "imperative",
"description": "One item's movements over a date range, oldest first. Quantities are signed: issues are negative. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"itemId": {
"type": "integer",
"minimum": 1
},
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"itemId",
"from",
"to"
],
"additionalProperties": false
},
"page": "/"
}list_batchesAnswer
Batches that still hold stock, by item, with expiry and remaining quantity and value. Needs an open .khata.
View tool JSON
{
"name": "list_batches",
"kind": "answer",
"impl": "imperative",
"description": "Batches that still hold stock, by item, with expiry and remaining quantity and value. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"itemId": {
"type": "integer",
"minimum": 1,
"description": "Only this item's batches."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 500
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}get_reorder_alertsAnswer
Items at or below their reorder level, with how short each one is and its preferred vendor. Needs an open .khata.
View tool JSON
{
"name": "get_reorder_alerts",
"kind": "answer",
"impl": "imperative",
"description": "Items at or below their reorder level, with how short each one is and its preferred vendor. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
},
"page": "/"
}get_stock_agingAnswer
Batches with stock, bucketed by age as of today: 0–30, 31–60, 61–90 and over 90 days. Needs an open .khata.
View tool JSON
{
"name": "get_stock_aging",
"kind": "answer",
"impl": "imperative",
"description": "Batches with stock, bucketed by age as of today: 0–30, 31–60, 61–90 and over 90 days. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
},
"page": "/"
}get_inventory_summaryAnswer
The inventory dashboard: total stock value, items valued, items to reorder, expired batches still holding stock, and the aging buckets' totals. Needs an open .khata.
View tool JSON
{
"name": "get_inventory_summary",
"kind": "answer",
"impl": "imperative",
"description": "The inventory dashboard: total stock value, items valued, items to reorder, expired batches still holding stock, and the aging buckets' totals. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
},
"page": "/"
}list_godownsAnswer
Active godowns, the default first. Needs an open .khata.
View tool JSON
{
"name": "list_godowns",
"kind": "answer",
"impl": "imperative",
"description": "Active godowns, the default first. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
},
"page": "/"
}list_invoice_seriesAnswer
Invoice number series with prefix, suffix, starting number, FY reset and what each is the default for. Needs an open .khata.
View tool JSON
{
"name": "list_invoice_series",
"kind": "answer",
"impl": "imperative",
"description": "Invoice number series with prefix, suffix, starting number, FY reset and what each is the default for. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
},
"page": "/"
}get_cmp08Answer
CMP-08 for a quarter: aggregate turnover from posted invoices and tax at the composition rate. Refused when the composition scheme is off, as the screen does. Needs an open .khata.
View tool JSON
{
"name": "get_cmp08",
"kind": "answer",
"impl": "imperative",
"description": "CMP-08 for a quarter: aggregate turnover from posted invoices and tax at the composition rate. Refused when the composition scheme is off, as the screen does. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"fyStartYear": {
"type": "integer",
"minimum": 2000,
"maximum": 2200,
"description": "2025 for FY 2025-26."
},
"quarter": {
"type": "integer",
"minimum": 1,
"maximum": 4,
"description": "Q1 = Apr–Jun … Q4 = Jan–Mar."
}
},
"required": [
"fyStartYear",
"quarter"
],
"additionalProperties": false
},
"page": "/"
}get_form27eqAnswer
Quarterly TCS return data (Form 27EQ up to FY 2025-26, Form 143 from FY 2026-27), with the validation errors the screen shows. Needs an open .khata.
View tool JSON
{
"name": "get_form27eq",
"kind": "answer",
"impl": "imperative",
"description": "Quarterly TCS return data (Form 27EQ up to FY 2025-26, Form 143 from FY 2026-27), with the validation errors the screen shows. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"fyStartYear": {
"type": "integer",
"minimum": 2000,
"maximum": 2200,
"description": "2025 for FY 2025-26."
},
"quarter": {
"type": "integer",
"minimum": 1,
"maximum": 4,
"description": "Q1 = Apr–Jun … Q4 = Jan–Mar."
}
},
"required": [
"fyStartYear",
"quarter"
],
"additionalProperties": false
},
"page": "/"
}get_form27d_summaryAnswer
TDS per vendor for a quarter: the figures each TDS certificate carries (Form 16A, Form 131 from FY 2026-27). The tool keeps its old name; Form 27D is the TCS certificate. The PDF itself is the screen's. Needs an open .khata.
View tool JSON
{
"name": "get_form27d_summary",
"kind": "answer",
"impl": "imperative",
"description": "TDS per vendor for a quarter: the figures each TDS certificate carries (Form 16A, Form 131 from FY 2026-27). The tool keeps its old name; Form 27D is the TCS certificate. The PDF itself is the screen's. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"fyStartYear": {
"type": "integer",
"minimum": 2000,
"maximum": 2200,
"description": "2025 for FY 2025-26."
},
"quarter": {
"type": "integer",
"minimum": 1,
"maximum": 4,
"description": "Q1 = Apr–Jun … Q4 = Jan–Mar."
}
},
"required": [
"fyStartYear",
"quarter"
],
"additionalProperties": false
},
"page": "/"
}list_tax_sectionsAnswer
TDS or TCS sections in force on a date, each with its id, return code, section reference, rates (individual, other, no PAN) and thresholds. From 2026-04-01 these are the Income-tax Act, 2025 sections; old ids such as 194C resolve to them by date.
View tool JSON
{
"name": "list_tax_sections",
"kind": "answer",
"impl": "imperative",
"description": "TDS or TCS sections in force on a date, each with its id, return code, section reference, rates (individual, other, no PAN) and thresholds. From 2026-04-01 these are the Income-tax Act, 2025 sections; old ids such as 194C resolve to them by date.",
"inputSchema": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"tds",
"tcs"
]
},
"date": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Defaults to today."
}
},
"required": [
"kind"
],
"additionalProperties": false
},
"page": "/"
}lookup_gst_rateAnswer
The GST rate bands in force on a date and, given an HSN/SAC code, the rate the reference table assigns it then. Pass the rate on as taxRate.
View tool JSON
{
"name": "lookup_gst_rate",
"kind": "answer",
"impl": "imperative",
"description": "The GST rate bands in force on a date and, given an HSN/SAC code, the rate the reference table assigns it then. Pass the rate on as taxRate.",
"inputSchema": {
"type": "object",
"properties": {
"hsnSac": {
"type": "string",
"maxLength": 20
},
"date": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Defaults to today."
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}list_challan_templatesAnswer
The tax-payment challan templates Bahi prepares data sheets for.
View tool JSON
{
"name": "list_challan_templates",
"kind": "answer",
"impl": "imperative",
"description": "The tax-payment challan templates Bahi prepares data sheets for.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
},
"page": "/"
}get_challan_templateAnswer
The data sheet for one challan, prefilled with the company's identity. Bahi submits nothing; the person takes it to the portal. Needs an open .khata.
View tool JSON
{
"name": "get_challan_template",
"kind": "answer",
"impl": "imperative",
"description": "The data sheet for one challan, prefilled with the company's identity. Bahi submits nothing; the person takes it to the portal. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"maxLength": 20,
"enum": [
"PMT-06",
"DRC-03",
"ITNS-280",
"ITNS-281",
"ITNS-282",
"ITNS-283",
"ECR",
"ESI",
"PTRC",
"LWF",
"CUSTOM"
]
}
},
"required": [
"code"
],
"additionalProperties": false
},
"page": "/"
}list_bank_accountsAnswer
Bank and cash accounts, by id, as the reconciliation screen lists them. Needs an open .khata.
View tool JSON
{
"name": "list_bank_accounts",
"kind": "answer",
"impl": "imperative",
"description": "Bank and cash accounts, by id, as the reconciliation screen lists them. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
},
"page": "/"
}get_bank_reconciliationAnswer
One bank account's ledger lines over a period with their cleared status, the book balance for the period, and the last saved reconciliation. Needs an open .khata.
View tool JSON
{
"name": "get_bank_reconciliation",
"kind": "answer",
"impl": "imperative",
"description": "One bank account's ledger lines over a period with their cleared status, the book balance for the period, and the last saved reconciliation. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"accountId": {
"type": "integer",
"minimum": 1
},
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"accountId",
"from",
"to"
],
"additionalProperties": false
},
"page": "/"
}list_annotationsAnswer
CA annotations on entries and documents, newest first. Needs an open .khata.
View tool JSON
{
"name": "list_annotations",
"kind": "answer",
"impl": "imperative",
"description": "CA annotations on entries and documents, newest first. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"status": {
"type": "string",
"maxLength": 20,
"enum": [
"open",
"resolved"
]
},
"targetType": {
"type": "string",
"maxLength": 40
},
"targetId": {
"type": "integer",
"minimum": 1
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}create_customerAction
Add a customer. A GSTIN, when given, must be well formed and agree with the state. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "create_customer",
"kind": "act",
"impl": "imperative",
"description": "Add a customer. A GSTIN, when given, must be well formed and agree with the state. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"gstin": {
"type": "string",
"maxLength": 15,
"description": "GSTIN; its first two digits must match the state."
},
"pan": {
"type": "string",
"maxLength": 10,
"description": "PAN, e.g. ABCPE1234F. Taken from the GSTIN when omitted; must match it when both are given. TDS and TCS rates depend on it."
},
"state": {
"type": "string",
"maxLength": 2,
"pattern": "^([A-Z]{2})?$",
"description": "Two-letter state code, e.g. MH. An empty string clears it."
},
"email": {
"type": "string",
"maxLength": 200
},
"phone": {
"type": "string",
"maxLength": 40
},
"address": {
"type": "string",
"maxLength": 500
},
"openingBalance": {
"type": "integer",
"minimum": -2147483647,
"maximum": 2147483647,
"description": "Opening balance in integer paise."
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"name"
],
"additionalProperties": false
},
"page": "/"
}update_customerAction
Change a customer's details. Fields left out keep their values; an empty string clears one. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "update_customer",
"kind": "act",
"impl": "imperative",
"description": "Change a customer's details. Fields left out keep their values; an empty string clears one. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"customerId": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"gstin": {
"type": "string",
"maxLength": 15,
"description": "GSTIN; its first two digits must match the state."
},
"pan": {
"type": "string",
"maxLength": 10,
"description": "PAN, e.g. ABCPE1234F. Taken from the GSTIN when omitted; must match it when both are given. TDS and TCS rates depend on it."
},
"state": {
"type": "string",
"maxLength": 2,
"pattern": "^([A-Z]{2})?$",
"description": "Two-letter state code, e.g. MH. An empty string clears it."
},
"email": {
"type": "string",
"maxLength": 200
},
"phone": {
"type": "string",
"maxLength": 40
},
"address": {
"type": "string",
"maxLength": 500
},
"openingBalance": {
"type": "integer",
"minimum": -2147483647,
"maximum": 2147483647,
"description": "Opening balance in integer paise."
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"customerId"
],
"additionalProperties": false
},
"page": "/"
}create_vendorAction
Add a vendor, with its reverse-charge flag and default TDS section. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "create_vendor",
"kind": "act",
"impl": "imperative",
"description": "Add a vendor, with its reverse-charge flag and default TDS section. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"gstin": {
"type": "string",
"maxLength": 15,
"description": "GSTIN; its first two digits must match the state."
},
"pan": {
"type": "string",
"maxLength": 10,
"description": "PAN, e.g. ABCPE1234F. Taken from the GSTIN when omitted; must match it when both are given. TDS and TCS rates depend on it."
},
"state": {
"type": "string",
"maxLength": 2,
"pattern": "^([A-Z]{2})?$",
"description": "Two-letter state code, e.g. MH. An empty string clears it."
},
"email": {
"type": "string",
"maxLength": 200
},
"phone": {
"type": "string",
"maxLength": 40
},
"address": {
"type": "string",
"maxLength": 500
},
"openingBalance": {
"type": "integer",
"minimum": -2147483647,
"maximum": 2147483647,
"description": "Opening balance in integer paise."
},
"rcmApplicable": {
"type": "boolean",
"description": "True when the vendor's supplies fall under reverse charge."
},
"tdsSection": {
"type": "string",
"maxLength": 20,
"description": "Default TDS section id from list_tax_sections, e.g. 1023 (contractors, Income-tax Act 2025). An old-Act id such as 194C still works: each payment resolves it to the section in force on its date."
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"name"
],
"additionalProperties": false
},
"page": "/"
}update_vendorAction
Change a vendor's details. Fields left out keep their values; an empty string clears one. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "update_vendor",
"kind": "act",
"impl": "imperative",
"description": "Change a vendor's details. Fields left out keep their values; an empty string clears one. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"vendorId": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"gstin": {
"type": "string",
"maxLength": 15,
"description": "GSTIN; its first two digits must match the state."
},
"pan": {
"type": "string",
"maxLength": 10,
"description": "PAN, e.g. ABCPE1234F. Taken from the GSTIN when omitted; must match it when both are given. TDS and TCS rates depend on it."
},
"state": {
"type": "string",
"maxLength": 2,
"pattern": "^([A-Z]{2})?$",
"description": "Two-letter state code, e.g. MH. An empty string clears it."
},
"email": {
"type": "string",
"maxLength": 200
},
"phone": {
"type": "string",
"maxLength": 40
},
"address": {
"type": "string",
"maxLength": 500
},
"openingBalance": {
"type": "integer",
"minimum": -2147483647,
"maximum": 2147483647,
"description": "Opening balance in integer paise."
},
"rcmApplicable": {
"type": "boolean",
"description": "True when the vendor's supplies fall under reverse charge."
},
"tdsSection": {
"type": "string",
"maxLength": 20,
"description": "Default TDS section id from list_tax_sections, e.g. 1023 (contractors, Income-tax Act 2025). An old-Act id such as 194C still works: each payment resolves it to the section in force on its date."
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"vendorId"
],
"additionalProperties": false
},
"page": "/"
}create_itemAction
Add an item or service. A goods item with inventory and an opening quantity posts its opening stock into the default godown. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "create_item",
"kind": "act",
"impl": "imperative",
"description": "Add an item or service. A goods item with inventory and an opening quantity posts its opening stock into the default godown. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"isService": {
"type": "boolean"
},
"hsnSac": {
"type": "string",
"maxLength": 20
},
"unit": {
"type": "string",
"maxLength": 20
},
"defaultRate": {
"type": "integer",
"minimum": 0,
"maximum": 2147483647,
"description": "Default price per unit in integer paise."
},
"taxRate": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "GST rate as a decimal fraction: 0.18 for 18%."
},
"enableInventory": {
"type": "boolean",
"description": "Track stock for this item (goods only)."
},
"valuationMethod": {
"type": "string",
"maxLength": 4,
"enum": [
"wac",
"fifo"
]
},
"trackBatches": {
"type": "boolean"
},
"reorderLevel": {
"type": "integer",
"minimum": 0,
"maximum": 100000000
},
"preferredVendorId": {
"type": "integer",
"minimum": 0,
"description": "Vendor id; 0 clears it."
},
"openingQty": {
"type": "integer",
"minimum": 0,
"maximum": 100000000,
"description": "Opening stock quantity. Only on creation, or while the item has no movements."
},
"openingValue": {
"type": "integer",
"minimum": 0,
"maximum": 2147483647,
"description": "Opening stock value in integer paise."
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"name"
],
"additionalProperties": false
},
"page": "/"
}update_itemAction
Change an item. Opening stock changes only while the item has no stock movements, as in the item form. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "update_item",
"kind": "act",
"impl": "imperative",
"description": "Change an item. Opening stock changes only while the item has no stock movements, as in the item form. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"itemId": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"isService": {
"type": "boolean"
},
"hsnSac": {
"type": "string",
"maxLength": 20
},
"unit": {
"type": "string",
"maxLength": 20
},
"defaultRate": {
"type": "integer",
"minimum": 0,
"maximum": 2147483647,
"description": "Default price per unit in integer paise."
},
"taxRate": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "GST rate as a decimal fraction: 0.18 for 18%."
},
"enableInventory": {
"type": "boolean",
"description": "Track stock for this item (goods only)."
},
"valuationMethod": {
"type": "string",
"maxLength": 4,
"enum": [
"wac",
"fifo"
]
},
"trackBatches": {
"type": "boolean"
},
"reorderLevel": {
"type": "integer",
"minimum": 0,
"maximum": 100000000
},
"preferredVendorId": {
"type": "integer",
"minimum": 0,
"description": "Vendor id; 0 clears it."
},
"openingQty": {
"type": "integer",
"minimum": 0,
"maximum": 100000000,
"description": "Opening stock quantity. Only on creation, or while the item has no movements."
},
"openingValue": {
"type": "integer",
"minimum": 0,
"maximum": 2147483647,
"description": "Opening stock value in integer paise."
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"itemId"
],
"additionalProperties": false
},
"page": "/"
}create_bank_accountAction
Add a bank account under Bank Accounts, for receipts and payments. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "create_bank_account",
"kind": "act",
"impl": "imperative",
"description": "Add a bank account under Bank Accounts, for receipts and payments. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"name"
],
"additionalProperties": false
},
"page": "/"
}create_invoice_seriesAction
Add an invoice number series: prefix, suffix, starting number and FY reset. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "create_invoice_series",
"kind": "act",
"impl": "imperative",
"description": "Add an invoice number series: prefix, suffix, starting number and FY reset. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 60
},
"prefix": {
"type": "string",
"maxLength": 30
},
"suffix": {
"type": "string",
"maxLength": 30
},
"startingNumber": {
"type": "integer",
"minimum": 1,
"maximum": 100000000
},
"resetOnFy": {
"type": "boolean"
},
"defaultFor": {
"type": "string",
"maxLength": 20,
"enum": [
"",
"domestic",
"export",
"sez-wp",
"sez-wop",
"bos",
"credit-note"
],
"description": "The document kind this series numbers by default; an empty string for none."
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"name",
"prefix"
],
"additionalProperties": false
},
"page": "/"
}update_invoice_seriesAction
Change an invoice series. Fields left out keep their values. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "update_invoice_series",
"kind": "act",
"impl": "imperative",
"description": "Change an invoice series. Fields left out keep their values. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"seriesId": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string",
"maxLength": 60
},
"prefix": {
"type": "string",
"maxLength": 30
},
"suffix": {
"type": "string",
"maxLength": 30
},
"startingNumber": {
"type": "integer",
"minimum": 1,
"maximum": 100000000
},
"resetOnFy": {
"type": "boolean"
},
"defaultFor": {
"type": "string",
"maxLength": 20,
"enum": [
"",
"domestic",
"export",
"sez-wp",
"sez-wop",
"bos",
"credit-note"
],
"description": "The document kind this series numbers by default; an empty string for none."
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"seriesId"
],
"additionalProperties": false
},
"page": "/"
}create_godownAction
Add a godown or warehouse. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "create_godown",
"kind": "act",
"impl": "imperative",
"description": "Add a godown or warehouse. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"address": {
"type": "string",
"maxLength": 500
},
"state": {
"type": "string",
"maxLength": 2,
"pattern": "^([A-Z]{2})?$",
"description": "Two-letter state code, e.g. MH. An empty string clears it."
},
"isDefault": {
"type": "boolean",
"description": "Make this the default godown; the previous default stops being one."
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"name"
],
"additionalProperties": false
},
"page": "/"
}update_godownAction
Change a godown. Fields left out keep their values. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "update_godown",
"kind": "act",
"impl": "imperative",
"description": "Change a godown. Fields left out keep their values. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"godownId": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"address": {
"type": "string",
"maxLength": 500
},
"state": {
"type": "string",
"maxLength": 2,
"pattern": "^([A-Z]{2})?$",
"description": "Two-letter state code, e.g. MH. An empty string clears it."
},
"isDefault": {
"type": "boolean",
"description": "Make this the default godown; the previous default stops being one."
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"godownId"
],
"additionalProperties": false
},
"page": "/"
}update_companyAction
Change the company's identity, address, FY start or composition scheme. Every changed field gets its own audit entry and history row. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "update_company",
"kind": "act",
"impl": "imperative",
"description": "Change the company's identity, address, FY start or composition scheme. Every changed field gets its own audit entry and history row. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"tradeName": {
"type": "string",
"maxLength": 200
},
"companyType": {
"type": "string",
"maxLength": 30,
"enum": [
"",
"proprietorship",
"partnership",
"llp",
"private-limited",
"public-limited",
"huf",
"other"
]
},
"gstin": {
"type": "string",
"maxLength": 15
},
"tan": {
"type": "string",
"maxLength": 10
},
"state": {
"type": "string",
"maxLength": 2,
"pattern": "^([A-Z]{2})?$",
"description": "Two-letter state code, e.g. MH. An empty string clears it."
},
"address": {
"type": "string",
"maxLength": 500
},
"fyStart": {
"type": "string",
"maxLength": 10,
"pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
"description": "Financial-year start date, YYYY-MM-DD."
},
"compositionEnabled": {
"type": "boolean"
},
"compositionType": {
"type": "string",
"maxLength": 12,
"enum": [
"trader",
"restaurant",
"service"
]
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}create_advanceAction
Record a customer advance received before supply. The amount is gross of GST: the taxable value is backed out at taxRate and the tax split CGST+SGST intra-state, IGST inter-state. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "create_advance",
"kind": "act",
"impl": "imperative",
"description": "Record a customer advance received before supply. The amount is gross of GST: the taxable value is backed out at taxRate and the tax split CGST+SGST intra-state, IGST inter-state. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"customerId": {
"type": "integer",
"minimum": 1
},
"bankAccountId": {
"type": "integer",
"minimum": 1,
"description": "Bank or cash account id from list_bank_accounts."
},
"amount": {
"type": "integer",
"minimum": 1,
"maximum": 2147483647,
"description": "Amount received, including GST, in integer paise."
},
"taxRate": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "GST rate as a decimal fraction; 0.18 for 18%."
},
"natureOfSupply": {
"type": "string",
"maxLength": 10,
"enum": [
"services",
"goods"
]
},
"placeOfSupply": {
"type": "string",
"maxLength": 2,
"pattern": "^([A-Z]{2})?$",
"description": "Two-letter state code, e.g. MH. An empty string clears it."
},
"paymentMode": {
"type": "string",
"maxLength": 10,
"enum": [
"cash",
"cheque",
"neft",
"rtgs",
"imps",
"upi",
"card",
"other"
]
},
"advanceDate": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Defaults to today."
},
"advanceNumber": {
"type": "string",
"maxLength": 60,
"description": "Generated when omitted."
},
"reference": {
"type": "string",
"maxLength": 120
},
"notes": {
"type": "string",
"maxLength": 2000
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"customerId",
"bankAccountId",
"amount"
],
"additionalProperties": false
},
"page": "/"
}create_vendor_paymentSensitive Action
Pay a vendor, withholding TDS when a section applies: Dr Sundry Creditors (gross) / Cr Bank (net) / Cr TDS Payable. Records the Form 26Q deduction. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "create_vendor_payment",
"kind": "transact",
"impl": "imperative",
"description": "Pay a vendor, withholding TDS when a section applies: Dr Sundry Creditors (gross) / Cr Bank (net) / Cr TDS Payable. Records the Form 26Q deduction. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"vendorId": {
"type": "integer",
"minimum": 1
},
"bankAccountId": {
"type": "integer",
"minimum": 1
},
"amount": {
"type": "integer",
"minimum": 1,
"maximum": 2147483647,
"description": "Gross amount before TDS, in integer paise."
},
"tdsSection": {
"type": "string",
"maxLength": 20,
"description": "TDS section id from list_tax_sections, e.g. 1023. An old-Act id (194C) resolves to the section in force on the payment date. Empty or omitted for none."
},
"tdsRate": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Overrides the section's rate; decimal fraction."
},
"paymentMode": {
"type": "string",
"maxLength": 10,
"enum": [
"neft",
"rtgs",
"imps",
"upi",
"cheque",
"cash"
]
},
"paymentDate": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Defaults to today."
},
"paymentNumber": {
"type": "string",
"maxLength": 60,
"description": "Generated when omitted."
},
"reference": {
"type": "string",
"maxLength": 120
},
"notes": {
"type": "string",
"maxLength": 2000
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"vendorId",
"bankAccountId",
"amount"
],
"additionalProperties": false
},
"page": "/"
}create_tcs_collectionAction
Record TCS collected from a customer: the Form 27EQ row and Dr Sundry Debtors / Cr TCS Payable. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "create_tcs_collection",
"kind": "act",
"impl": "imperative",
"description": "Record TCS collected from a customer: the Form 27EQ row and Dr Sundry Debtors / Cr TCS Payable. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"customerId": {
"type": "integer",
"minimum": 1
},
"section": {
"type": "string",
"maxLength": 20,
"description": "TCS section id from list_tax_sections, in force on the collection date."
},
"taxableAmount": {
"type": "integer",
"minimum": 1,
"maximum": 2147483647
},
"rate": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Overrides the section's rate; decimal fraction."
},
"collectionDate": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Defaults to today."
},
"invoiceId": {
"type": "integer",
"minimum": 1,
"description": "The invoice the collection relates to, if any."
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"customerId",
"section",
"taxableAmount"
],
"additionalProperties": false
},
"page": "/"
}create_delivery_challanAction
Goods leaving or returning without a sale. Moves stock; posts no ledger entry. outward-return names a vendor; the other types name a customer. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "create_delivery_challan",
"kind": "act",
"impl": "imperative",
"description": "Goods leaving or returning without a sale. Moves stock; posts no ledger entry. outward-return names a vendor; the other types name a customer. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"challanType": {
"type": "string",
"maxLength": 20,
"enum": [
"outward-job",
"outward-sample",
"outward-return",
"inward-return"
]
},
"customerId": {
"type": "integer",
"minimum": 1
},
"vendorId": {
"type": "integer",
"minimum": 1
},
"lines": {
"type": "array",
"minItems": 1,
"maxItems": 500,
"items": {
"type": "object",
"properties": {
"itemId": {
"type": "integer",
"minimum": 1
},
"description": {
"type": "string",
"maxLength": 500
},
"quantity": {
"type": "integer",
"minimum": 1
}
},
"required": [
"itemId",
"quantity"
]
}
},
"challanDate": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Defaults to today."
},
"challanNumber": {
"type": "string",
"maxLength": 60,
"description": "Generated when omitted."
},
"destination": {
"type": "string",
"maxLength": 200
},
"vehicleNo": {
"type": "string",
"maxLength": 20
},
"transporter": {
"type": "string",
"maxLength": 200
},
"reason": {
"type": "string",
"maxLength": 200
},
"isReturnable": {
"type": "boolean"
},
"expectedReturnDate": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"notes": {
"type": "string",
"maxLength": 2000
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"lines"
],
"additionalProperties": false
},
"page": "/"
}create_eway_billAction
Draft an e-way bill from a posted invoice or a delivery challan. The portal issues the number; record it with record_eway_bill_number. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "create_eway_bill",
"kind": "act",
"impl": "imperative",
"description": "Draft an e-way bill from a posted invoice or a delivery challan. The portal issues the number; record it with record_eway_bill_number. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"sourceType": {
"type": "string",
"maxLength": 20,
"enum": [
"invoice",
"delivery-challan"
]
},
"sourceId": {
"type": "integer",
"minimum": 1
},
"transporterName": {
"type": "string",
"maxLength": 200
},
"transporterId": {
"type": "string",
"maxLength": 20
},
"vehicleNo": {
"type": "string",
"maxLength": 20
},
"vehicleType": {
"type": "string",
"maxLength": 20,
"enum": [
"regular",
"over-dimensional"
]
},
"mode": {
"type": "string",
"maxLength": 10,
"enum": [
"road",
"rail",
"air",
"ship"
]
},
"distanceKm": {
"type": "integer",
"minimum": 0,
"maximum": 10000
},
"reasonCode": {
"type": "string",
"maxLength": 2,
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"8"
]
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"sourceType",
"sourceId"
],
"additionalProperties": false
},
"page": "/"
}record_eway_bill_numberAction
Record the number the e-way bill portal issued for a draft; the bill becomes generated. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "record_eway_bill_number",
"kind": "act",
"impl": "imperative",
"description": "Record the number the e-way bill portal issued for a draft; the bill becomes generated. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"ewbId": {
"type": "integer",
"minimum": 1
},
"ewbNumber": {
"type": "string",
"maxLength": 20
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"ewbId",
"ewbNumber"
],
"additionalProperties": false
},
"page": "/"
}create_stock_transferAction
Record an outbound inter-GSTIN stock transfer with IGST per line. Returns the payload the receiving branch imports; saving it as a file is the person's. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "create_stock_transfer",
"kind": "act",
"impl": "imperative",
"description": "Record an outbound inter-GSTIN stock transfer with IGST per line. Returns the payload the receiving branch imports; saving it as a file is the person's. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"toGstin": {
"type": "string",
"maxLength": 15
},
"toState": {
"type": "string",
"maxLength": 2,
"pattern": "^[A-Z]{2}$"
},
"lines": {
"type": "array",
"minItems": 1,
"maxItems": 500,
"items": {
"type": "object",
"properties": {
"itemId": {
"type": "integer",
"minimum": 1
},
"quantity": {
"type": "number",
"exclusiveMinimum": 0
},
"rate": {
"type": "integer",
"minimum": 0,
"description": "Integer paise per unit."
},
"taxRate": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"itemId",
"quantity",
"rate"
]
}
},
"transferDate": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Defaults to today."
},
"transferNumber": {
"type": "string",
"maxLength": 60,
"description": "Generated when omitted."
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"toGstin",
"toState",
"lines"
],
"additionalProperties": false
},
"page": "/"
}save_bank_reconciliationAction
Save a reconciliation of one bank account over a period: the ledger lines cleared against the statement and the statement's closing balance. Bahi works out the book balance, the uncleared totals and the difference. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "save_bank_reconciliation",
"kind": "act",
"impl": "imperative",
"description": "Save a reconciliation of one bank account over a period: the ledger lines cleared against the statement and the statement's closing balance. Bahi works out the book balance, the uncleared totals and the difference. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"accountId": {
"type": "integer",
"minimum": 1
},
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Reconciled through this date."
},
"statementBalance": {
"type": "integer",
"minimum": -2147483647,
"maximum": 2147483647,
"description": "Closing balance per the bank statement, integer paise."
},
"clearedLineIds": {
"type": "array",
"maxItems": 20000,
"items": {
"type": "integer",
"minimum": 1
},
"description": "line_id values from get_bank_reconciliation that the statement shows."
},
"notes": {
"type": "string",
"maxLength": 2000
},
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [
"accountId",
"from",
"to",
"statementBalance"
],
"additionalProperties": false
},
"page": "/"
}save_snapshotAction
Save the books and keep the previous on-disk state as a manual snapshot inside the .khata, retained indefinitely. Waits for the person's approval: returns {status:"pending_approval", proposalId}; call get_proposal for the outcome. Needs an open .khata.
View tool JSON
{
"name": "save_snapshot",
"kind": "act",
"impl": "imperative",
"description": "Save the books and keep the previous on-disk state as a manual snapshot inside the .khata, retained indefinitely. Waits for the person's approval: returns {status:\"pending_approval\", proposalId}; call get_proposal for the outcome. Needs an open .khata.",
"inputSchema": {
"type": "object",
"properties": {
"agentName": {
"type": "string",
"maxLength": 60,
"pattern": "^[A-Za-z0-9._-]{1,60}$",
"description": "Your name for the audit log: the actor becomes agent:<agentName>. Letters, digits, dot, dash and underscore only."
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}set_themeAction
Switch this browser's colour theme. A local preference; the books are untouched.
View tool JSON
{
"name": "set_theme",
"kind": "act",
"impl": "imperative",
"description": "Switch this browser's colour theme. A local preference; the books are untouched.",
"inputSchema": {
"type": "object",
"properties": {
"theme": {
"type": "string",
"maxLength": 20,
"enum": [
"crisp-paper",
"sakura-wash",
"asagi-haze",
"kinari-washi",
"sumi"
]
}
},
"required": [
"theme"
],
"additionalProperties": false
},
"page": "/"
}list_proposalsAnswer
Proposals staged in this tab, newest first, with their status: pending, applied, rejected, withdrawn or failed.
View tool JSON
{
"name": "list_proposals",
"kind": "answer",
"impl": "imperative",
"description": "Proposals staged in this tab, newest first, with their status: pending, applied, rejected, withdrawn or failed.",
"inputSchema": {
"type": "object",
"properties": {
"status": {
"type": "string",
"maxLength": 20,
"enum": [
"pending",
"applied",
"rejected",
"withdrawn",
"failed"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 500,
"default": 50
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}get_proposalAnswer
One proposal: its status and, once applied, its result (for example the new invoiceId).
View tool JSON
{
"name": "get_proposal",
"kind": "answer",
"impl": "imperative",
"description": "One proposal: its status and, once applied, its result (for example the new invoiceId).",
"inputSchema": {
"type": "object",
"properties": {
"proposalId": {
"type": "string",
"maxLength": 80
}
},
"required": [
"proposalId"
],
"additionalProperties": false
},
"page": "/"
}withdraw_proposalAction
Take back a pending proposal so the person no longer sees it.
View tool JSON
{
"name": "withdraw_proposal",
"kind": "act",
"impl": "imperative",
"description": "Take back a pending proposal so the person no longer sees it.",
"inputSchema": {
"type": "object",
"properties": {
"proposalId": {
"type": "string",
"maxLength": 80
}
},
"required": [
"proposalId"
],
"additionalProperties": false
},
"page": "/"
}list_routesAnswer
Every UI route with its group, keywords and actions — the first door's index.
View tool JSON
{
"name": "list_routes",
"kind": "answer",
"impl": "imperative",
"description": "Every UI route with its group, keywords and actions — the first door's index.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
},
"page": "/"
}navigateAction
Show a UI route in this tab. The route must exist in list_routes.
View tool JSON
{
"name": "navigate",
"kind": "act",
"impl": "imperative",
"description": "Show a UI route in this tab. The route must exist in list_routes.",
"inputSchema": {
"type": "object",
"properties": {
"route": {
"type": "string",
"maxLength": 80
}
},
"required": [
"route"
],
"additionalProperties": false
},
"page": "/"
}