jaz-clio 5.4.18 → 5.4.20

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.
Files changed (25) hide show
  1. package/README.md +1 -1
  2. package/assets/skills/api/SKILL.md +1 -1
  3. package/assets/skills/cli/SKILL.md +1 -1
  4. package/assets/skills/conversion/SKILL.md +1 -1
  5. package/assets/skills/jobs/SKILL.md +1 -1
  6. package/assets/skills/jobs/references/audit-prep.md +2 -2
  7. package/assets/skills/jobs/references/fa-review.md +3 -2
  8. package/assets/skills/jobs/references/month-end-close.md +4 -4
  9. package/assets/skills/jobs/references/quarter-end-close.md +2 -2
  10. package/assets/skills/jobs/references/year-end-close.md +2 -1
  11. package/assets/skills/practice/SKILL.md +1 -1
  12. package/assets/skills/transaction-recipes/SKILL.md +1 -1
  13. package/assets/skills/transaction-recipes/references/accrued-expenses.md +2 -1
  14. package/assets/skills/transaction-recipes/references/bad-debt-provision.md +1 -0
  15. package/assets/skills/transaction-recipes/references/bank-loan.md +2 -1
  16. package/assets/skills/transaction-recipes/references/declining-balance.md +1 -1
  17. package/assets/skills/transaction-recipes/references/deferred-revenue.md +2 -1
  18. package/assets/skills/transaction-recipes/references/dividend.md +1 -0
  19. package/assets/skills/transaction-recipes/references/employee-accruals.md +3 -1
  20. package/assets/skills/transaction-recipes/references/fixed-deposit.md +1 -1
  21. package/assets/skills/transaction-recipes/references/ifrs16-lease.md +2 -1
  22. package/assets/skills/transaction-recipes/references/prepaid-amortization.md +1 -0
  23. package/assets/skills/transaction-recipes/references/provisions.md +2 -1
  24. package/cli.mjs +203 -197
  25. package/package.json +1 -1
package/README.md CHANGED
@@ -54,7 +54,7 @@ clio practice create-engagement acme-pte-ltd --type monthly-close --period 2026-
54
54
 
55
55
  ## MCP Server
56
56
 
57
- 274 CLI tools, available to any AI agent that speaks MCP. Runs locally — no cloud, no ports. Includes the v5.2.0 `practice_*` tools (init, onboard_client, list_clients, load_client, create_engagement, load_engagement) so an agent in Claude Desktop or Claude Code can scaffold and load client workspaces conversationally.
57
+ 275 CLI tools, available to any AI agent that speaks MCP. Runs locally — no cloud, no ports. Includes the v5.2.0 `practice_*` tools (init, onboard_client, list_clients, load_client, create_engagement, load_engagement) so an agent in Claude Desktop or Claude Code can scaffold and load client workspaces conversationally.
58
58
 
59
59
  **Claude Code:**
60
60
  ```bash
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-api
3
- version: 5.4.18
3
+ version: 5.4.20
4
4
  description: >-
5
5
  Use this skill whenever you call, debug, or review code that touches the Jaz
6
6
  REST API. Covers field names, response shapes, 141 production gotchas, error
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-cli
3
- version: 5.4.18
3
+ version: 5.4.20
4
4
  description: >-
5
5
  Use this skill when running Clio CLI commands, building shell scripts with
6
6
  Clio, debugging auth issues, understanding --json output, paginating results,
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-conversion
3
- version: 5.4.18
3
+ version: 5.4.20
4
4
  description: >-
5
5
  Use this skill when migrating accounting data into Jaz — importing from Xero,
6
6
  QuickBooks, Sage, MYOB, or Excel exports. Covers the full conversion pipeline:
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-jobs
3
- version: 5.4.18
3
+ version: 5.4.20
4
4
  description: >-
5
5
  Use this skill for recurring accounting workflows — month/quarter/year-end
6
6
  close, bank reconciliation, GST/VAT filing, payment runs, credit control,
@@ -27,7 +27,7 @@
27
27
  - **`search_journals(filter: {status: {eq: 'DRAFT'}, valueDate: {between: [<FY-start>, <FY-end>]}})`** — step 12: must return zero rows before pack hand-off.
28
28
  - **`search_invoices(filter: {status: {eq: 'DRAFT'}, valueDate: {between: [<FY-start>, <FY-end>]}})`** — step 12: same gate, sales side.
29
29
  - **`search_bills(filter: {status: {eq: 'DRAFT'}, valueDate: {between: [<FY-start>, <FY-end>]}})`** — step 12: same gate, purchases side.
30
- - **`update_journal(resourceId: <each id>, saveAsDraft: false) // loop per id — no bulk-finalize-journals tool yet`** — step 12 fallback: clear residual drafts before pack hand-off.
30
+ - **`bulk_update_journals(items: [{resourceId: <id>, saveAsDraft: false}, ...])`** — step 12 fallback: clear residual drafts before pack hand-off.
31
31
  - **`update_account(resourceId: <CoA root>, lockDate: <FY-end>)`** — step 12 final: lock the period to prevent backdated entries during fieldwork.
32
32
 
33
33
  ### Calculators (cross-check schedules — no API key needed)
@@ -198,7 +198,7 @@ search_invoices(filter: {status: {eq: 'DRAFT'}, valueDate: {between: ['2025-01-0
198
198
  search_bills(filter: {status: {eq: 'DRAFT'}, valueDate: {between: ['2025-01-01', '2025-12-31']}})
199
199
  ```
200
200
 
201
- ALL three must return zero. If any return rows: collect `resourceId`s, classify (delete vs finalize) per practitioner judgment, and `update_<entity>(resourceId, saveAsDraft: false) // per-id; bulk_finalize_drafts only supports invoice/bill/CN, not journal/cash` for the keep-set.
201
+ ALL three must return zero. If any return rows: collect `resourceId`s, classify (delete vs finalize) per practitioner judgment, and `bulk_update_journals(items: [{resourceId, saveAsDraft: false}, ...]) for journals; bulk_finalize_drafts(items: [{type, resourceId}, ...]) for invoices/bills/CN` for the keep-set.
202
202
 
203
203
  Then lock the period:
204
204
  ```
@@ -13,7 +13,7 @@
13
13
  - **`generate_general_ledger(accountResourceId: <FA category GL>, period_start, period_end)`** — step 4: per-FA-category GL movement vs FA register.
14
14
  - **`update_fixed_asset(resourceId: <id>, status: 'DISPOSED' | 'WRITTEN_OFF', disposalDate, disposalProceeds)`** — step 5: status updates for disposals. Mirror endpoints `POST /api/v1/mark-as-sold/fixed-assets` (sale) / `POST /api/v1/discard-fixed-assets/{id}` (scrap).
15
15
  - **`plan_recipe(recipe: 'asset-disposal', ...)` + `execute_recipe(...)`** — step 5: invoke per disposal identified during review (per `asset-disposal.md` recipe).
16
- - **`update_journal(resourceId: <each id>, saveAsDraft: false) // loop per id — no bulk-finalize-journals tool yet`** — step 5 / 6: finalize disposal journals + any pending DDB / 150DB depreciation DRAFTs from `declining-balance.md` recipe.
16
+ - **`bulk_update_journals(items: [{resourceId: <id>, saveAsDraft: false}, ...])`** — step 5 / 6: finalize disposal journals + any pending DDB / 150DB depreciation DRAFTs from `declining-balance.md` recipe.
17
17
 
18
18
  ### Calculators (cross-check, no API key needed)
19
19
  - **`clio calc depreciation --cost --salvage --life --method --frequency annual --json`** — step 4 per-asset cross-check.
@@ -72,7 +72,7 @@ For each ACTIVE SL asset (Jaz auto-depreciates):
72
72
 
73
73
  For each ACTIVE DDB / 150DB asset (recipe-managed, see `declining-balance.md`):
74
74
  - Per capsule: `search_journals(filter: {capsuleResourceId: {eq: <dep capsule>}, valueDate: {between: [<year-start>, <year-end>]}, status: 'DRAFT'})`. Should be zero — all 12 months' DRAFT depreciation journals should already be FINALIZED via monthly-close.
75
- - If non-zero: `update_journal(resourceId: <each id>, saveAsDraft: false) // loop per id — no bulk-finalize-journals tool yet` for each remaining DRAFT.
75
+ - If non-zero: `bulk_update_journals(items: [{resourceId: <id>, saveAsDraft: false}, ...])` for each remaining DRAFT.
76
76
 
77
77
  Cross-check via `clio calc depreciation --frequency annual --json` per asset; auditor will sample-test.
78
78
 
@@ -82,6 +82,7 @@ For each disposal identified in step 2:
82
82
 
83
83
  ```
84
84
  plan_recipe(
85
+ // Note: gl*, capsuleType, capsuleName, bankAccountResourceId, vendor, customer below are illustrative — auto-resolved at execute time from CoA / CLIENT.md, not real plan_recipe params.
85
86
  recipe: 'asset-disposal',
86
87
  cost, salvageValue, usefulLifeYears, acquisitionDate, disposalDate, proceeds, method,
87
88
  ...,
@@ -30,7 +30,7 @@
30
30
  - **`generate_profit_and_loss(period_start, period_end)`** — step 15.
31
31
  - **`generate_balance_sheet(period_end)`** — step 16.
32
32
  - **`search_journals(filter: {status: 'DRAFT', valueDate: {between: [<period-start>, <period-end>]}})`** — step 17: gate on zero drafts.
33
- - **`update_journal(resourceId: <each id>, saveAsDraft: false) // loop per id — no bulk-finalize-journals tool yet`** — step 17: clear residual drafts before lock.
33
+ - **`bulk_update_journals(items: [{resourceId: <id>, saveAsDraft: false}, ...])`** — step 17: clear residual drafts before lock.
34
34
  - **`update_account(resourceId: <CoA root>, lockDate: <period-end>)`** — step 18: lock the period.
35
35
 
36
36
  ### Calculators (cross-check, no API key needed)
@@ -107,7 +107,7 @@ For each `CLIENT.recurring_accruals[]` where `last_posted < '2025-01-31'`:
107
107
  4. Resolve `requiredAccounts` + `needsContact` (search/create as needed).
108
108
  5. `execute_recipe(...)`. Engine emits dual-entry accrual + reversal scheduler.
109
109
  6. `validate_journal_draft(resourceId: <id>)` for each draft journal.
110
- 7. After all accruals processed: `update_journal(resourceId: <each id>, saveAsDraft: false) // loop per id — no bulk-finalize-journals tool yet`.
110
+ 7. After all accruals processed: `bulk_update_journals(items: [{resourceId: <id>, saveAsDraft: false}, ...])`.
111
111
 
112
112
  Cross-check: `generate_trial_balance(period_end: '2025-01-31')`. Sum credit movements against accrual liability accounts. Verify `|sum - expected| ≤ CLIENT.materiality_threshold`.
113
113
 
@@ -117,7 +117,7 @@ For each existing `Prepaid Expenses` capsule (via `search_capsules(filter: {caps
117
117
 
118
118
  1. `search_journals(filter: {capsuleResourceId: {eq: <capsule.id>}, valueDate: {between: ['2025-01-01', '2025-01-31']}, status: {eq: 'DRAFT'}})`. The recipe pre-emitted this period's recognition journal as DRAFT at recipe-execution time.
119
119
  2. If empty: either the recipe was set up wrong (no journal for this period — investigate via `search_journals` without status filter to see if it's already ACTIVE, then skip), OR the practitioner went off-recipe. Surface to practitioner.
120
- 3. If found: collect resourceIds, then `update_journal(resourceId: <each id>, saveAsDraft: false) // loop per id — no bulk-finalize-journals tool yet`.
120
+ 3. If found: collect resourceIds, then `bulk_update_journals(items: [{resourceId: <id>, saveAsDraft: false}, ...])`.
121
121
  4. New prepaid setups during this period (a new prepaid started this month): invoke `plan_recipe(recipe: 'prepaid-expense', ...)` per `prepaid-amortization.md` — this creates the bill + N future-dated DRAFT journals; the current period's journal is then in the bulk_finalize_drafts queue above.
122
122
 
123
123
  ### Step 8 — Deferred revenue recognition
@@ -148,7 +148,7 @@ For each active loan capsule (via `search_capsules(filter: {capsuleType: {eq: 'L
148
148
 
149
149
  1. `search_journals(filter: {capsuleResourceId: {eq: <loan-capsule-id>}, valueDate: {between: ['2025-01-01', '2025-01-31']}, status: {eq: 'DRAFT'}})`. The `loan` recipe pre-emitted all `termMonths` future-dated DRAFT journals at execution time — this period's repayment is one of them.
150
150
  2. Should return exactly one DRAFT journal per active loan. Each is a 3-line entry (debit Loan Payable, debit Interest Expense, credit Cash) with the correct amortization split for the period.
151
- 3. Collect resourceIds, then `update_journal(resourceId: <each id>, saveAsDraft: false) // loop per id — no bulk-finalize-journals tool yet`.
151
+ 3. Collect resourceIds, then `bulk_update_journals(items: [{resourceId: <id>, saveAsDraft: false}, ...])`.
152
152
  4. Do NOT post manual loan-interest accruals — the recipe already emitted the journal with the correct split per `clio calc loan` schedule.
153
153
 
154
154
  If a loan was newly disbursed this period: invoke `plan_recipe(recipe: 'loan', ...)` then `execute_recipe`; the disbursement (cash-in) and this period's repayment journal are both included in the engine output.
@@ -15,7 +15,7 @@
15
15
  - **`search_journals(filter: {tag: 'bonus-accrual', valueDate: {between: [<Q-start>, <Q-end>]}})`** — Q3 bonus YTD pull.
16
16
  - **`create_journal(...)`** — Q3 bonus true-up adjustment (manual one-off).
17
17
  - **`search_capsules(filter: {capsuleType: {eq: 'Intercompany'}})`** — Q4 IC reconciliation per pair of entities (multi-org coordination — see `intercompany.md` recipe).
18
- - **`search_capsules(filter: {capsuleType: {eq: 'Provisions'}})` + `update_journal(resourceId: <each id>, saveAsDraft: false) // loop per id — no bulk-finalize-journals tool yet`** — Q5 finalize each provision capsule's quarter-end DRAFT unwinding journals.
18
+ - **`search_capsules(filter: {capsuleType: {eq: 'Provisions'}})` + `bulk_update_journals(items: [{resourceId: <id>, saveAsDraft: false}, ...])`** — Q5 finalize each provision capsule's quarter-end DRAFT unwinding journals.
19
19
  - **`generate_trial_balance(period_end: <Q-end>)`** — verification.
20
20
  - **`update_account(resourceId: <CoA root>, lockDate: <Q-end>)`** — final lock.
21
21
 
@@ -121,7 +121,7 @@ Per capsule: this period's quarter-end unwinding DRAFT journals (3 monthly DRAFT
121
121
 
122
122
  ```
123
123
  search_journals(filter: {capsuleResourceId: {eq: <provision capsule id>}, valueDate: {between: ['2025-01-01', '2025-03-31']}, status: {eq: 'DRAFT'}})
124
- update_journal(resourceId: <each id>, saveAsDraft: false) // loop per id — no bulk-finalize-journals tool yet
124
+ bulk_update_journals(items: [{resourceId: <id>, saveAsDraft: false}, ...])
125
125
  ```
126
126
 
127
127
  If practitioner determines remeasurement is needed (cash-flow estimate changed, discount rate moved): see `provisions.md` step 6 — recompute, post adjustment, reverse remaining DRAFT unwinding journals, re-execute recipe with new inputs.
@@ -109,6 +109,7 @@ If `CLIENT.dividend_policy.declared_for_FY > 0`:
109
109
 
110
110
  ```
111
111
  plan_recipe(
112
+ // Note: gl*, capsuleType, capsuleName, bankAccountResourceId, vendor, customer below are illustrative — auto-resolved at execute time from CoA / CLIENT.md, not real plan_recipe params.
112
113
  recipe: 'dividend',
113
114
  amount: <gross-dividend>,
114
115
  withholdingRate: <CLIENT.dividend_policy.withholding_rate>,
@@ -194,7 +195,7 @@ search_invoices(filter: {status: {eq: 'DRAFT'}, valueDate: {between: ['2025-01-0
194
195
  search_bills(filter: {status: {eq: 'DRAFT'}, valueDate: {between: ['2025-01-01', '2025-12-31']}})
195
196
  ```
196
197
 
197
- ALL three must return zero. If any: `update_<entity>(resourceId, saveAsDraft: false) // per-id; bulk_finalize_drafts only supports invoice/bill/CN, not journal/cash` for the keep-set; `delete_*` for the discards.
198
+ ALL three must return zero. If any: `bulk_update_journals(items: [{resourceId, saveAsDraft: false}, ...]) for journals; bulk_finalize_drafts(items: [{type, resourceId}, ...]) for invoices/bills/CN` for the keep-set; `delete_*` for the discards.
198
199
 
199
200
  ### Y8 — Lock the year
200
201
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-practice
3
- version: 5.4.18
3
+ version: 5.4.20
4
4
  description: >-
5
5
  Use this skill whenever an accounting practitioner is doing client work in
6
6
  Jaz — closing the books, filing GST, year-end statutory, onboarding a new
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-recipes
3
- version: 5.4.18
3
+ version: 5.4.20
4
4
  description: >-
5
5
  Use this skill when modeling complex multi-step accounting transactions —
6
6
  anything that spans multiple periods, involves changing amounts, or requires
@@ -17,7 +17,7 @@
17
17
  - **`search_contacts(filter: {name: {eq: <vendor>}})`** — step 3: resolve vendor (per `CLIENT.recurring_accruals[i].vendor`).
18
18
  - **`search_accounts(filter: {name: {in: ['<expense GL>', '<accrued liability GL>']}})`** — step 3: confirm both sides of the journal exist in CoA.
19
19
  - **`search_journals(filter: {capsuleResourceId: {eq: <id>}, valueDate: {between: [<period-start>, <period-end>]}, status: 'DRAFT'})`** — step 5 monthly: find this period's pre-emitted DRAFT for finalization.
20
- - **`update_journal(resourceId: <each id>, saveAsDraft: false) // loop per id — no bulk-finalize-journals tool yet`** — step 5: finalize this period's accrual + reversal pair.
20
+ - **`bulk_update_journals(items: [{resourceId: <id>, saveAsDraft: false}, ...])`** — step 5: finalize this period's accrual + reversal pair.
21
21
  - **`generate_trial_balance(period_end: <date>)`** — step 5 verification: confirm Accrued Expenses balance and net P&L impact.
22
22
 
23
23
  ### Cross-references
@@ -50,6 +50,7 @@ Returns `{ totalAccrued: 3000, schedule: [{accrualDate: '2025-01-31', reversalDa
50
50
 
51
51
  ```
52
52
  plan_recipe(
53
+ // Note: gl*, capsuleType, capsuleName, bankAccountResourceId, vendor, customer below are illustrative — auto-resolved at execute time from CoA / CLIENT.md, not real plan_recipe params.
53
54
  recipe: 'accrued-expense',
54
55
  amount: 3000,
55
56
  periods: 1,
@@ -77,6 +77,7 @@ If `topUpRequired` is below `CLIENT.materiality_threshold`: skip the recipe enti
77
77
 
78
78
  ```
79
79
  plan_recipe(
80
+ // Note: gl*, capsuleType, capsuleName, bankAccountResourceId, vendor, customer below are illustrative — auto-resolved at execute time from CoA / CLIENT.md, not real plan_recipe params.
80
81
  recipe: 'ecl',
81
82
  receivables: [
82
83
  {bucket: 'current', balance: 100000, lossRate: 0.005},
@@ -16,7 +16,7 @@
16
16
  - **`search_accounts(filter: {name: {in: ['Loan Payable', 'Interest Expense']}})`** — used in step 3: confirm liability + expense GL accounts exist.
17
17
  - **`search_capsules(filter: {capsuleType: {eq: 'Loan Repayment'}, name: {eq: <capsuleName>}})`** — used in step 0: detect duplicate setup before re-running. Loan capsules are unique per facility — duplicate creation is almost always an agent error.
18
18
  - **`generate_trial_balance(period_end: <date>)`** — used in step 5: verify the loan liability balance matches the schedule's `closingBalance` column.
19
- - **`update_journal(resourceId: <id>, saveAsDraft: false)`** — used in step 4 verification: lift draft journals to ACTIVE once practitioner confirms. (No bulk-finalize-journals tool today; loop per id.)
19
+ - **`update_journal(resourceId: <id>, saveAsDraft: false)`** — used in step 4 verification: lift draft journals to ACTIVE once practitioner confirms.
20
20
 
21
21
  ### Cross-references
22
22
  - Within an engagement: invoked from `practice/references/onboarding.md` (when the prior firm's loan transfers in via the conversion clearing account, then forward-recognition starts here) and from `practice/references/monthly-close.md` step 4 (monthly accruals do NOT include loan interest — interest is auto-emitted by the loan scheduler).
@@ -47,6 +47,7 @@ Returns: `{ perPeriodAmount: 1933.28, totalInterest: 15996.80, schedule: [{perio
47
47
 
48
48
  ```
49
49
  plan_recipe(
50
+ // Note: gl*, capsuleType, capsuleName, bankAccountResourceId, vendor, customer below are illustrative — auto-resolved at execute time from CoA / CLIENT.md, not real plan_recipe params.
50
51
  recipe: 'loan',
51
52
  principal: 100000,
52
53
  annualRate: 6,
@@ -15,7 +15,7 @@
15
15
  - **`search_capsules(filter: {capsuleType: {eq: 'Depreciation'}, name: {eq: <capsule.name>}})`** — step 0 idempotency check. One depreciation capsule per asset; duplicate setup is almost always an error.
16
16
  - **`search_accounts(filter: {name: {in: ['Vehicles', 'Accumulated Depreciation — Vehicles', 'Depreciation Expense']}})`** — step 3: confirm the asset, contra-asset, and expense GL accounts exist.
17
17
  - **`generate_trial_balance(period_end: <date>)`** — step 5: verify NBV matches schedule.
18
- - **`update_journal(resourceId: <each id>, saveAsDraft: false) // loop per id — no bulk-finalize-journals tool yet`** — step 5 monthly: finalize this period's pre-emitted DRAFT depreciation journal.
18
+ - **`bulk_update_journals(items: [{resourceId: <id>, saveAsDraft: false}, ...])`** — step 5 monthly: finalize this period's pre-emitted DRAFT depreciation journal.
19
19
 
20
20
  ### Cross-references
21
21
  - Within an engagement: invoked from `practice/references/monthly-close.md` step 9 (only when an asset uses non-SL method — Jaz native FA handles SL automatically). For SL: `create_fixed_asset` directly via `fixed-assets` tool family; do NOT use this recipe.
@@ -18,7 +18,7 @@
18
18
  - **`generate_trial_balance(period_end: <date>)`** — step 5: verify Deferred Revenue balance unwinds correctly.
19
19
  - **`search_capsules(filter: {capsuleType: {eq: 'Deferred Revenue'}, name: {eq: <capsule.name>}})`** — step 0 idempotency check.
20
20
  - **`finalize_invoice(resourceId: <id>)`** — step 4 fallback: lift the upfront invoice from DRAFT to ACTIVE once practitioner confirms the engagement is genuinely starting.
21
- - **`update_journal(resourceId: <each id>, saveAsDraft: false) // loop per id — no bulk-finalize-journals tool yet`** — step 5 monthly: finalize this period's pre-emitted DRAFT recognition journal.
21
+ - **`bulk_update_journals(items: [{resourceId: <id>, saveAsDraft: false}, ...])`** — step 5 monthly: finalize this period's pre-emitted DRAFT recognition journal.
22
22
 
23
23
  ### Cross-references
24
24
  - Within an engagement: invoked from `practice/references/monthly-close.md` step 8 (finalize this period's pre-emitted journal for existing capsules; create a new capsule for any new deferred arrangement starting this period).
@@ -49,6 +49,7 @@ Returns: `{ perPeriodAmount: 2000, recognitionStartDate: '2025-01-31', recogniti
49
49
 
50
50
  ```
51
51
  plan_recipe(
52
+ // Note: gl*, capsuleType, capsuleName, bankAccountResourceId, vendor, customer below are illustrative — auto-resolved at execute time from CoA / CLIENT.md, not real plan_recipe params.
52
53
  recipe: 'deferred-revenue',
53
54
  amount: 24000,
54
55
  periods: 12,
@@ -54,6 +54,7 @@ clio calc dividend --amount 200000 --withholding-rate 10 --currency PHP --json
54
54
 
55
55
  ```
56
56
  plan_recipe(
57
+ // Note: gl*, capsuleType, capsuleName, bankAccountResourceId, vendor, customer below are illustrative — auto-resolved at execute time from CoA / CLIENT.md, not real plan_recipe params.
57
58
  recipe: 'dividend',
58
59
  amount: 200000,
59
60
  withholdingRate: 0,
@@ -28,7 +28,7 @@ The two patterns share the same `Employee Benefits` capsule type but use differe
28
28
  - **`search_capsules(filter: {capsuleType: {eq: 'Employee Benefits'}})`** — step 0: discover existing leave + bonus capsules.
29
29
  - **`search_accounts(filter: {name: {in: ['Leave Expense', 'Leave Liability', 'Bonus Expense', 'Bonus Payable']}})`** — step 3.
30
30
  - **`search_journals(filter: {tag: 'leave-accrual', valueDate: {between: [<period-start>, <period-end>]}, status: 'DRAFT'})`** — step 5 monthly: pull this period's pre-emitted leave DRAFT.
31
- - **`update_journal(resourceId: <each id>, saveAsDraft: false) // loop per id — no bulk-finalize-journals tool yet`** — monthly finalize.
31
+ - **`bulk_update_journals(items: [{resourceId: <id>, saveAsDraft: false}, ...])`** — monthly finalize.
32
32
  - **`generate_trial_balance(period_end: <date>)`** — verification.
33
33
  - For year-end true-up: see `year-end-close.md` Y2 — manual journal pattern with HR-supplied actuals.
34
34
 
@@ -61,6 +61,7 @@ Returns: `{ totalAnnualCost: 84000, perPeriodAmount: 7000, schedule: [{period: 1
61
61
 
62
62
  ```
63
63
  plan_recipe(
64
+ // Note: gl*, capsuleType, capsuleName, bankAccountResourceId, vendor, customer below are illustrative — auto-resolved at execute time from CoA / CLIENT.md, not real plan_recipe params.
64
65
  recipe: 'leave-accrual',
65
66
  headcount: 20,
66
67
  daysPerEmployee: 14,
@@ -118,6 +119,7 @@ clio calc accrued-expense --amount <est> --periods 1 --start-date 2025-03-31 --j
118
119
 
119
120
  ```
120
121
  plan_recipe(
122
+ // Note: gl*, capsuleType, capsuleName, bankAccountResourceId, vendor, customer below are illustrative — auto-resolved at execute time from CoA / CLIENT.md, not real plan_recipe params.
121
123
  recipe: 'accrued-expense',
122
124
  amount: <est>,
123
125
  periods: 1,
@@ -16,7 +16,7 @@
16
16
  - **`search_accounts(filter: {name: {in: ['Fixed Deposit Receivable', 'Accrued Interest Receivable', 'Interest Income']}})`** — step 3.
17
17
  - **`search_contacts(filter: {supplier: true, name: {eq: <bank>}})`** — step 3 optional: bank contact for narrative.
18
18
  - **`generate_trial_balance(period_end: <date>)`** — step 5 verify accrued interest unwinds; FD principal stays at carrying amount until maturity.
19
- - **`update_journal(resourceId: <each id>, saveAsDraft: false) // loop per id — no bulk-finalize-journals tool yet`** — step 5 monthly finalize.
19
+ - **`bulk_update_journals(items: [{resourceId: <id>, saveAsDraft: false}, ...])`** — step 5 monthly finalize.
20
20
 
21
21
  ### Cross-references
22
22
  - Within an engagement: invoked from `practice/references/monthly-close.md` step 7 (existing FD capsules — finalize this month's accrual; new FD setups during the period — invoke recipe).
@@ -17,7 +17,7 @@
17
17
  - **`search_contacts(filter: {supplier: true, name: {eq: <lessor>}})`** — step 3 (lease counterparty).
18
18
  - **`create_fixed_asset(...)`** — step 4 manual: register the ROU asset in Jaz native FA. `cost` = PV from calculator, `usefulLifeMonths` = lease term, `depreciationMethod` = 'sl' (straight-line). Jaz auto-posts monthly depreciation thereafter.
19
19
  - **`generate_trial_balance(period_end: <date>)`** — step 5 verify.
20
- - **`update_journal(resourceId: <each id>, saveAsDraft: false) // loop per id — no bulk-finalize-journals tool yet`** — step 5 monthly: finalize this period's pre-emitted unwinding DRAFT.
20
+ - **`bulk_update_journals(items: [{resourceId: <id>, saveAsDraft: false}, ...])`** — step 5 monthly: finalize this period's pre-emitted unwinding DRAFT.
21
21
  - **`generate_fa_summary(period_end: <date>)`** — step 5 verify Jaz auto-posted ROU depreciation.
22
22
 
23
23
  ### Cross-references
@@ -49,6 +49,7 @@ Returns: `{ presentValue: 167287.43, totalInterest: 12712.57, schedule: [{period
49
49
 
50
50
  ```
51
51
  plan_recipe(
52
+ // Note: gl*, capsuleType, capsuleName, bankAccountResourceId, vendor, customer below are illustrative — auto-resolved at execute time from CoA / CLIENT.md, not real plan_recipe params.
52
53
  recipe: 'lease',
53
54
  monthlyPayment: 5000,
54
55
  termMonths: 36,
@@ -39,6 +39,7 @@ Returns: `{ perPeriodAmount, recognitionStartDate, recognitionEndDate, schedule[
39
39
 
40
40
  ```
41
41
  plan_recipe(
42
+ // Note: gl*, capsuleType, capsuleName, bankAccountResourceId, vendor, customer below are illustrative — auto-resolved at execute time from CoA / CLIENT.md, not real plan_recipe params.
42
43
  recipe: 'prepaid-expense',
43
44
  amount: 12000,
44
45
  periods: 12,
@@ -15,7 +15,7 @@
15
15
  - **`search_capsules(filter: {capsuleType: {eq: 'Provisions'}, name: {eq: <capsule.name>}})`** — step 0 idempotency check.
16
16
  - **`search_accounts(filter: {name: {in: ['Provision for Warranties', 'Finance Cost', 'Warranty Expense']}})`** — step 3.
17
17
  - **`generate_trial_balance(period_end: <date>)`** — step 5 verify provision balance matches schedule's `closingProvision`.
18
- - **`update_journal(resourceId: <each id>, saveAsDraft: false) // loop per id — no bulk-finalize-journals tool yet`** — step 5 monthly finalize.
18
+ - **`bulk_update_journals(items: [{resourceId: <id>, saveAsDraft: false}, ...])`** — step 5 monthly finalize.
19
19
 
20
20
  ### Cross-references
21
21
  - Within an engagement: invoked from `practice/references/annual-statutory.md` step 4e (Y5 in `year-end-close.md`) for year-end provision remeasurement, and `practice/references/monthly-close.md` step 7 (verify scheduler, finalize this period's unwinding DRAFT).
@@ -48,6 +48,7 @@ Save schedule to `workpapers/<period>/provision-warranty-FY2025.json`.
48
48
 
49
49
  ```
50
50
  plan_recipe(
51
+ // Note: gl*, capsuleType, capsuleName, bankAccountResourceId, vendor, customer below are illustrative — auto-resolved at execute time from CoA / CLIENT.md, not real plan_recipe params.
51
52
  recipe: 'provision',
52
53
  amount: 500000,
53
54
  annualRate: 4,