{"name":"GrowMore","description":"GrowMore is a cloud accounting system for retail shops: double-entry books, warehouses, invoicing, point of sale and reports, one shop per connection. An agent reads the shop's books and prepares or posts its documents (sales, purchases, returns, receipts, payments, stock transfers and counts, manual vouchers) through the same application services the app uses. A document an agent PROPOSES stays a task in progress until a person approves it in the app; a document it POSTS needs the posting key the shop's owner gave this connection. It is NOT for free text: send a structured skill request (a data part naming the skill and its arguments) - a sentence alone is answered with the skills and what each takes. It is not a way around the shop's permissions: what a connection may do is the person's role narrowed by its grant. Two profiles share this server (T-234): the OPERATOR keeps the daily books - documents, stock, cash, cheques, master data - and the CONTROLLER (ضابط الدفاتر) closes them - corrections, the chart, rates, the period closes and the operator's proposals; every skill is tagged profile:operator or profile:controller, a connection sees only its own profile's skills, and each acts only under the owner's keys and daily caps. The controller is not a licensed accountant; the shop's owner keeps the responsibility for the books.","version":"1.0.0","documentationUrl":"https://app.letsgrowmore.app/ai","iconUrl":"https://app.letsgrowmore.app/brand/agent/growmore-192.png","supportedInterfaces":[{"url":"https://app.letsgrowmore.app/a2a","protocolBinding":"JSONRPC","protocolVersion":"1.0"},{"url":"https://app.letsgrowmore.app/a2a/v1","protocolBinding":"HTTP+JSON","protocolVersion":"1.0"}],"capabilities":{"streaming":true,"pushNotifications":true,"extendedAgentCard":true},"provider":{"organization":"GrowMore","url":"https://app.letsgrowmore.app"},"skills":[{"id":"get_shop_context","name":"Get the shop's details","description":"Start here. Returns the shop's functional currency, time zone, content language and today; its default cash box and warehouse; its warehouses, cash boxes (with their currency) and currencies - at most 10 of each, with the total beside the list; the lock date (nothing can be posted on or before it);...","tags":["read","reads","profile:operator","profile:controller"],"examples":["كم بعنا اليوم؟"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"find_party","name":"Find a customer or supplier","description":"Finds customers and suppliers by what the user said, in tiers: the exact code, the exact name, a confirmed alias, the name apart from spelling variants, then names containing the text or spelled close to it. Each row has a handle for party_statement, the tier it matched in (match) and why.","tags":["read","reads","profile:operator","profile:controller"],"examples":["أبو أحمد"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"find_item","name":"Find an item","description":"Finds items by what the user said, in tiers: the exact code, barcode, serial or lot number, the exact name, a confirmed alias, the name apart from spelling variants, then names containing the text or spelled close to it. Each row has a handle for stock_level, the tier it matched in (match) and why.","tags":["read","reads","profile:operator","profile:controller"],"examples":["زيت زيتون"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"find_account","name":"Find a ledger account","description":"Finds the ledger accounts a voucher line can be on, by the words the user said - «كهرباء», «إيجار», «رأس المال» - read word by word against the shop's postable accounts (never a group). Each row has the account's code, name, type, normalSide (debit or credit) and a handle.","tags":["read","reads","profile:operator","profile:controller"],"examples":["كهرباء"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"stock_level","name":"Show stock on hand","description":"Quantity, average cost and value in stock. Give an item (a handle from find_item, its exact code or barcode, or its name) for that item; or a warehouse or an item group to list what it holds (the 50 most valuable rows, with the true count). Use it for «كم باقي من الزيت؟».","tags":["read","reads","profile:operator","profile:controller"],"examples":["كم باقي من الزيت؟"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"trial_balance","name":"Show the trial balance","description":"The trial balance over a period: each account's movement and closing balance, read from the balance tables, in the shop's functional currency. The server says whether it balances.","tags":["read","reads","profile:operator","profile:controller"],"examples":["ميزان المراجعة هذا الشهر"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"profit_and_loss","name":"Show profit and loss","description":"The simplified profit and loss for a range of months, with the previous period beside it: net sales, gross profit, net profit and the accounts behind each section (at most 50 per section). When the cost of goods sold is still provisional the answer says so. Use it for «كم ربحنا هذا الشهر؟».","tags":["read","reads","profile:operator","profile:controller"],"examples":["كم ربحنا هذا الشهر؟"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"balance_sheet","name":"Show the balance sheet","description":"The balance sheet at the end of a day: assets, liabilities and equity (this year's profit and the earlier years' computed), with the server's verdict on whether it balances. Sections hold at most 50 accounts each; each has an account handle for account_statement. Use it for «الميزانية العمومية».","tags":["read","reads","profile:operator","profile:controller"],"examples":["الميزانية العمومية"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"party_statement","name":"Show a customer or supplier statement","description":"A customer's or supplier's statement of account over a period: for each side (receivable, payable) the opening balance, the lines (the latest 50) with a running balance, the totals and the closing balance. Take the party from find_party or a party_balances row (its handle), or give its code or name.","tags":["read","reads","profile:operator","profile:controller"],"examples":["كشف حساب أبو أحمد"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"account_statement","name":"Show an account statement","description":"One account's ledger lines over a period with the opening balance, the period's totals and the closing balance (and its side), 50 lines a page. Take the account from a trial_balance or balance_sheet row (its handle), or give its code or its name.","tags":["read","reads","profile:operator","profile:controller"],"examples":["كشف حساب الصندوق"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"daily_sales","name":"Show daily sales","description":"Sales by day over a range: the number and value of sales, returns and net per day, the range's totals, and how it was paid (cash, card, credit). Days are the shop's own business days. Use it for «كم بعنا اليوم؟». At most 50 days; narrow the range for more.","tags":["read","reads","profile:operator","profile:controller"],"examples":["كم بعنا اليوم؟"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"party_balances","name":"Show customer and supplier balances","description":"Who owes the shop (receivable, customers) or whom the shop owes (payable, suppliers) at the end of a day: the 50 largest non-zero balances with the true count, the server's total and whether it agrees with the ledger's control account. Each row has a party handle for party_statement.","tags":["read","reads","profile:operator","profile:controller"],"examples":["من عليه دين؟"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"find_documents","name":"Find invoices and returns","description":"Lists posted sales and purchase invoices and their returns, newest first, filtered by kind, party, date range or a text in the number or party name. At least one filter is required. Each row has a document handle for get_document and shows what is still owing on credit documents.","tags":["read","reads","profile:operator","profile:controller"],"examples":["فواتير أبو أحمد هذا الشهر"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"get_document","name":"Read one document","description":"One posted invoice or return as stored: its party, lines (the first 50), totals, what is still owing, the returns made against it and the payments allocated to it - and the ledger entry it posted ONLY when includeEntry is true.","tags":["read","reads","profile:operator","profile:controller"],"examples":["INV-12"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"get_bank_reconciliation","name":"Show a bank reconciliation","description":"The state of one bank account's reconciliation for a month: status (open, closed or not started), the statement balance typed, the books' balance, what is uncleared, the statement the books expect, the difference and whether it agrees, with the outstanding items (the latest 50).","tags":["read","reads","profile:operator","profile:controller"],"examples":["هل سُوّي حساب البنك؟"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"propose_sale","name":"Propose a sale invoice","description":"Saves a DRAFT of a sale - nothing reaches the books; a person posts it from the app (or post_sale does, on a connection holding the key).","tags":["propose","sale","writes","profile:operator"],"examples":["بعت لأبو أحمد عشر علب زيت نقداً","request schema: https://app.letsgrowmore.app/a2a/schemas/propose_sale.json?v=bb03717f346f"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"preview_sale","name":"Preview a sale invoice","description":"Shows what posting a sale WOULD write (totals, stock effect, warnings; the ledger entry only when includeEntry is true) - records nothing. request = the same as propose_sale's.","tags":["preview","sale","reads","profile:operator"],"examples":["الشهر الماضي","request schema: https://app.letsgrowmore.app/a2a/schemas/preview_sale.json?v=b18f816451d1"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"post_sale","name":"Post a sale invoice","description":"POSTS a sale into the books (Instructions §6). request = the same as propose_sale's. Tell the user the document's currency by its name (`tellUser`).","tags":["post","sale","writes","profile:operator"],"examples":["بعت لأبو أحمد عشر علب زيت نقداً","request schema: https://app.letsgrowmore.app/a2a/schemas/post_sale.json?v=99cfe0d1bff4"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"propose_purchase","name":"Propose a purchase invoice","description":"Saves a DRAFT of a purchase - nothing reaches the books; a person posts it from the app (or post_purchase does, on a connection holding the key).","tags":["propose","purchase","writes","profile:operator"],"examples":["اشتريت من المورّد عشرين كرتونة آجل","request schema: https://app.letsgrowmore.app/a2a/schemas/propose_purchase.json?v=ae36473879d7"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"preview_purchase","name":"Preview a purchase invoice","description":"Shows what posting a purchase WOULD write (totals, stock effect, warnings; the ledger entry only when includeEntry is true) - records nothing. request = the same as propose_purchase's.","tags":["preview","purchase","reads","profile:operator"],"examples":["الشهر الماضي","request schema: https://app.letsgrowmore.app/a2a/schemas/preview_purchase.json?v=dd7ba976b145"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"post_purchase","name":"Post a purchase invoice","description":"POSTS a purchase into the books (Instructions §6). request = the same as propose_purchase's. Tell the user the document's currency by its name (`tellUser`).","tags":["post","purchase","writes","profile:operator"],"examples":["اشتريت من المورّد عشرين كرتونة آجل","request schema: https://app.letsgrowmore.app/a2a/schemas/post_purchase.json?v=e9d24f2218a4"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"propose_sale_return","name":"Propose a sales return","description":"Saves a DRAFT of a sales return - nothing reaches the books; a person posts it from the app (or post_sale_return does, on a connection holding the key).","tags":["propose","sale_return","writes","profile:operator"],"examples":["INV-12","request schema: https://app.letsgrowmore.app/a2a/schemas/propose_sale_return.json?v=a8759f27418e"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"preview_sale_return","name":"Preview a sales return","description":"Shows what posting a sales return WOULD write (totals, stock effect, warnings; the ledger entry only when includeEntry is true) - records nothing. request = the same as propose_sale_return's.","tags":["preview","sale_return","reads","profile:operator"],"examples":["الشهر الماضي","request schema: https://app.letsgrowmore.app/a2a/schemas/preview_sale_return.json?v=36815ff93e8b"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"post_sale_return","name":"Post a sales return","description":"POSTS a sales return into the books (Instructions §6). request = the same as propose_sale_return's. Tell the user the document's currency by its name (`tellUser`).","tags":["post","sale_return","writes","profile:operator"],"examples":["رجّع الزبون علبة من فاتورة أمس","request schema: https://app.letsgrowmore.app/a2a/schemas/post_sale_return.json?v=9d2dffb4183b"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"propose_purchase_return","name":"Propose a purchase return","description":"Saves a DRAFT of a purchase return - nothing reaches the books; a person posts it from the app (or post_purchase_return does, on a connection holding the key).","tags":["propose","purchase_return","writes","profile:operator"],"examples":["INV-12","request schema: https://app.letsgrowmore.app/a2a/schemas/propose_purchase_return.json?v=4d70171c2df5"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"preview_purchase_return","name":"Preview a purchase return","description":"Shows what posting a purchase return WOULD write (totals, stock effect, warnings; the ledger entry only when includeEntry is true) - records nothing. request = the same as propose_purchase_return's.","tags":["preview","purchase_return","reads","profile:operator"],"examples":["الشهر الماضي","request schema: https://app.letsgrowmore.app/a2a/schemas/preview_purchase_return.json?v=ceb5d01067b1"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"post_purchase_return","name":"Post a purchase return","description":"POSTS a purchase return into the books (Instructions §6). request = the same as propose_purchase_return's. Tell the user the document's currency by its name (`tellUser`).","tags":["post","purchase_return","writes","profile:operator"],"examples":["رجّعنا للمورّد كرتونة","request schema: https://app.letsgrowmore.app/a2a/schemas/post_purchase_return.json?v=87bc54a5319e"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"propose_receipt","name":"Propose a receipt from a customer","description":"Saves a DRAFT of a receipt from a customer - nothing reaches the books; a person posts it from the app (or post_receipt does, on a connection holding the key).","tags":["propose","receipt","writes","profile:operator"],"examples":["قبضت من أبو أحمد مئة دولار","request schema: https://app.letsgrowmore.app/a2a/schemas/propose_receipt.json?v=4c192b4597b2"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"preview_receipt","name":"Preview a receipt from a customer","description":"Shows what posting a receipt from a customer WOULD write (totals, ledger entry, stock effect, warnings) - records nothing. request = the same as propose_receipt's. A day you cannot pin («الشهر الماضي») is \"unknown\" - a preview then shows today: ask the person for the day before you propose or post.","tags":["preview","receipt","reads","profile:operator"],"examples":["الشهر الماضي","request schema: https://app.letsgrowmore.app/a2a/schemas/preview_receipt.json?v=407910d217e4"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"post_receipt","name":"Post a receipt from a customer","description":"POSTS a receipt from a customer into the books (Instructions §6). request = the same as propose_receipt's. Tell the user the document's currency by its name (`tellUser`).","tags":["post","receipt","writes","profile:operator"],"examples":["قبضت من أبو أحمد مئة دولار","request schema: https://app.letsgrowmore.app/a2a/schemas/post_receipt.json?v=80df9ac79ac9"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"propose_supplier_payment","name":"Propose a payment to a supplier","description":"Saves a DRAFT of a payment to a supplier - nothing reaches the books; a person posts it from the app (or post_supplier_payment does, on a connection holding the key).","tags":["propose","supplier_payment","writes","profile:operator"],"examples":["دفعت للمورّد خمسين دولاراً","request schema: https://app.letsgrowmore.app/a2a/schemas/propose_supplier_payment.json?v=493493d52405"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"preview_supplier_payment","name":"Preview a payment to a supplier","description":"Shows what posting a payment to a supplier WOULD write (totals, ledger entry, stock effect, warnings) - records nothing. request = the same as propose_supplier_payment's.","tags":["preview","supplier_payment","reads","profile:operator"],"examples":["الشهر الماضي","request schema: https://app.letsgrowmore.app/a2a/schemas/preview_supplier_payment.json?v=cd63f6e66ff2"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"post_supplier_payment","name":"Post a payment to a supplier","description":"POSTS a payment to a supplier into the books (Instructions §6). request = the same as propose_supplier_payment's. Tell the user the document's currency by its name (`tellUser`).","tags":["post","supplier_payment","writes","profile:operator"],"examples":["دفعت للمورّد خمسين دولاراً","request schema: https://app.letsgrowmore.app/a2a/schemas/post_supplier_payment.json?v=5fc3646a8aee"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"propose_stock_transfer","name":"Propose a stock transfer","description":"Saves a DRAFT of a transfer of stock between two warehouses - nothing reaches the books; a person posts it from the app (or post_stock_transfer does, on a connection holding the key).","tags":["propose","stock_transfer","writes","profile:operator"],"examples":["حوّل خمس علب من المستودع الرئيسي للثاني","request schema: https://app.letsgrowmore.app/a2a/schemas/propose_stock_transfer.json?v=874ba97b927e"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"post_stock_transfer","name":"Post a stock transfer","description":"POSTS a transfer of stock between two warehouses into the books (Instructions §6). request = the same as propose_stock_transfer's. Tell the user the document's currency by its name (`tellUser`).","tags":["post","stock_transfer","writes","profile:operator"],"examples":["حوّل خمس علب من المستودع الرئيسي للثاني","request schema: https://app.letsgrowmore.app/a2a/schemas/post_stock_transfer.json?v=e8d2e1da214d"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"propose_stocktake","name":"Propose a stock count","description":"Saves a DRAFT of a stock count of one warehouse - nothing reaches the books; a person posts it from the app (or post_stocktake does, on a connection holding the key).","tags":["propose","stocktake","writes","profile:operator"],"examples":["جردت المستودع الرئيسي","request schema: https://app.letsgrowmore.app/a2a/schemas/propose_stocktake.json?v=c3eab086668b"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"preview_stocktake","name":"Preview a stock count","description":"Shows what posting a stock count of one warehouse WOULD write (totals, ledger entry, stock effect, warnings) - records nothing. request = the same as propose_stocktake's.","tags":["preview","stocktake","reads","profile:operator"],"examples":["الشهر الماضي","request schema: https://app.letsgrowmore.app/a2a/schemas/preview_stocktake.json?v=c72d3075e1c6"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"post_stocktake","name":"Post a stock count","description":"POSTS a stock count of one warehouse into the books (Instructions §6). request = the same as propose_stocktake's. Tell the user the document's currency by its name (`tellUser`).","tags":["post","stocktake","writes","profile:operator"],"examples":["جردت المستودع الرئيسي","request schema: https://app.letsgrowmore.app/a2a/schemas/post_stocktake.json?v=395e55b5ad0a"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"propose_voucher","name":"Propose a journal voucher","description":"Saves a DRAFT of a manual journal voucher - nothing reaches the books; a person posts it from the app (or post_voucher does, on a connection holding the key).","tags":["propose","voucher","writes","profile:operator","profile:controller"],"examples":["كهرباء","request schema: https://app.letsgrowmore.app/a2a/schemas/propose_voucher.json?v=a8aad94949b3"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"preview_voucher","name":"Preview a journal voucher","description":"Shows what posting a manual journal voucher WOULD write (totals, ledger entry, stock effect, warnings) - records nothing. request = the same as propose_voucher's. A day you cannot pin («الشهر الماضي») is \"unknown\" - a preview then shows today: ask the person for the day before you propose or post.","tags":["preview","voucher","reads","profile:operator","profile:controller"],"examples":["الشهر الماضي","request schema: https://app.letsgrowmore.app/a2a/schemas/preview_voucher.json?v=8e7d42571f08"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"post_voucher","name":"Post a journal voucher","description":"POSTS a manual journal voucher into the books (Instructions §6). request = the same as propose_voucher's. Tell the user the document's currency by its name (`tellUser`).","tags":["post","voucher","writes","profile:operator","profile:controller"],"examples":["سجّل إيجار المحل أربعين دولاراً","request schema: https://app.letsgrowmore.app/a2a/schemas/post_voucher.json?v=d9b42a2da563"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"allocate_payment","name":"Apply a payment to invoices","description":"Applies what a POSTED receipt or supplier payment left unallocated to the open invoices the person names, in any currency; the exchange difference posts by itself. paymentId = the payment's id, invoiceIds = the invoices' ids in settling order. Use it for «وزّع قبض أبو أحمد على فاتورته القديمة».","tags":["read","writes","profile:operator"],"examples":["وزّع قبض أبو أحمد على فاتورته القديمة"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"my_proposals","name":"Show my proposals","description":"Lists the proposals THIS connection made in a working session (the newest session when sessionRef is left out): for each its kind, state (proposed = waiting for a person · posted · rejected · expired · withdrawn), amount, party, the questions still open and whether a person has decided.","tags":["proposals","reads","profile:operator"],"examples":["ماذا طلبنا للتو؟"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"withdraw_proposals","name":"Take back proposals","description":"Takes back this connection's unapproved proposals: a working session's (the newest when sessionRef is left out) or the one named by proposalId.","tags":["proposals","writes","profile:operator"],"examples":["تراجع"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"list_drafts","name":"List the drafts","description":"Lists the shop's pending DRAFTS - documents prepared by people or by agents that are NOT in the books yet - newest first, at most 50 with the true count.","tags":["proposals","reads","profile:operator"],"examples":["شو المسودات عندي؟"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"post_draft","name":"Post a draft","description":"POSTS a draft the user saw in list_drafts into the books, through the SAME guards as the kind's post_ tool (Instructions §6): refused (GM-AGENT-001) for a draft whose kind the connection holds no key for.","tags":["post","writes","profile:operator"],"examples":["رحّل المسودة الأولى"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"propose_party","name":"Propose a new customer or supplier","description":"Proposes a new customer or supplier, e.g. «ضيف زبون أحمد». A person confirms it in the app (Instructions §9). NOT for an existing record.","tags":["propose","writes","profile:operator"],"examples":["ضيف زبون أحمد"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"propose_item","name":"Propose a new item","description":"Proposes a new item, e.g. «ضيف صنف زيت ذرة». A person confirms it in the app (Instructions §9). NOT for an existing record.","tags":["propose","writes","profile:operator"],"examples":["ضيف صنف زيت ذرة"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"propose_cheque_receipt","name":"Propose a cheque received","description":"Saves a DRAFT of a cheque received from a customer, e.g. «استلمت شيكاً من أبو أحمد بخمسمئة دولار يستحق آخر الشهر»; nothing reaches the books, a person posts it in the app. Say what you understood and that it waits.","tags":["propose","writes","profile:operator"],"examples":["استلمت شيكاً من أبو أحمد بخمسمئة دولار يستحق آخر الشهر"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"propose_cheque_payment","name":"Propose a cheque issued","description":"Saves a DRAFT of a cheque issued to a supplier, e.g. «كتبت شيكاً للمورّد بمئتين يستحق بعد شهر»; nothing reaches the books, a person posts it in the app. Say what you understood and that it waits. NOT for cash or a bank transfer (propose_supplier_payment) or for moving a cheque already recorded.","tags":["propose","writes","profile:operator"],"examples":["كتبت شيكاً للمورّد بمئتين يستحق بعد شهر"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"propose_landed_cost","name":"Propose landed cost on a purchase","description":"Saves a DRAFT of freight, customs or clearing added to a posted purchase, e.g. «الشحن والجمارك على فاتورة الشراء الأخيرة ثمانمئة دولار للمخلّص»; nothing reaches the books or the stock, a person posts it in the app. Say what you understood and that it waits.","tags":["propose","writes","profile:operator"],"examples":["الشحن والجمارك على فاتورة الشراء الأخيرة ثمانمئة دولار للمخلّص"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"preview_landed_cost","name":"Preview landed cost on a purchase","description":"Shows what posting the landed cost WOULD write: each purchase line's share, how much of it raises the stock's average and how much goes to cost of goods sold (units already sold), and the entry - records nothing. Use it before post_landed_cost, e.g. «وزّع كلفة الشحن على فاتورة الشراء».","tags":["preview","reads","profile:operator"],"examples":["وزّع كلفة الشحن على فاتورة الشراء"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"post_landed_cost","name":"Post landed cost on a purchase","description":"POSTS freight, customs or clearing onto a posted purchase: ONE entry and the raised average of the units still on the shelf. Post only when the person said the amounts and the purchase; a supplier or purchase you cannot pin is a question, never a guess.","tags":["post","writes","profile:operator"],"examples":["سجّل الجمارك ثلاثمئة دولار على شراء أمس"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"propose_stock_adjustment","name":"Propose a stock adjustment","description":"Saves a DRAFT stock adjustment: goods leaving for a reason (damaged, expired, used inside, lost) or an unrecorded find coming in, e.g. «خمس علب تالفة». Nothing reaches the books or the stock; a person posts it in the app.","tags":["propose","writes","profile:controller"],"examples":["خمس علب تالفة"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"post_stock_adjustment","name":"Post a stock adjustment","description":"POSTS a stock adjustment: an out line leaves at the current average (never below zero), an in line enters at the cost said, ONE entry, e.g. «أخرج عشر علب منتهية الصلاحية». Post only when the person said the reason, the items and the quantities.","tags":["post","writes","profile:controller"],"examples":["أخرج عشر علب منتهية الصلاحية"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"propose_refund","name":"Propose a refund voucher","description":"Saves a DRAFT of a REFUND voucher - a credit a party holds, paid back to a customer or taken back from a supplier who owes the shop; a person posts it in the app. The amount cannot exceed the credit the books show for that party and currency (GM-PAY-014).","tags":["propose","writes","profile:operator"],"examples":["رجّع لأبو أحمد رصيده خمسين دولاراً"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"preview_refund","name":"Preview a refund voucher","description":"Shows what posting a REFUND voucher WOULD write - records nothing. request = the same as propose_refund's. The amount cannot exceed the credit the books show for that party and currency (GM-PAY-014). Use it before post_refund, e.g. «رجّع لأبو أحمد رصيده خمسين دولاراً».","tags":["preview","reads","profile:operator"],"examples":["رجّع لأبو أحمد رصيده خمسين دولاراً"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"post_refund","name":"Post a refund voucher","description":"POSTS a REFUND voucher into the books (Instructions §6). request = the same as propose_refund's. The amount cannot exceed the credit the books show for that party and currency (GM-PAY-014).","tags":["post","writes","profile:operator"],"examples":["رجّعت لأبو أحمد رصيده"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"propose_credit_note","name":"Propose a value credit note","description":"Saves a DRAFT of a value-only credit note on a posted credit invoice (a rebate or price correction, no goods), e.g. «خصم مئة دولار على فاتورة الزبون الأخيرة»; nothing reaches the books, a person posts it in the app. Say what you understood and that it waits.","tags":["propose","writes","profile:operator"],"examples":["خصم مئة دولار على فاتورة الزبون الأخيرة"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"preview_credit_note","name":"Preview a value credit note","description":"Shows what posting the credit note WOULD write: its tax at the invoice's rate, its total, the entry and what the invoice still owes before and after - records nothing. Use it before post_credit_note, e.g. «ماذا يحدث لو خصمت عشرة دولارات من فاتورة الزبون».","tags":["preview","reads","profile:operator"],"examples":["ماذا يحدث لو خصمت عشرة دولارات من فاتورة الزبون"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"post_credit_note","name":"Post a value credit note","description":"POSTS a value-only credit note on a posted credit invoice: ONE entry that lowers what the party owes. Post only when the person said the invoice and the amount, e.g. «سجّل خصماً ثلاثين دولاراً على فاتورة الزبون»; an invoice you cannot pin is a question, never a guess.","tags":["post","writes","profile:operator"],"examples":["سجّل خصماً ثلاثين دولاراً على فاتورة الزبون"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"decide_proposal","name":"Decide a proposal","description":"Decides ONE operator proposal: approve (posts its draft through the kind's own code, counted against your decide_proposal key), reject (needs a reason) or edit (applies `edits` to the draft, then approves).","tags":["read","writes","profile:controller"],"examples":["وافق على قيد الإيجار"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"pending_proposals","name":"Show proposals waiting for a decision","description":"Lists the shop's proposals waiting for a decision - the controller's inbox: each with its id, kind, version, amount, currency, party, date and the operator connection that made it (at most 50 rows, with the real count). Use it before decide_proposal, e.g. «ما الذي ينتظر قراري؟».","tags":["read","reads","profile:controller"],"examples":["ما الذي ينتظر قراري؟"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"manage_record","name":"Manage an item, party, warehouse or box","description":"Creates, updates or deactivates the shop's master data - the form's own fields; codes are generated; update and deactivate carry the record's id; one change a call for a group or warehouse - e.g. «ضيف مستودع البيت». A name that clearly exists comes back as existing.","tags":["read","writes","profile:operator"],"examples":["ضيف مستودع البيت"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"manage_definition","name":"Manage an account, tax rate or exchange rate","description":"Keeps the shop's definitions: account (create|update|delete, only when unused), tax_rate (add|switch_off), exchange_rate (set, a rate with its direction), system_account (assign a role to an account from a day), e.g. «سعر الصرف اليوم ٩٠٠٠٠». The form's own fields. NOT for documents or vouchers.","tags":["read","writes","profile:controller"],"examples":["سعر الصرف اليوم ٩٠٠٠٠"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"post_opening_stock","name":"Post the opening stock","description":"POSTS the opening stock of a shop that has not traded: ONE entry, inventory against opening equity, e.g. «مخزون افتتاحي ١٠٠ علبة بسعر ٢». NOT for stock after the first sale or purchase (a stock adjustment).","tags":["post","writes","profile:operator"],"examples":["مخزون افتتاحي ١٠٠ علبة بسعر ٢"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"cheque_step","name":"Move a cheque one step","description":"Moves a cheque one step: post (its draft), deposit (a received one, to a bank account), collect (cleared), bounce (returned, optional fee), present (an issued one), e.g. «أودِع شيك أبو أحمد في البنك». preview=true records nothing. A state moves one way.","tags":["read","writes","profile:operator"],"examples":["أودِع شيك أبو أحمد في البنك"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"card_settlement","name":"Settle a card payout","description":"The card processor's payout: action propose (a draft), preview (records nothing) or post - Dr bank (net) / Dr fees / Cr card clearing (gross), covering the oldest unsettled card sales, e.g. «وصلتنا دفعة البطاقات ١٠٠٠ بعمولة ٢٥». NOT for cash or a cheque (post_receipt, cheque_step).","tags":["read","writes","profile:operator"],"examples":["وصلتنا دفعة البطاقات ١٠٠٠ بعمولة ٢٥"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"bank_reconciliation","name":"Reconcile a bank month","description":"A bank month's reconciliation: mark_cleared (lines with their statement date), unmark, judge (a typed statement balance - the server names the difference), close_month (needs agreement), reopen_month, e.g. «سوِّ حساب البنك لشهر أيلول». NOT for reading a month (get_bank_reconciliation) or an entry.","tags":["read","writes","profile:controller"],"examples":["سوِّ حساب البنك لشهر أيلول"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"correction","name":"Correct a posted document","description":"Corrects a POSTED document: reverses it and posts the corrected copy together, with a written reason, e.g. «صحّح الفاتورة، السعر خطأ». action preview records nothing. NOT for a return, a stock take, a day book, a till document or a stock adjustment, nor for removing a document (delete_document).","tags":["read","writes","profile:controller"],"examples":["صحّح الفاتورة، السعر خطأ"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"delete_document","name":"Delete a posted document","description":"Takes a posted voucher, payment, day book, cash transfer, revaluation, card settlement, landed cost or credit note out of the books whole, with a written reason, e.g. «احذف القيد المكرر». NOT for an invoice, a return or a stock document (those are corrected) and NOT for a draft.","tags":["read","writes","profile:controller"],"examples":["احذف القيد المكرر"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"read_report","name":"Read a report or register","description":"One report or register, its screen's own figures: tax_report, ageing, item_card, stock_valuation, inventory_balances, cash_movements, journal_register, invoice_register, deleted_documents, lot_register, cheques, card_settlements, exchange_rates, chart_of_accounts, lock_date, fiscal_years (needs a...","tags":["read","reads","profile:operator","profile:controller"],"examples":["أعمار الديون"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"setup_pack","name":"Get the shop's setup","description":"The shop's setup before a first write: currencies with decimals and each rate's direction, warehouses, boxes with their account, tax rates, system accounts by role, lock date, fiscal year start, negative-stock policy, prices-include-tax, maker-checker threshold, and THIS connection's profile, keys...","tags":["read","reads","profile:operator","profile:controller"],"examples":["شو إعدادات المحل؟"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"period_pack","name":"Get a period's report pack","description":"ONE call for a period's analysis: trial balance, profit and loss with the previous period, balance sheet, both ageings, tax report, stock valuation, each box's balance in its own currency and the bank accounts - each the report's own method over the same period with its own verdict (balances,...","tags":["read","reads","profile:operator","profile:controller"],"examples":["حزمة نهاية الشهر"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"exceptions","name":"Show the exceptions in the books","description":"The books' problems as rows: books out of balance, parties or stock against their accounts, negative stock, provisional costs, a till left open, a box below zero, lots expiring, tax against its documents, what waits - each with severity, figures and the report that opens it. e.g.","tags":["read","reads","profile:operator","profile:controller"],"examples":["شو المشاكل في الدفاتر؟"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"change_drivers","name":"Explain why a figure changed","description":"Why a figure moved: the board's own decomposition, adding up to the change exactly, percentages at one decimal. tile: sales_today (against last week), sales_period, gross_margin, net_profit (against last month). e.g. «ليش نزلت المبيعات؟». NOT for listing problems (exceptions) or for a report.","tags":["read","reads","profile:operator","profile:controller"],"examples":["ليش نزلت المبيعات؟"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"export_report","name":"Export a report as a file","description":"A report's own export as a file, at most 10,000 rows. Returns file {name, size, url}: fetch the url with this same token, once, within 15 minutes (A2A may carry the file itself).","tags":["read","reads","profile:operator","profile:controller"],"examples":["صدّر دفتر اليومية"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}},{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"till","name":"Run the till","description":"Runs the shop's till as this agent's own drawer: open_session (floats are READ from the books), sale (several tenders, change), return (by the original tenders), debt_receipt, cash_in/cash_out (a reason by name), close_session (one count per box) - e.g. «افتح الصندوق وبع علبتين نقداً».","tags":["read","writes","profile:operator"],"examples":["افتح الصندوق وبع علبتين نقداً","request schema: https://app.letsgrowmore.app/a2a/schemas/till.json?v=e6c0ff0763fa"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"cash_day_book","name":"Post a cash day book","description":"POSTS one box's whole day at once - receipts and payments, a line on a customer or supplier is their receipt or payment - e.g. «يومية الصندوق: قبضنا ٥٠ من أبو علي ودفعنا ٢٠ كهرباء». NOT for moving cash between boxes (cash_transfer) or a till sale (till).","tags":["read","writes","profile:operator"],"examples":["يومية الصندوق: قبضنا ٥٠ من أبو علي ودفعنا ٢٠ كهرباء","request schema: https://app.letsgrowmore.app/a2a/schemas/cash_day_book.json?v=cf9f5603fc26"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"cash_transfer","name":"Transfer cash between boxes","description":"POSTS a transfer of cash between two boxes of one currency, e.g. «حوّل ١٠٠ دولار من الصندوق الرئيسي إلى صندوق البيت». NOT for a till operation (till), a day book (cash_day_book) or a change of currency.","tags":["read","writes","profile:operator"],"examples":["حوّل ١٠٠ دولار من الصندوق الرئيسي إلى صندوق البيت","request schema: https://app.letsgrowmore.app/a2a/schemas/cash_transfer.json?v=9adf9caf39a0"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:operator"]}}}]},{"id":"revaluation","name":"Revalue the month end","description":"Month-end revaluation of foreign cash, bank and party balances at closing rates typed as the user said them: preview shows it, post writes it and its reversal the next day, e.g. «أعد تقييم آخر الشهر بسعر يورو ١٫٣٠». NOT for exchange rates (manage_definition) or a voucher.","tags":["read","writes","profile:controller"],"examples":["أعد تقييم آخر الشهر بسعر يورو ١٫٣٠","request schema: https://app.letsgrowmore.app/a2a/schemas/revaluation.json?v=46904c350838"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"prepayment","name":"Spread a prepayment","description":"Spreads a prepayment (rent paid for a year) over 2-60 months as posted vouchers, each on its month's last day, e.g. «وزّع إيجار السنة ١٢٠٠٠ على ١٢ شهراً». NOT for the payment itself (post_voucher) or an accrual (post_voucher with reverseOn).","tags":["read","writes","profile:controller"],"examples":["وزّع إيجار السنة ١٢٠٠٠ على ١٢ شهراً","request schema: https://app.letsgrowmore.app/a2a/schemas/prepayment.json?v=ce7123acbc41"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]},{"id":"period_close","name":"Close a month, the year or move the lock date","description":"Closes the books for the owner: months, steps (a month's state), lock (a month), move_lock (back one closed month, with a written reason), year_end_preview, year_end, undo_year_end, e.g. «أقفل شهر آذار». NOT for correcting or deleting a document.","tags":["read","writes","profile:controller"],"examples":["أقفل شهر آذار","request schema: https://app.letsgrowmore.app/a2a/schemas/period_close.json?v=9e49d9af7ad1"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":["profile:controller"]}}}]}],"defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json","text/plain"],"securitySchemes":{"growmoreOAuth":{"oauth2SecurityScheme":{"description":"GrowMore's OAuth 2.1 server (authorization code with PKCE S256 for public chat clients - the person consents in the app and chooses the shop - and, for an unattended agent, client_credentials with a private_key_jwt assertion signed by the key pair of a service connection the shop's owner made: no refresh token). The resource is https://app.letsgrowmore.app/mcp.","flows":{"authorizationCode":{"authorizationUrl":"https://app.letsgrowmore.app/auth/oauth/authorize","tokenUrl":"https://app.letsgrowmore.app/auth/oauth/token","scopes":{},"pkceRequired":true},"clientCredentials":{"tokenUrl":"https://app.letsgrowmore.app/auth/oauth/token","scopes":{}}},"oauth2MetadataUrl":"https://app.letsgrowmore.app/.well-known/oauth-authorization-server"}},"growmoreBearer":{"httpAuthSecurityScheme":{"description":"The access token the OAuth server issued (audience growmore.agent, fifteen minutes).","scheme":"bearer","bearerFormat":"JWT"}}},"securityRequirements":[{"schemes":{"growmoreOAuth":{"list":[]}}},{"schemes":{"growmoreBearer":{"list":[]}}}],"signatures":[{"protected":"eyJhbGciOiJFUzI1NiIsInR5cCI6IkpPU0UiLCJraWQiOiJYcGhlMDhwR3ZvZjNzRVZJV2dZNEYxX19Ca2N5R1pJdGF6UzIwLVdYcS1vIiwiamt1IjoiaHR0cHM6Ly9hcHAubGV0c2dyb3dtb3JlLmFwcC8ud2VsbC1rbm93bi9qd2tzLmpzb24ifQ","signature":"Wo4eubUTL7eqJUigbTfsGGropf2u1yzhucRIqIiOrMvbhOB1gysZfvxTGDrQCXJYwIcUHesEorFMIsYXYnKW-A"}]}