jaz-clio 5.4.27 → 5.4.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/skills/api/SKILL.md +1 -1
- package/assets/skills/cli/SKILL.md +1 -1
- package/assets/skills/conversion/SKILL.md +1 -1
- package/assets/skills/jobs/SKILL.md +1 -1
- package/assets/skills/practice/SKILL.md +1 -1
- package/assets/skills/transaction-recipes/SKILL.md +1 -1
- package/cli.mjs +3 -3
- package/package.json +1 -1
package/cli.mjs
CHANGED
|
@@ -699,11 +699,11 @@ Steps: 1) search_customer_credit_notes with status UNAPPLIED for the same contac
|
|
|
699
699
|
- Skips lock date validation (opening balances are special).
|
|
700
700
|
- Uses journalEntries (NOT lines \u2014 this is a journal type).`,params:{valueDate:{type:"string",description:"Opening balance date (YYYY-MM-DD)"},journalEntries:tc,currency:ec},required:["valueDate","journalEntries"],group:"journals",readOnly:!1,searchHint:"create transfer trial balance between periods",execute:async(e,t)=>Wb(e.client,t)},{name:"delete_journal",description:"Delete a draft journal entry.",params:{resourceId:th},required:["resourceId"],group:"journals",readOnly:!1,searchHint:"permanently delete a draft journal entry",isDestructive:!0,execute:async(e,t)=>Vb(e.client,t.resourceId)},{name:"generate_trial_balance",description:"Generate a trial balance report.",params:{endDate:{type:"string",description:"Snapshot date (YYYY-MM-DD)"},currencyCode:{type:"string",description:"Currency override"}},required:["endDate"],group:"financial_reports",readOnly:!0,searchHint:"generate trial balance report for period",isConcurrencySafe:!0,maxResultSizeChars:1e5,execute:async(e,t)=>d0(e.client,t)},{name:"generate_balance_sheet",description:"Generate a balance sheet report.",params:{snapshotDate:{type:"string",description:"Snapshot date (YYYY-MM-DD). Defaults to today if omitted."},currencyCode:MJ},required:[],group:"financial_reports",readOnly:!0,searchHint:"generate balance sheet report as at date",isConcurrencySafe:!0,maxResultSizeChars:1e5,execute:async(e,t)=>{let r=t.snapshotDate??new Date().toISOString().slice(0,10);return p0(e.client,{primarySnapshotDate:r,currencyCode:t.currencyCode})}},{name:"generate_profit_and_loss",description:"Generate a profit & loss (income statement) report.",params:{startDate:{type:"string",description:"Period start (YYYY-MM-DD)"},endDate:{type:"string",description:"Period end (YYYY-MM-DD)"},currencyCode:MJ},required:["startDate","endDate"],group:"financial_reports",readOnly:!0,searchHint:"generate profit and loss income statement report",isConcurrencySafe:!0,maxResultSizeChars:1e5,execute:async(e,t)=>f0(e.client,t)},{name:"generate_cashflow",description:"Generate a cashflow report.",params:{startDate:SSe,endDate:p$},required:["startDate","endDate"],group:"financial_reports",readOnly:!0,searchHint:"generate cashflow statement report for period",isConcurrencySafe:!0,maxResultSizeChars:1e5,execute:async(e,t)=>m0(e.client,t)},{name:"generate_aged_ar",description:"Generate aged accounts receivable summary.",params:{endDate:p$},required:["endDate"],group:"operational_reports",readOnly:!0,searchHint:"generate aged accounts receivable summary report",isConcurrencySafe:!0,maxResultSizeChars:1e5,execute:async(e,t)=>h0(e.client,t)},{name:"generate_aged_ap",description:"Generate aged accounts payable summary.",params:{endDate:p$},required:["endDate"],group:"operational_reports",readOnly:!0,searchHint:"generate aged accounts payable summary report",isConcurrencySafe:!0,maxResultSizeChars:1e5,execute:async(e,t)=>g0(e.client,t)},{name:"generate_cash_balance",description:"Generate a cash balance report showing cash position at a specific date. PREFERRED for cash position questions \u2014 use this (NOT balance sheet) when asked about total cash, cash on hand, available cash, or cash position across all bank accounts.",params:{endDate:{type:"string",description:"Snapshot date (YYYY-MM-DD)"}},required:["endDate"],group:"financial_reports",readOnly:!0,searchHint:"generate cash balance report across accounts",isConcurrencySafe:!0,maxResultSizeChars:1e5,execute:async(e,t)=>y0(e.client,t)},{name:"generate_general_ledger",description:"Generate a general ledger report.",params:{startDate:{type:"string",description:"Period start (YYYY-MM-DD)"},endDate:{type:"string",description:"Period end (YYYY-MM-DD)"},groupBy:{type:"string",description:"Group by: ACCOUNT (default), TRANSACTION, or CAPSULE"}},required:["startDate","endDate"],group:"financial_reports",readOnly:!0,searchHint:"generate general ledger report for account period",isConcurrencySafe:!0,maxResultSizeChars:1e5,execute:async(e,t)=>{let r=t;return D0(e.client,{...r,groupBy:r.groupBy??"ACCOUNT"})}},{name:"list_bank_accounts",description:"List bank accounts connected to the organization.",params:{},required:[],group:"bank",readOnly:!0,searchHint:"list bank and cash accounts with balances",isConcurrencySafe:!0,maxResultSizeChars:5e4,execute:async e=>zc(e.client)},gt("list_items","List items (products & services). Returns internalName, itemCode, appliesToSale/Purchase. Paginated \u2014 response includes totalElements. Use limit/offset to page.","items",(e,t,r)=>HD(e,{limit:r,offset:t}),"list products services items with pagination"),Rt({name:"search_items",description:"Search items. Use list_items to search by name (internalName is not a filter field).",group:"items",fields:Wp,defaults:Zp,fetcher:lu,searchHint:"find items products services by status category sale purchase type internalName via list_items"}),{name:"get_item",description:"Get full item details by resourceId.",params:{resourceId:{type:"string",description:"Item resourceId (UUID)"}},required:["resourceId"],group:"items",readOnly:!0,searchHint:"get item product service details by id",isConcurrencySafe:!0,maxResultSizeChars:2e4,execute:async(e,t)=>fp(e.client,t.resourceId)},{name:"create_item",description:`Create a new item. Auto-checks for duplicates by itemCode \u2014 returns existing item if found.
|
|
701
701
|
- saleItemName/purchaseItemName are auto-set from internalName if not provided.
|
|
702
|
-
- Set appliesToSale and/or appliesToPurchase to control where the item can be used.`,params:{itemCode:{type:"string",description:"Unique item code"},internalName:{type:"string",description:"Item name"},appliesToSale:{type:"boolean",description:"Can be used on invoices"},appliesToPurchase:{type:"boolean",description:"Can be used on bills"},salePrice:{type:"number",description:"Default sale price"},purchasePrice:{type:"number",description:"Default purchase price"},saleAccountResourceId:{type:"string",description:"Revenue account for sales"},purchaseAccountResourceId:{type:"string",description:"Expense account for purchases"},customFields:dn},required:["itemCode","internalName"],group:"items",readOnly:!1,searchHint:"create new product or service item for invoicing",execute:async(e,t)=>{let r=t.itemCode,n=await lb(e.client,r);if(n)return{_guard:"duplicate_skipped",message:`Item with code "${r}" already exists.`,existing:n};let{purchasePrice:o,...i}=t,s={...i,...o!==void 0&&{purchaseItemPrice:o}};return mp(e.client,s)}},{name:"update_item",description:"Update an existing item. Only send fields you want to change \u2014 required fields are auto-merged from current state.",params:{resourceId:{type:"string",description:"Item resourceId"},internalName:{type:"string",description:"New name"},itemCode:{type:"string",description:"New code"},salePrice:{type:"number"},purchasePrice:{type:"number"},status:{type:"string",enum:["ACTIVE","INACTIVE"],description:"Status (ACTIVE or INACTIVE)"},customFields:dn},required:["resourceId"],group:"items",readOnly:!1,searchHint:"update existing item name price account details",execute:async(e,t)=>{let{resourceId:r,purchasePrice:n,...o}=t,i={...o,...n!==void 0&&{purchaseItemPrice:n}};return WD(e.client,r,i)}},{name:"delete_item",description:"Delete an item.",params:{resourceId:{type:"string",description:"Item resourceId"}},required:["resourceId"],group:"items",readOnly:!1,searchHint:"permanently delete an item product service",isDestructive:!0,execute:async(e,t)=>ZD(e.client,t.resourceId)},{name:"bulk_upsert_items",description:"Create or update items in bulk (max 500 per call). Provide resourceId per item to update (partial \u2014 only changed fields needed, server preserves existing values). Omit resourceId to create (defaults: status=ACTIVE, itemCategory=NON_INVENTORY).",params:{items:{type:"array",description:"Array of items to create or update",items:{type:"object",properties:{resourceId:{type:"string",description:"Item resourceId (omit for create, provide for update)"},itemCode:{type:"string",description:"Unique item code (required for create)"},internalName:{type:"string",description:"Internal name (required for create)"},unit:{type:"string",description:"Unit of measure"},status:{type:"string",description:"Record status",enum:["ACTIVE","INACTIVE"]},appliesToSale:{type:"boolean",description:"Whether item applies to sales"},saleItemName:{type:"string",description:"Sale display name"},salePrice:{type:"number",description:"Sale price"},saleAccountResourceId:{type:"string",description:"Sale account resourceId"},saleTaxProfileResourceId:{type:"string",description:"Sale tax profile resourceId"},appliesToPurchase:{type:"boolean",description:"Whether item applies to purchases"},purchaseItemName:{type:"string",description:"Purchase display name"},purchasePrice:{type:"number",description:"Purchase price"},purchaseAccountResourceId:{type:"string",description:"Purchase account resourceId"},purchaseTaxProfileResourceId:{type:"string",description:"Purchase tax profile resourceId"},inventory:{type:"boolean",description:"Whether this is an inventory item"},cogsResourceId:{type:"string",description:"COGS account resourceId"},costingMethod:{type:"string",description:"Costing method",enum:["FIXED","WAC"]},itemCategory:{type:"string",description:"Item category",enum:["INVENTORY","NON_INVENTORY"]},blockInsufficientDeductions:{type:"boolean",description:"Block insufficient stock deductions"}}}}},required:["items"],group:"items",readOnly:!1,searchHint:"bulk create or update multiple items at once",execute:async(e,t)=>{let r=t.items.map(({purchasePrice:o,...i})=>({...i,...o!==void 0&&{purchaseItemPrice:o}}));return(await KD(e.client,r)).data}},gt("list_tags","List tags used for transaction categorization. Paginated \u2014 response includes totalElements. Use limit/offset to page.","tags",(e,t,r)=>hu(e,{limit:r,offset:t}),"list all tags for categorization tracking"),Rt({name:"search_tags",description:"Search tags
|
|
702
|
+
- Set appliesToSale and/or appliesToPurchase to control where the item can be used.`,params:{itemCode:{type:"string",description:"Unique item code"},internalName:{type:"string",description:"Item name"},appliesToSale:{type:"boolean",description:"Can be used on invoices"},appliesToPurchase:{type:"boolean",description:"Can be used on bills"},salePrice:{type:"number",description:"Default sale price"},purchasePrice:{type:"number",description:"Default purchase price"},saleAccountResourceId:{type:"string",description:"Revenue account for sales"},purchaseAccountResourceId:{type:"string",description:"Expense account for purchases"},customFields:dn},required:["itemCode","internalName"],group:"items",readOnly:!1,searchHint:"create new product or service item for invoicing",execute:async(e,t)=>{let r=t.itemCode,n=await lb(e.client,r);if(n)return{_guard:"duplicate_skipped",message:`Item with code "${r}" already exists.`,existing:n};let{purchasePrice:o,...i}=t,s={...i,...o!==void 0&&{purchaseItemPrice:o}};return mp(e.client,s)}},{name:"update_item",description:"Update an existing item. Only send fields you want to change \u2014 required fields are auto-merged from current state.",params:{resourceId:{type:"string",description:"Item resourceId"},internalName:{type:"string",description:"New name"},itemCode:{type:"string",description:"New code"},salePrice:{type:"number"},purchasePrice:{type:"number"},status:{type:"string",enum:["ACTIVE","INACTIVE"],description:"Status (ACTIVE or INACTIVE)"},customFields:dn},required:["resourceId"],group:"items",readOnly:!1,searchHint:"update existing item name price account details",execute:async(e,t)=>{let{resourceId:r,purchasePrice:n,...o}=t,i={...o,...n!==void 0&&{purchaseItemPrice:n}};return WD(e.client,r,i)}},{name:"delete_item",description:"Delete an item.",params:{resourceId:{type:"string",description:"Item resourceId"}},required:["resourceId"],group:"items",readOnly:!1,searchHint:"permanently delete an item product service",isDestructive:!0,execute:async(e,t)=>ZD(e.client,t.resourceId)},{name:"bulk_upsert_items",description:"Create or update items in bulk (max 500 per call). Provide resourceId per item to update (partial \u2014 only changed fields needed, server preserves existing values). Omit resourceId to create (defaults: status=ACTIVE, itemCategory=NON_INVENTORY).",params:{items:{type:"array",description:"Array of items to create or update",items:{type:"object",properties:{resourceId:{type:"string",description:"Item resourceId (omit for create, provide for update)"},itemCode:{type:"string",description:"Unique item code (required for create)"},internalName:{type:"string",description:"Internal name (required for create)"},unit:{type:"string",description:"Unit of measure"},status:{type:"string",description:"Record status",enum:["ACTIVE","INACTIVE"]},appliesToSale:{type:"boolean",description:"Whether item applies to sales"},saleItemName:{type:"string",description:"Sale display name"},salePrice:{type:"number",description:"Sale price"},saleAccountResourceId:{type:"string",description:"Sale account resourceId"},saleTaxProfileResourceId:{type:"string",description:"Sale tax profile resourceId"},appliesToPurchase:{type:"boolean",description:"Whether item applies to purchases"},purchaseItemName:{type:"string",description:"Purchase display name"},purchasePrice:{type:"number",description:"Purchase price"},purchaseAccountResourceId:{type:"string",description:"Purchase account resourceId"},purchaseTaxProfileResourceId:{type:"string",description:"Purchase tax profile resourceId"},inventory:{type:"boolean",description:"Whether this is an inventory item"},cogsResourceId:{type:"string",description:"COGS account resourceId"},costingMethod:{type:"string",description:"Costing method",enum:["FIXED","WAC"]},itemCategory:{type:"string",description:"Item category",enum:["INVENTORY","NON_INVENTORY"]},blockInsufficientDeductions:{type:"boolean",description:"Block insufficient stock deductions"}}}}},required:["items"],group:"items",readOnly:!1,searchHint:"bulk create or update multiple items at once",execute:async(e,t)=>{let r=t.items.map(({purchasePrice:o,...i})=>({...i,...o!==void 0&&{purchaseItemPrice:o}}));return(await KD(e.client,r)).data}},gt("list_tags","List tags used for transaction categorization. Paginated \u2014 response includes totalElements. Use limit/offset to page.","tags",(e,t,r)=>hu(e,{limit:r,offset:t}),"list all tags for categorization tracking"),Rt({name:"search_tags",description:"Search tags.",group:"tags",fields:sf,defaults:af,fetcher:ab,searchHint:"find tags labels categorization by name"}),{name:"create_tag",description:"Create a new tag. Automatically reuses existing tag if one with the same name exists.",params:{name:{type:"string",description:"Tag name"}},required:["name"],group:"tags",readOnly:!1,searchHint:"create new tag for transaction categorization",execute:async(e,t)=>{let r=t.name,n=await fb(e.client,r);return n?{data:n,_note:`Tag "${r}" already exists \u2014 reusing.`}:yp(e.client,{name:r})}},Yn("get_tag","Get a tag by resourceId.","tags",(e,t)=>sb(e,t),"get tag details by resource id"),{name:"update_tag",description:"Rename a tag.",params:{resourceId:{type:"string",description:"Tag resourceId"},name:{type:"string",description:"New tag name"}},required:["resourceId","name"],group:"tags",readOnly:!1,searchHint:"update rename existing tag name",execute:async(e,t)=>cb(e.client,t.resourceId,{name:t.name})},{name:"delete_tag",description:"Delete a tag.",params:{resourceId:{type:"string",description:"Tag resourceId"}},required:["resourceId"],group:"tags",readOnly:!1,searchHint:"permanently delete a tag",isDestructive:!0,execute:async(e,t)=>ub(e.client,t.resourceId)},{name:"list_capsule_types",description:"List capsule types (e.g., PREPAID_EXPENSE, DEFERRED_REVENUE). Use to get capsuleTypeResourceId before creating capsules.",params:{},required:[],group:"capsules",readOnly:!0,searchHint:"list capsule types for transaction grouping",isConcurrencySafe:!0,maxResultSizeChars:5e4,execute:async e=>du(e.client)},gt("list_capsules","List capsules (transaction groupings for amortization, deferred revenue, etc.). Paginated \u2014 response includes totalElements. Use limit/offset to page.","capsules",(e,t,r)=>XD(e,{limit:r,offset:t}),"list capsules grouped transactions with pagination"),Rt({name:"search_capsules",description:"Search capsules.",group:"capsules",fields:lf,defaults:df,fetcher:pu,searchHint:"find capsules workflow groups by title status type capsuleType"}),{name:"get_capsule",description:"Get full capsule details by resourceId.",params:{resourceId:{type:"string",description:"Capsule resourceId (UUID)"}},required:["resourceId"],group:"capsules",readOnly:!0,searchHint:"get capsule details grouped transactions",isConcurrencySafe:!0,maxResultSizeChars:2e4,execute:async(e,t)=>gp(e.client,t.resourceId)},{name:"create_capsule",description:"Create a new capsule. List capsule types first to get the capsuleTypeResourceId.",params:{capsuleTypeResourceId:{type:"string",description:"Capsule type resourceId (from list_capsule_types)"},title:{type:"string",description:"Capsule title"},description:{type:"string",description:"Capsule description"}},required:["capsuleTypeResourceId","title"],group:"capsules",readOnly:!1,searchHint:"create new capsule to group related transactions",execute:async(e,t)=>{let r=t.title,n=await qz(e.client,r);return n?{_guard:"duplicate_skipped",message:`Capsule "${r}" already exists.`,existing:n}:Oa(e.client,{capsuleTypeResourceId:t.capsuleTypeResourceId,title:r,description:t.description})}},{name:"update_capsule",description:"Update a capsule title or description. Required fields are auto-merged from current state.",params:{resourceId:{type:"string",description:"Capsule resourceId"},title:{type:"string",description:"New title"},description:{type:"string",description:"New description"}},required:["resourceId"],group:"capsules",readOnly:!1,searchHint:"update capsule title description details",execute:async(e,t)=>{let{resourceId:r,...n}=t;return QD(e.client,r,n)}},{name:"delete_capsule",description:"Delete a capsule.",params:{resourceId:{type:"string",description:"Capsule resourceId"}},required:["resourceId"],group:"capsules",readOnly:!1,searchHint:"permanently delete a capsule group",isDestructive:!0,execute:async(e,t)=>eb(e.client,t.resourceId)},gt("list_customer_credit_notes","List customer credit notes (AR adjustments/refunds). Paginated \u2014 response includes totalElements. Use limit/offset to page.","customer_credit_notes",(e,t,r)=>T0(e,{limit:r,offset:t}),"list customer credit notes with status pagination"),Rt({name:"search_customer_credit_notes",description:"Search customer credit notes. Status: DRAFT, UNAPPLIED, PARTIALLY_APPLIED, APPLIED, VOID.",group:"customer_credit_notes",fields:vs,defaults:Ou,fetcher:Tf,searchHint:"find customer credit notes refunds CN by reference status contact tag"}),{name:"get_customer_credit_note",description:"Get full customer credit note details including line items.",params:{resourceId:{type:"string",description:"Customer credit note resourceId"}},required:["resourceId"],group:"customer_credit_notes",readOnly:!0,searchHint:"get customer credit note details line items",isConcurrencySafe:!0,maxResultSizeChars:2e4,execute:async(e,t)=>Ro(e.client,t.resourceId)},{name:"create_customer_credit_note",description:`Create a customer credit note. Saves as draft by default.
|
|
703
703
|
- Status when finalized is UNAPPLIED (not APPROVED).
|
|
704
704
|
- Line items use "name" for item description.
|
|
705
705
|
- contactResourceId required \u2014 search contacts first.
|
|
706
|
-
- reference MUST be unique \u2014 generate one with a timestamp if user doesn't specify.`,params:{reference:{type:"string",description:"Credit note reference number"},valueDate:{type:"string",description:"Credit note date (YYYY-MM-DD)"},contactResourceId:{type:"string",description:"Customer contact resourceId"},lineItems:{type:"array",items:{type:"object",properties:{name:{type:"string",description:"Line item description"},quantity:{type:"number"},unitPrice:{type:"number"},accountResourceId:rc},required:["name","quantity","unitPrice"]},description:"Credit note line items"},currency:ec,saveAsDraft:{type:"boolean",description:"Save as draft (default true)"},notes:Dr,tag:dl,customFields:dn},required:["valueDate","contactResourceId","lineItems"],group:"customer_credit_notes",readOnly:!1,searchHint:"create new customer credit note draft",execute:async(e,t)=>{let{notes:r,tag:n,...o}=t,i={...o,...r!==void 0&&{invoiceNotes:r},...n!==void 0&&{tags:[n]}};return i.reference||(i.reference=`CCN-${Date.now()}`),Of(e.client,i)}},{name:"delete_customer_credit_note",description:"Delete a draft customer credit note.",params:{resourceId:{type:"string",description:"Customer credit note resourceId"}},required:["resourceId"],group:"customer_credit_notes",readOnly:!1,searchHint:"permanently delete draft customer credit note",isDestructive:!0,execute:async(e,t)=>$0(e.client,t.resourceId)},{name:"update_customer_credit_note",description:'Update a draft customer credit note (change amount, line items, contact, date, notes). Use when the user says "update", "change", "fix", or "correct" a credit note.',params:{resourceId:{type:"string",description:"Customer credit note resourceId"},reference:yo,valueDate:go,lineItems:fi,notes:Dr,tag:dl,customFields:dn},required:["resourceId"],group:"customer_credit_notes",readOnly:!1,searchHint:"update customer credit note lines reference",execute:async(e,t)=>{let{resourceId:r,notes:n,tag:o,...i}=t,s={...i,...n!==void 0&&{invoiceNotes:n},...o!==void 0&&{tags:[o]}};return O0(e.client,r,s)}},{name:"finalize_customer_credit_note",description:"Finalize a draft customer credit note (set saveAsDraft=false). Status becomes UNAPPLIED.",params:{resourceId:{type:"string",description:"Customer credit note resourceId"},reference:yo,valueDate:go,lineItems:fi,notes:Dr},required:["resourceId"],group:"customer_credit_notes",readOnly:!1,searchHint:"approve finalize customer credit note",isDestructive:!0,execute:async(e,t)=>{let{resourceId:r,notes:n,...o}=t,i={...o,...n!==void 0&&{invoiceNotes:n}},s=await eh(e.client,"customer_credit_note",r,i);return $f(e.client,r,s)}},{name:"create_customer_credit_note_refund",description:"Record a refund payment against a customer credit note.",params:{creditNoteId:{type:"string",description:"Customer credit note resourceId"},paymentAmount:{type:"number",description:"Refund amount"},transactionAmount:{type:"number",description:"Amount in credit note currency (defaults to paymentAmount for same-currency)"},accountResourceId:{type:"string",description:"Bank/cash account resourceId"},valueDate:{type:"string",description:"Payment date (YYYY-MM-DD)"},reference:{type:"string",description:"Payment reference"},paymentMethod:Qm},required:["creditNoteId","paymentAmount","accountResourceId","valueDate"],group:"customer_credit_notes",readOnly:!1,searchHint:"refund customer credit note to bank account",isDestructive:!0,execute:async(e,t)=>{let r=Number(t.paymentAmount);if(!Number.isFinite(r)||r<=0)throw new Error("paymentAmount must be a positive number");let n=Number(t.transactionAmount??r);if(!Number.isFinite(n)||n<=0)throw new Error("transactionAmount must be a positive number");return Rf(e.client,t.creditNoteId,{paymentAmount:r,transactionAmount:n,accountResourceId:t.accountResourceId,valueDate:t.valueDate,dueDate:t.valueDate,reference:t.reference??"",paymentMethod:t.paymentMethod??"BANK_TRANSFER",saveAsDraft:!1})}},{name:"list_customer_credit_note_refunds",description:"List refund payments for a customer credit note.",params:{creditNoteId:{type:"string",description:"Customer credit note resourceId"}},required:["creditNoteId"],group:"customer_credit_notes",readOnly:!0,searchHint:"list refunds on a customer credit note",isConcurrencySafe:!0,maxResultSizeChars:5e4,execute:async(e,t)=>R0(e.client,t.creditNoteId)},gt("list_supplier_credit_notes","List supplier credit notes (AP adjustments/refunds). Paginated \u2014 response includes totalElements. Use limit/offset to page.","supplier_credit_notes",(e,t,r)=>F0(e,{limit:r,offset:t}),"list supplier credit notes with status pagination"),Rt({name:"search_supplier_credit_notes",description:"Search supplier credit notes
|
|
706
|
+
- reference MUST be unique \u2014 generate one with a timestamp if user doesn't specify.`,params:{reference:{type:"string",description:"Credit note reference number"},valueDate:{type:"string",description:"Credit note date (YYYY-MM-DD)"},contactResourceId:{type:"string",description:"Customer contact resourceId"},lineItems:{type:"array",items:{type:"object",properties:{name:{type:"string",description:"Line item description"},quantity:{type:"number"},unitPrice:{type:"number"},accountResourceId:rc},required:["name","quantity","unitPrice"]},description:"Credit note line items"},currency:ec,saveAsDraft:{type:"boolean",description:"Save as draft (default true)"},notes:Dr,tag:dl,customFields:dn},required:["valueDate","contactResourceId","lineItems"],group:"customer_credit_notes",readOnly:!1,searchHint:"create new customer credit note draft",execute:async(e,t)=>{let{notes:r,tag:n,...o}=t,i={...o,...r!==void 0&&{invoiceNotes:r},...n!==void 0&&{tags:[n]}};return i.reference||(i.reference=`CCN-${Date.now()}`),Of(e.client,i)}},{name:"delete_customer_credit_note",description:"Delete a draft customer credit note.",params:{resourceId:{type:"string",description:"Customer credit note resourceId"}},required:["resourceId"],group:"customer_credit_notes",readOnly:!1,searchHint:"permanently delete draft customer credit note",isDestructive:!0,execute:async(e,t)=>$0(e.client,t.resourceId)},{name:"update_customer_credit_note",description:'Update a draft customer credit note (change amount, line items, contact, date, notes). Use when the user says "update", "change", "fix", or "correct" a credit note.',params:{resourceId:{type:"string",description:"Customer credit note resourceId"},reference:yo,valueDate:go,lineItems:fi,notes:Dr,tag:dl,customFields:dn},required:["resourceId"],group:"customer_credit_notes",readOnly:!1,searchHint:"update customer credit note lines reference",execute:async(e,t)=>{let{resourceId:r,notes:n,tag:o,...i}=t,s={...i,...n!==void 0&&{invoiceNotes:n},...o!==void 0&&{tags:[o]}};return O0(e.client,r,s)}},{name:"finalize_customer_credit_note",description:"Finalize a draft customer credit note (set saveAsDraft=false). Status becomes UNAPPLIED.",params:{resourceId:{type:"string",description:"Customer credit note resourceId"},reference:yo,valueDate:go,lineItems:fi,notes:Dr},required:["resourceId"],group:"customer_credit_notes",readOnly:!1,searchHint:"approve finalize customer credit note",isDestructive:!0,execute:async(e,t)=>{let{resourceId:r,notes:n,...o}=t,i={...o,...n!==void 0&&{invoiceNotes:n}},s=await eh(e.client,"customer_credit_note",r,i);return $f(e.client,r,s)}},{name:"create_customer_credit_note_refund",description:"Record a refund payment against a customer credit note.",params:{creditNoteId:{type:"string",description:"Customer credit note resourceId"},paymentAmount:{type:"number",description:"Refund amount"},transactionAmount:{type:"number",description:"Amount in credit note currency (defaults to paymentAmount for same-currency)"},accountResourceId:{type:"string",description:"Bank/cash account resourceId"},valueDate:{type:"string",description:"Payment date (YYYY-MM-DD)"},reference:{type:"string",description:"Payment reference"},paymentMethod:Qm},required:["creditNoteId","paymentAmount","accountResourceId","valueDate"],group:"customer_credit_notes",readOnly:!1,searchHint:"refund customer credit note to bank account",isDestructive:!0,execute:async(e,t)=>{let r=Number(t.paymentAmount);if(!Number.isFinite(r)||r<=0)throw new Error("paymentAmount must be a positive number");let n=Number(t.transactionAmount??r);if(!Number.isFinite(n)||n<=0)throw new Error("transactionAmount must be a positive number");return Rf(e.client,t.creditNoteId,{paymentAmount:r,transactionAmount:n,accountResourceId:t.accountResourceId,valueDate:t.valueDate,dueDate:t.valueDate,reference:t.reference??"",paymentMethod:t.paymentMethod??"BANK_TRANSFER",saveAsDraft:!1})}},{name:"list_customer_credit_note_refunds",description:"List refund payments for a customer credit note.",params:{creditNoteId:{type:"string",description:"Customer credit note resourceId"}},required:["creditNoteId"],group:"customer_credit_notes",readOnly:!0,searchHint:"list refunds on a customer credit note",isConcurrencySafe:!0,maxResultSizeChars:5e4,execute:async(e,t)=>R0(e.client,t.creditNoteId)},gt("list_supplier_credit_notes","List supplier credit notes (AP adjustments/refunds). Paginated \u2014 response includes totalElements. Use limit/offset to page.","supplier_credit_notes",(e,t,r)=>F0(e,{limit:r,offset:t}),"list supplier credit notes with status pagination"),Rt({name:"search_supplier_credit_notes",description:"Search supplier credit notes. Status: DRAFT, UNAPPLIED, PARTIALLY_APPLIED, APPLIED, VOID.",group:"supplier_credit_notes",fields:vs,defaults:Bp,fetcher:Nf,searchHint:"find supplier credit notes refunds CN by reference status contact tag"}),{name:"get_supplier_credit_note",description:"Get full supplier credit note details including line items.",params:{resourceId:{type:"string",description:"Supplier credit note resourceId"}},required:["resourceId"],group:"supplier_credit_notes",readOnly:!0,searchHint:"get supplier credit note details line items",isConcurrencySafe:!0,maxResultSizeChars:2e4,execute:async(e,t)=>No(e.client,t.resourceId)},{name:"create_supplier_credit_note",description:`Create a supplier credit note. Saves as draft by default.
|
|
707
707
|
- Status when finalized is UNAPPLIED (not APPROVED).
|
|
708
708
|
- Line items use "name" for item description.
|
|
709
709
|
- contactResourceId required \u2014 search contacts first.`,params:{reference:{type:"string",description:"Credit note reference number"},valueDate:{type:"string",description:"Credit note date (YYYY-MM-DD)"},contactResourceId:{type:"string",description:"Supplier contact resourceId"},lineItems:{type:"array",items:{type:"object",properties:{name:{type:"string",description:"Line item description"},quantity:{type:"number"},unitPrice:{type:"number"},accountResourceId:rc},required:["name","quantity","unitPrice"]},description:"Credit note line items"},currency:ec,saveAsDraft:{type:"boolean",description:"Save as draft (default true)"},notes:Dr,tag:dl,customFields:dn},required:["valueDate","contactResourceId","lineItems"],group:"supplier_credit_notes",readOnly:!1,searchHint:"create new supplier credit note draft",execute:async(e,t)=>{let{notes:r,tag:n,...o}=t,i={...o,...r!==void 0&&{invoiceNotes:r},...n!==void 0&&{tags:[n]}};return i.reference||(i.reference=`SCN-${Date.now()}`),kf(e.client,i)}},{name:"delete_supplier_credit_note",description:"Delete a draft supplier credit note.",params:{resourceId:{type:"string",description:"Supplier credit note resourceId"}},required:["resourceId"],group:"supplier_credit_notes",readOnly:!1,searchHint:"permanently delete draft supplier credit note",isDestructive:!0,execute:async(e,t)=>L0(e.client,t.resourceId)},{name:"update_supplier_credit_note",description:'Update a draft supplier credit note (change amount, line items, contact, date, notes). Use when the user says "update", "change", "fix", or "correct" a credit note.',params:{resourceId:{type:"string",description:"Supplier credit note resourceId"},reference:yo,valueDate:go,lineItems:fi,notes:Dr,tag:dl,customFields:dn},required:["resourceId"],group:"supplier_credit_notes",readOnly:!1,searchHint:"update supplier credit note lines reference",execute:async(e,t)=>{let{resourceId:r,notes:n,tag:o,...i}=t,s={...i,...n!==void 0&&{invoiceNotes:n},...o!==void 0&&{tags:[o]}};return P0(e.client,r,s)}},{name:"finalize_supplier_credit_note",description:"Finalize a draft supplier credit note (set saveAsDraft=false). Status becomes UNAPPLIED.",params:{resourceId:{type:"string",description:"Supplier credit note resourceId"},reference:yo,valueDate:go,lineItems:fi,notes:Dr},required:["resourceId"],group:"supplier_credit_notes",readOnly:!1,searchHint:"approve finalize supplier credit note",isDestructive:!0,execute:async(e,t)=>{let{resourceId:r,notes:n,...o}=t,i={...o,...n!==void 0&&{invoiceNotes:n}},s=await eh(e.client,"supplier_credit_note",r,i);return Ff(e.client,r,s)}},{name:"create_supplier_credit_note_refund",description:"Record a refund payment against a supplier credit note.",params:{creditNoteId:{type:"string",description:"Supplier credit note resourceId"},paymentAmount:{type:"number",description:"Refund amount"},transactionAmount:{type:"number",description:"Amount in credit note currency (defaults to paymentAmount for same-currency)"},accountResourceId:{type:"string",description:"Bank/cash account resourceId"},valueDate:{type:"string",description:"Payment date (YYYY-MM-DD)"},reference:{type:"string",description:"Payment reference"},paymentMethod:Qm},required:["creditNoteId","paymentAmount","accountResourceId","valueDate"],group:"supplier_credit_notes",readOnly:!1,searchHint:"refund supplier credit note from bank account",isDestructive:!0,execute:async(e,t)=>{let r=Number(t.paymentAmount);if(!Number.isFinite(r)||r<=0)throw new Error("paymentAmount must be a positive number");let n=Number(t.transactionAmount??r);if(!Number.isFinite(n)||n<=0)throw new Error("transactionAmount must be a positive number");return Pf(e.client,t.creditNoteId,{paymentAmount:r,transactionAmount:n,accountResourceId:t.accountResourceId,valueDate:t.valueDate,dueDate:t.valueDate,reference:t.reference??"",paymentMethod:t.paymentMethod??"BANK_TRANSFER",saveAsDraft:!1})}},{name:"list_supplier_credit_note_refunds",description:"List refund payments for a supplier credit note.",params:{creditNoteId:{type:"string",description:"Supplier credit note resourceId"}},required:["creditNoteId"],group:"supplier_credit_notes",readOnly:!0,searchHint:"list refunds on a supplier credit note",isConcurrencySafe:!0,maxResultSizeChars:5e4,execute:async(e,t)=>j0(e.client,t.creditNoteId)},{name:"list_currencies",description:"List currencies enabled for the organization. Returns currency code, name, symbol, and whether it is the base currency.",params:{},required:[],group:"currencies",readOnly:!0,searchHint:"list active currencies in organization",isConcurrencySafe:!0,maxResultSizeChars:5e4,execute:async e=>Lf(e.client)},{name:"add_currency",description:"Enable one or more currencies for the organization.",params:{currencies:{type:"array",items:{type:"string"},description:'Currency codes to add (e.g., ["USD", "EUR"])'}},required:["currencies"],group:"currencies",readOnly:!1,searchHint:"add new currency to organization",execute:async(e,t)=>{let r=t.currencies,n=await Lf(e.client),o=new Set(n.data.map(c=>c.currencyCode.toUpperCase())),i=r.filter(c=>o.has(c.toUpperCase())),s=r.filter(c=>!o.has(c.toUpperCase()));if(s.length===0)return{_guard:"duplicate_skipped",message:`All currencies already enabled: ${r.join(", ")}.`,existing:i};let a=await B0(e.client,s);return i.length>0?{...a,_note:`Skipped already-enabled: ${i.join(", ")}`}:a}},{name:"list_currency_rates",description:"List exchange rates for a specific currency. IMPORTANT: You MUST call list_currencies first to discover which currencies the org has enabled \u2014 never guess or assume currency codes.",params:{currencyCode:{type:"string",description:'Currency code (e.g., "USD")'},...h$},required:["currencyCode"],group:"currencies",readOnly:!0,searchHint:"list exchange rates for a currency pair",isConcurrencySafe:!0,maxResultSizeChars:5e4,execute:async(e,t)=>{let{limit:r,offset:n}=GJ(t),o=t.currencyCode;return Lp((i,s)=>U0(e.client,o,{limit:s,offset:i}),r,n,100)}},{name:"add_currency_rate",description:'Add or set an exchange rate for a currency. ALWAYS use this tool even when the user says "update rate" \u2014 it handles both new and existing rates. Rate is relative to the base currency. Call list_currencies first to get valid currency codes.',params:{currencyCode:{type:"string",description:"Currency code"},rate:{type:"number",description:"Exchange rate (e.g., 1.35 for 1 USD = 1.35 SGD)"},rateApplicableFrom:{type:"string",description:"Start date (YYYY-MM-DD)"},rateApplicableTo:{type:"string",description:"End date (YYYY-MM-DD, optional)"}},required:["currencyCode","rate","rateApplicableFrom"],group:"currencies",readOnly:!1,searchHint:"add new exchange rate for currency pair",execute:async(e,t)=>q0(e.client,t.currencyCode,{rate:t.rate,rateApplicableFrom:t.rateApplicableFrom,rateApplicableTo:t.rateApplicableTo})},{name:"update_currency_rate",description:'Update an EXISTING exchange rate record by its resourceId. Requires the rate resourceId from list_currency_rates. WARNING: If the user says "update the rate" or "set the rate", they almost always mean add_currency_rate (which creates/overwrites for a date). Only use this tool when explicitly modifying an existing rate record by ID.',params:{currencyCode:{type:"string",description:"Currency code"},resourceId:{type:"string",description:"Rate resourceId"},rate:{type:"number",description:"New exchange rate"},rateApplicableFrom:{type:"string",description:"Start date (YYYY-MM-DD)"},rateApplicableTo:{type:"string",description:"End date (YYYY-MM-DD, optional)"}},required:["currencyCode","resourceId","rate","rateApplicableFrom"],group:"currencies",readOnly:!1,searchHint:"update existing exchange rate value",execute:async(e,t)=>z0(e.client,t.currencyCode,t.resourceId,{rate:t.rate,rateApplicableFrom:t.rateApplicableFrom,rateApplicableTo:t.rateApplicableTo})},{name:"start_currency_rates_import_job",description:"Start an async job to import currency rates from a CSV file URL.",params:{currencyCode:{type:"string",description:"Currency code"},csvUrl:{type:"string",description:"URL of the CSV file to import"}},required:["currencyCode","csvUrl"],group:"currencies",readOnly:!1,searchHint:"import exchange rates from external source",execute:async(e,t)=>Y0(e.client,t.currencyCode,t.csvUrl)},{name:"get_currency_rates_import_job_status",description:"Check the status of a currency rates import job.",params:{jobId:{type:"string",description:"Job ID from start_currency_rates_import_job"}},required:["jobId"],group:"currencies",readOnly:!0,searchHint:"check status of currency rates import job",isConcurrencySafe:!0,maxResultSizeChars:2e4,execute:async(e,t)=>J0(e.client,t.jobId)},{name:"bulk_upsert_currency_rates",description:"Create exchange rates in bulk (max 500 per call). Auto-enables currencies not yet enabled in the org \u2014 no need to call add_currency first. Requires rateDirection per rate. Response surfaces per-row failures: `failedRows[]` (each with rowIndex, columnName, columnValue, errorCode, errorMessage) + `failedCount` alongside `resourceIds[]` for successful inserts. Omitting `rateApplicableTo` defaults it to `rateApplicableFrom - 0.999ms` (no temporal gap).",params:{rates:{type:"array",description:"Array of exchange rates to create",items:{type:"object",properties:{sourceCurrencyCode:{type:"string",description:"Source currency code (ISO 4217, e.g. USD, EUR)"},rate:{type:"number",description:"Exchange rate value (must be > 0)"},rateDirection:{type:"string",description:"Rate direction",enum:["FUNCTIONAL_TO_SOURCE","SOURCE_TO_FUNCTIONAL"]},rateApplicableFrom:{type:"string",description:"Rate start date (YYYY-MM-DD)"},rateApplicableTo:{type:"string",description:"Rate end date (YYYY-MM-DD, optional)"}},required:["sourceCurrencyCode","rate","rateDirection","rateApplicableFrom"]}}},required:["rates"],group:"currencies",readOnly:!1,searchHint:"bulk create or update multiple currency rates",execute:async(e,t)=>(await G0(e.client,t.rates)).data},gt("list_tax_profiles","List tax profiles (GST, VAT, etc.). Returns name, rate, tax type.","tax_profiles",(e,t,r)=>fu(e,{limit:r,offset:t}),"list tax profiles GST VAT rates"),gt("list_tax_types","List available tax types. Use the tax type code when creating tax profiles.","tax_profiles",(e,t,r)=>tb(e,{limit:r,offset:t}),"list available tax types for profile creation"),{name:"create_tax_profile",description:"Create a new tax profile. List tax types first to get the taxTypeCode. Automatically checks for duplicates by name \u2014 returns existing profile if found.",params:{name:{type:"string",description:'Tax profile name (e.g., "GST 9%")'},taxRate:{type:"number",description:"Tax rate as percentage (e.g., 9 for 9%)"},taxTypeCode:{type:"string",description:"Tax type code (from list_tax_types)"}},required:["name","taxRate","taxTypeCode"],group:"tax_profiles",readOnly:!1,searchHint:"create new tax profile GST VAT rate",execute:async(e,t)=>{let r=t.name,n=await pb(e.client,r);return n?{_guard:"duplicate_skipped",message:`Tax profile "${r}" already exists.`,existing:n}:rb(e.client,{name:r,taxRate:t.taxRate,taxTypeCode:t.taxTypeCode})}},gt("list_cash_in","List cash-in entries (direct cash receipts). Paginated.","cash_entries",(e,t,r)=>Qb(e,{limit:r,offset:t}),"list cash in receipt entries with pagination"),{name:"create_cash_in",description:`Record money received INTO a bank account from an EXTERNAL source (customer payment, refund received, deposit). For inter-account moves use create_cash_transfer.
|
|
@@ -718,7 +718,7 @@ lines = offsetting entries: { accountResourceId, type: 'DEBIT' (typical for the
|
|
|
718
718
|
|
|
719
719
|
NOT for external parties \u2014 use create_cash_in (receiving) / create_cash_out (paying).
|
|
720
720
|
|
|
721
|
-
cashOut = source, cashIn = destination. Each side needs accountResourceId + amount. reference auto-generated if omitted. Do NOT send currency/exchangeRate (derived server-side).`,params:{reference:{type:"string",description:"Reference number"},valueDate:{type:"string",description:"Date (YYYY-MM-DD)"},cashOut:{type:"object",properties:{accountResourceId:{type:"string",description:"Source bank account resourceId"},amount:{type:"number",description:"Transfer amount"}},required:["accountResourceId","amount"]},cashIn:{type:"object",properties:{accountResourceId:{type:"string",description:"Destination bank account resourceId"},amount:{type:"number",description:"Transfer amount"}},required:["accountResourceId","amount"]},tags:{type:"array",items:{type:"string"},description:"Tags (string array)"},saveAsDraft:{type:"boolean",description:"Save as draft (default true)"}},required:["valueDate","cashOut","cashIn"],group:"cash_transfers",readOnly:!1,searchHint:"create cash transfer between bank accounts",execute:async(e,t)=>{let r={...t};return r.reference||(r.reference=`CT-${Date.now()}`),Af(e.client,r)}},pn("delete_cash_in","Delete (void) a cash-in entry. Uses parentEntityResourceId from create response.","cash_entries",(e,t)=>_s(e,t),"delete void a cash in receipt entry"),pn("delete_cash_out","Delete (void) a cash-out entry. Uses parentEntityResourceId from create response.","cash_entries",(e,t)=>_s(e,t),"delete void a cash out payment entry"),pn("delete_cash_transfer","Delete (void) a cash transfer. Uses parentEntityResourceId from create response.","cash_transfers",(e,t)=>_s(e,t),"delete void a cash transfer between accounts"),gt("list_scheduled_invoices","List scheduled (recurring) invoices. Paginated.","schedulers",(e,t,r)=>nv(e,{limit:r,offset:t}),"list recurring scheduled invoices subscriptions"),gt("list_scheduled_bills","List scheduled (recurring) bills. Paginated.","schedulers",(e,t,r)=>ov(e,{limit:r,offset:t}),"list recurring scheduled bills subscriptions"),gt("list_scheduled_journals","List scheduled (recurring) journals. Paginated.","schedulers",(e,t,r)=>iv(e,{limit:r,offset:t}),"list recurring scheduled journal entries"),{name:"get_bank_account",description:"Get full bank account details by resourceId.",params:{resourceId:{type:"string",description:"Bank account resourceId"}},required:["resourceId"],group:"bank",readOnly:!0,searchHint:"get bank account details balance by id",isConcurrencySafe:!0,maxResultSizeChars:2e4,execute:async(e,t)=>Yc(e.client,t.resourceId)},Rt({name:"search_bank_records",description:"Search bank records for a specific account.
|
|
721
|
+
cashOut = source, cashIn = destination. Each side needs accountResourceId + amount. reference auto-generated if omitted. Do NOT send currency/exchangeRate (derived server-side).`,params:{reference:{type:"string",description:"Reference number"},valueDate:{type:"string",description:"Date (YYYY-MM-DD)"},cashOut:{type:"object",properties:{accountResourceId:{type:"string",description:"Source bank account resourceId"},amount:{type:"number",description:"Transfer amount"}},required:["accountResourceId","amount"]},cashIn:{type:"object",properties:{accountResourceId:{type:"string",description:"Destination bank account resourceId"},amount:{type:"number",description:"Transfer amount"}},required:["accountResourceId","amount"]},tags:{type:"array",items:{type:"string"},description:"Tags (string array)"},saveAsDraft:{type:"boolean",description:"Save as draft (default true)"}},required:["valueDate","cashOut","cashIn"],group:"cash_transfers",readOnly:!1,searchHint:"create cash transfer between bank accounts",execute:async(e,t)=>{let r={...t};return r.reference||(r.reference=`CT-${Date.now()}`),Af(e.client,r)}},pn("delete_cash_in","Delete (void) a cash-in entry. Uses parentEntityResourceId from create response.","cash_entries",(e,t)=>_s(e,t),"delete void a cash in receipt entry"),pn("delete_cash_out","Delete (void) a cash-out entry. Uses parentEntityResourceId from create response.","cash_entries",(e,t)=>_s(e,t),"delete void a cash out payment entry"),pn("delete_cash_transfer","Delete (void) a cash transfer. Uses parentEntityResourceId from create response.","cash_transfers",(e,t)=>_s(e,t),"delete void a cash transfer between accounts"),gt("list_scheduled_invoices","List scheduled (recurring) invoices. Paginated.","schedulers",(e,t,r)=>nv(e,{limit:r,offset:t}),"list recurring scheduled invoices subscriptions"),gt("list_scheduled_bills","List scheduled (recurring) bills. Paginated.","schedulers",(e,t,r)=>ov(e,{limit:r,offset:t}),"list recurring scheduled bills subscriptions"),gt("list_scheduled_journals","List scheduled (recurring) journals. Paginated.","schedulers",(e,t,r)=>iv(e,{limit:r,offset:t}),"list recurring scheduled journal entries"),{name:"get_bank_account",description:"Get full bank account details by resourceId.",params:{resourceId:{type:"string",description:"Bank account resourceId"}},required:["resourceId"],group:"bank",readOnly:!0,searchHint:"get bank account details balance by id",isConcurrencySafe:!0,maxResultSizeChars:2e4,execute:async(e,t)=>Yc(e.client,t.resourceId)},Rt({name:"search_bank_records",description:"Search bank records for a specific account. Call list_bank_accounts first to get accountResourceId.",group:"bank",fields:Vp,defaults:Hp,fetcher:Cy,pathParam:"accountResourceId",pathParamDescription:"Bank account resourceId (UUID). Call list_bank_accounts first.",searchHint:"find bank records statement entries transactions by status date amount description payer reference range"}),Rt({name:"search_cashflow_transactions",description:"Search cashflow transactions (unified ledger). Filter by type, direction (PAYIN/PAYOUT), status, date, reference, account.",group:"cashflow",fields:Ni,defaults:ki,fetcher:Es,searchHint:"find cashflow transactions by type direction status"}),gt("list_bookmarks","List organization bookmarks (saved values/settings).","bookmarks",(e,t,r)=>V0(e,{limit:r,offset:t}),"list saved bookmarks reports shortcuts"),{name:"get_bookmark",description:"Get a bookmark by resourceId.",params:{resourceId:{type:"string",description:"Bookmark resourceId"}},required:["resourceId"],group:"bookmarks",readOnly:!0,searchHint:"get bookmark saved report details",isConcurrencySafe:!0,maxResultSizeChars:2e4,execute:async(e,t)=>H0(e.client,t.resourceId)},{name:"create_bookmarks",description:"Create one or more bookmarks. categoryCode must be one of: AUDIT_AND_ASSURANCE, BANKING_AND_FINANCE, BUDGETS_AND_CONTROLS, EMPLOYEES_AND_PAYROLL, EXTERNAL_DOCUMENTS, GENERAL_INFORMATION, OWNERS_AND_DIRECTORS, TAXATION_AND_COMPLIANCE, WORKFLOWS_AND_PROCESSES.",params:{items:{type:"array",items:{type:"object",properties:{name:{type:"string",description:"Bookmark name"},value:{type:"string",description:"Bookmark value"},categoryCode:{type:"string",description:"Category code (e.g., GENERAL_INFORMATION)"},datatypeCode:{type:"string",description:"Datatype code (default: TEXT)"}},required:["name","value","categoryCode","datatypeCode"]},description:"Bookmarks to create"}},required:["items"],group:"bookmarks",readOnly:!1,searchHint:"create new bookmark saved report shortcut",execute:async(e,t)=>jf(e.client,t.items)},{name:"update_bookmark",description:"Update an existing bookmark (name, value, or category). Use when modifying a previously created bookmark.",params:{resourceId:{type:"string",description:"Bookmark resourceId"},name:{type:"string",description:"New name"},value:{type:"string",description:"New value"},categoryCode:{type:"string",description:"New category code"}},required:["resourceId"],group:"bookmarks",readOnly:!1,searchHint:"update bookmark name or configuration",execute:async(e,t)=>{let{resourceId:r,...n}=t;return W0(e.client,r,n)}},gt("list_org_users","List organization users (team members). Returns name, email, roles.","org_users",(e,t,r)=>Z0(e,{limit:r,offset:t}),"list organization users team members"),Rt({name:"search_org_users",description:"Search organization users. For OR (name or email), use filter param.",group:"org_users",fields:gf,defaults:yf,fetcher:K0,searchHint:"find organization users team members by name email role status OR search"}),{name:"invite_org_user",description:"Invite a new user to the organization.",params:{firstName:{type:"string",description:"First name"},lastName:{type:"string",description:"Last name"},email:{type:"string",description:"Email address"},moduleRoles:{type:"array",items:{type:"object",properties:{moduleName:{type:"string",description:"Module name: ORGANIZATION, USER_MANAGEMENT, ACCOUNTING, SALES, PURCHASES, REPORTS, or FIXED_ASSET"},roleCode:{type:"string",description:"Role code: ADMIN, PREPARER, MEMBER, or NO_ACCESS"}},required:["moduleName","roleCode"]},description:"Module role assignments"}},required:["firstName","lastName","email","moduleRoles"],group:"org_users",readOnly:!1,searchHint:"invite new user to join organization team",execute:async(e,t)=>Pu(e.client,t)},{name:"update_org_user",description:"Update an organization user's module roles.",params:{resourceId:{type:"string",description:"Org user resourceId"},moduleRoles:{type:"array",items:{type:"object",properties:{moduleName:{type:"string",description:"Module name: ORGANIZATION, USER_MANAGEMENT, ACCOUNTING, SALES, PURCHASES, REPORTS, or FIXED_ASSET"},roleCode:{type:"string",description:"Role code: ADMIN, PREPARER, MEMBER, or NO_ACCESS"}},required:["moduleName","roleCode"]}}},required:["resourceId","moduleRoles"],group:"org_users",readOnly:!1,searchHint:"update organization user role permissions",execute:async(e,t)=>X0(e.client,t.resourceId,{moduleRoles:t.moduleRoles})},{name:"remove_org_user",description:"Remove a user from the organization.",params:{resourceId:{type:"string",description:"Org user resourceId"}},required:["resourceId"],group:"org_users",readOnly:!1,searchHint:"remove user from organization team",isDestructive:!0,execute:async(e,t)=>Q0(e.client,t.resourceId)},{name:"list_payments",description:"List recent payments across all transaction types. Paginated.",params:{...h$},required:[],group:"payments",readOnly:!0,searchHint:"list payment records transactions with pagination",isConcurrencySafe:!0,maxResultSizeChars:5e4,execute:async(e,t)=>{let r=t.limit,n=t.offset;return a0(e.client,{limit:r??100,offset:n??0})}},Rt({name:"search_payments",description:"Search payments by type, direction (PAYIN/PAYOUT), method, date, reference, account.",group:"payments",fields:Jp,defaults:Gp,fetcher:wf,searchHint:"find payments by type direction method date account"}),{name:"download_export",description:`Analytical / financial / audit report XLSX. Returns { fileName, fileUrl } (pre-signed, ~5 min).
|
|
722
722
|
|
|
723
723
|
Use this tool (not export_records) for: analysis-* (anomalous-invoices/bills, cashflow-anomalies, gl-journal-audit, exchange-rate-audit, receivables-customer-risk, cash-expense-health); statements (trial-balance, balance-sheet, profit-and-loss, cashflow, general-ledger, cash-balance); aging (ar-report, ap-report); summaries (sales, sales-payments, purchase, purchase-payments, customer-revenue, product-sales, periodic-revenue, supplier-expense, product-purchase, periodic-expense, credit-note, sales-cost-margin); inventory movement (sale-/purchase-inventory-movement); statement-of-account-export.
|
|
724
724
|
|