{"ok":true,"site":{"host":"bahi.naklitechie.com","url":"https://bahi.naklitechie.com/#/workspace","type":"live","desc":"Double-entry books for an Indian business in one browser tab: invoices, GST returns, TDS and TCS, inventory and your CA's review, kept in one file on your own disk.","tools":[{"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.","title":"Describe Bahi tools","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get status","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"run_selftest","kind":"act","impl":"imperative","description":"Declaration, handler, door and route parity assertions. The check that guards this surface.","title":"Run the agent-face self-test","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get file info","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Save the books","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"verify_integrity","kind":"act","impl":"imperative","description":"Walk the audit hash chain and verify every ECDSA signature. Needs an open .khata.","title":"Verify integrity","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"List audit entries","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":500,"default":20},"includePayload":{"type":"boolean","default":false}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_customers","kind":"answer","impl":"imperative","description":"Customers, paged. Archived ones are hidden unless includeArchived, as in the UI. Needs an open .khata.","title":"List customers","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_vendors","kind":"answer","impl":"imperative","description":"Vendors, paged, with their RCM and TDS settings. Needs an open .khata.","title":"List vendors","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"List items and services","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"List accounts","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get trial balance","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get balance sheet","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"asOf":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"get_day_book","kind":"answer","impl":"imperative","description":"Every voucher posted in a date range, both ends inclusive. Needs an open .khata.","title":"Get day book","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"get_account_ledger","kind":"answer","impl":"imperative","description":"One account's ledger lines over a date range. Needs an open .khata.","title":"Get account ledger","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"get_receivables_aging","kind":"answer","impl":"imperative","description":"Receivables aged into buckets as of a date (default today). Needs an open .khata.","title":"Get receivables aging","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"asOf":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"get_stock_on_hand","kind":"answer","impl":"imperative","description":"Closing stock per item per godown. Needs an open .khata.","title":"Get stock on hand","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"itemId":{"type":"integer","minimum":1},"godownId":{"type":"integer","minimum":1}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get stock valuation","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"asOf":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get GSTR-1 data","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"get_gstr3b","kind":"answer","impl":"imperative","description":"GSTR-3B summary for a period, in paise. Needs an open .khata.","title":"Get GSTR-3B summary","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get Form 26Q data","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Post a journal voucher","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Raise a sales invoice","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Record a purchase","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Record a customer receipt","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Raise a credit note","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Raise a debit note","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"List invoices","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_payments","kind":"answer","impl":"imperative","description":"Customer receipts, newest first, with mode, reference and bank account. Needs an open .khata.","title":"List customer receipts","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"List advance receipts","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_purchases","kind":"answer","impl":"imperative","description":"Posted purchases, latest bill date first, with reverse-charge and ITC flags. Needs an open .khata.","title":"List purchases","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_credit_notes","kind":"answer","impl":"imperative","description":"Posted credit notes, latest first, with the invoice each one reverses. Needs an open .khata.","title":"List credit notes","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_debit_notes","kind":"answer","impl":"imperative","description":"Posted debit notes, latest first, with the bill each one reverses. Needs an open .khata.","title":"List debit notes","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_delivery_challans","kind":"answer","impl":"imperative","description":"Delivery challans, latest first, with party, vehicle and return status. Needs an open .khata.","title":"List delivery challans","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_eway_bills","kind":"answer","impl":"imperative","description":"E-way bills, latest first, with the document each one covers. Needs an open .khata.","title":"List e-way bills","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_stock_transfers","kind":"answer","impl":"imperative","description":"Inter-branch stock transfers, latest first, in both directions. Needs an open .khata.","title":"List stock transfers","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get sales register","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get purchase register","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get P&L summary","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get dashboard","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_stock_movements","kind":"answer","impl":"imperative","description":"Every stock movement in a date range, newest first. Needs an open .khata.","title":"List stock movements","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get stock register","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"List batches","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get reorder alerts","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get stock aging","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get inventory summary","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_godowns","kind":"answer","impl":"imperative","description":"Active godowns, the default first. Needs an open .khata.","title":"List godowns","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"List invoice series","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get CMP-08 statement","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get Form 27EQ data","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get Form 27D summary","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"List TDS and TCS sections","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Look up a GST rate","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_challan_templates","kind":"answer","impl":"imperative","description":"The tax-payment challan templates Bahi prepares data sheets for.","title":"List challan templates","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get a challan data sheet","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"List bank accounts","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Get bank reconciliation","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_annotations","kind":"answer","impl":"imperative","description":"CA annotations on entries and documents, newest first. Needs an open .khata.","title":"List annotations","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Add a customer","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Edit a customer","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Add a vendor","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Edit a vendor","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Add an item or service","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Edit an item or service","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Add a bank account","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Add an invoice series","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Edit an invoice series","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Add a godown","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Edit a godown","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Edit company details","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Record an advance receipt","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Pay a vendor","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Record TCS collected","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Raise a delivery challan","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Draft an e-way bill","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Record an e-way bill number","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Send a stock transfer","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Save a bank reconciliation","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"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.","title":"Save a snapshot","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"set_theme","kind":"act","impl":"imperative","description":"Switch this browser's colour theme. A local preference; the books are untouched.","title":"Set the theme","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"theme":{"type":"string","maxLength":20,"enum":["crisp-paper","sakura-wash","asagi-haze","kinari-washi","sumi"]}},"required":["theme"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_proposals","kind":"answer","impl":"imperative","description":"Proposals staged in this tab, newest first, with their status: pending, applied, rejected, withdrawn or failed.","title":"List proposals","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"get_proposal","kind":"answer","impl":"imperative","description":"One proposal: its status and, once applied, its result (for example the new invoiceId).","title":"Get proposal","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"proposalId":{"type":"string","maxLength":80}},"required":["proposalId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"withdraw_proposal","kind":"act","impl":"imperative","description":"Take back a pending proposal so the person no longer sees it.","title":"Withdraw proposal","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"proposalId":{"type":"string","maxLength":80}},"required":["proposalId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_routes","kind":"answer","impl":"imperative","description":"Every UI route with its group, keywords and actions — the first door's index.","title":"List UI routes","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"navigate","kind":"act","impl":"imperative","description":"Show a UI route in this tab. The route must exist in list_routes.","title":"Show a screen","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"route":{"type":"string","maxLength":80}},"required":["route"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]}],"category":"Finance & Crypto","favicon":"/favicons/bahi.naklitechie.com.png","apiSurface":"spec","toolCount":85}}