jaz-clio 6.1.1 → 7.0.1

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 (29) hide show
  1. package/README.md +3 -3
  2. package/assets/skills/api/SKILL.md +1 -1
  3. package/assets/skills/api/references/claims.md +1 -1
  4. package/assets/skills/cli/SKILL.md +3 -3
  5. package/assets/skills/cli/references/command-catalog.md +2 -2
  6. package/assets/skills/cli/references/common-workflows.md +3 -3
  7. package/assets/skills/conversion/SKILL.md +1 -1
  8. package/assets/skills/jaz-kit/SKILL.md +1 -1
  9. package/assets/skills/jaz-pseudo-sql/SKILL.md +1 -1
  10. package/assets/skills/jobs/SKILL.md +2 -2
  11. package/assets/skills/jobs/references/audit-prep.md +10 -10
  12. package/assets/skills/jobs/references/bank-recon.md +6 -6
  13. package/assets/skills/jobs/references/building-blocks.md +5 -5
  14. package/assets/skills/jobs/references/credit-control.md +2 -2
  15. package/assets/skills/jobs/references/document-collection.md +2 -2
  16. package/assets/skills/jobs/references/fa-review.md +4 -4
  17. package/assets/skills/jobs/references/month-end-close.md +10 -10
  18. package/assets/skills/jobs/references/payment-run.md +5 -5
  19. package/assets/skills/jobs/references/quarter-end-close.md +2 -2
  20. package/assets/skills/jobs/references/supplier-recon.md +5 -5
  21. package/assets/skills/jobs/references/year-end-close.md +7 -7
  22. package/assets/skills/transaction-recipes/SKILL.md +1 -1
  23. package/assets/skills/transaction-recipes/references/asset-disposal.md +2 -2
  24. package/assets/skills/transaction-recipes/references/bad-debt-provision.md +4 -4
  25. package/assets/skills/transaction-recipes/references/hire-purchase.md +1 -1
  26. package/assets/skills/transaction-recipes/references/ifrs16-lease.md +1 -1
  27. package/assets/templates/platform-rules/jaz-agent-rules.md +2 -2
  28. package/cli.mjs +366 -366
  29. package/package.json +1 -1
package/README.md CHANGED
@@ -3,13 +3,13 @@
3
3
  <p align="center">
4
4
  <a href="https://www.npmjs.com/package/jaz-clio"><img src="https://img.shields.io/npm/v/jaz-clio?style=for-the-badge&logo=npm" alt="npm"></a>
5
5
  <a href="https://www.npmjs.com/package/jaz-clio"><img src="https://img.shields.io/npm/dm/jaz-clio?style=for-the-badge&label=downloads" alt="npm downloads"></a>
6
- <img src="https://img.shields.io/badge/tools-381-blue?style=for-the-badge" alt="381 tools">
6
+ <img src="https://img.shields.io/badge/tools-382-blue?style=for-the-badge" alt="382 tools">
7
7
  <a href="https://github.com/teamtinvio/jaz-ai/blob/main/LICENSE"><img src="https://img.shields.io/github/license/teamtinvio/jaz-ai?style=for-the-badge&color=green" alt="License"></a>
8
8
  </p>
9
9
 
10
10
  <p align="center"><b>Fastest ledger for agents.</b><br>Jaz accounting on the command line, and inside any AI agent.</p>
11
11
 
12
- 381 tools · 74 command groups · 7 skills · 13 calculators · 12 job playbooks · 148 field-tested API rules.
12
+ 382 tools · 74 command groups · 7 skills · 13 calculators · 12 job playbooks · 148 field-tested API rules.
13
13
 
14
14
  ```bash
15
15
  npm install -g jaz-clio
@@ -109,7 +109,7 @@ that ends up in a journal.
109
109
 
110
110
  ## MCP server
111
111
 
112
- 381 tools for any AI agent that speaks MCP. Runs locally: no cloud, no ports.
112
+ 382 tools for any AI agent that speaks MCP. Runs locally: no cloud, no ports.
113
113
 
114
114
  > **No install at all?** Claude.ai, ChatGPT, Cowork, and Microsoft Copilot Studio can use Jaz through the hosted connector. Add `https://mcp.jaz.ai/mcp` as a custom connector and sign in with OAuth, no key. The local setup below is for terminal use, scripting, and editors that run MCP servers as local processes.
115
115
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-api
3
- version: 6.1.1
3
+ version: 7.0.1
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, 148 production gotchas, error
@@ -9,7 +9,7 @@ separate surface.
9
9
 
10
10
  A receipt is a BILL (a vendor's invoice) or a CLAIM (an employee's reimbursed expense):
11
11
  different tools. Decide by intent, else by capability: call `get_my_context` and read
12
- `moduleRoles`: PURCHASES ≠ NO_ACCESS → bill (`create_bt_from_attachment`); else
12
+ `moduleRoles`: PURCHASES ≠ NO_ACCESS → bill (`create_transaction_from_document`); else
13
13
  EMPLOYEE_CLAIMS ≠ NO_ACCESS → claim (`create_claim_from_attachment`). The always-on
14
14
  `claims-routing` policy carries the full rule.
15
15
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-cli
3
- version: 6.1.1
3
+ version: 7.0.1
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,
@@ -8,7 +8,7 @@ description: >-
8
8
  precedence, output formats, entity resolution, and common workflow patterns.
9
9
  Also use when the user asks how to use clio, what commands are available, or
10
10
  how to automate accounting tasks from the command line. Covers all
11
- 74 command groups and 381 tools, including employee-expense claims.
11
+ 74 command groups and 382 tools, including employee-expense claims.
12
12
  license: MIT
13
13
  compatibility: Requires Node.js >= 18.0.0. Install via npm install -g jaz-clio.
14
14
  ---
@@ -17,7 +17,7 @@ compatibility: Requires Node.js >= 18.0.0. Install via npm install -g jaz-clio.
17
17
 
18
18
  > **Audience note:** for power users and CI/automation. Load this skill only when you're scripting from a terminal, building shell pipelines, or debugging from `clio --json` output. For day-to-day accounting inside Claude Desktop / Cowork, the MCP tools cover the common flows without dropping to the CLI.
19
19
 
20
- You are working with **Clio** (`jaz-clio`), the CLI for the Jaz accounting platform. 74 command groups, 13 calculators, 12 job playbooks (jaz-jobs skill), 381 tools. Also fully compatible with Juan Accounting (same API, same endpoints).
20
+ You are working with **Clio** (`jaz-clio`), the CLI for the Jaz accounting platform. 74 command groups, 13 calculators, 12 job playbooks (jaz-jobs skill), 382 tools. Also fully compatible with Juan Accounting (same API, same endpoints).
21
21
 
22
22
  ## When to Use This Skill
23
23
 
@@ -529,7 +529,7 @@ Dynamic strings in schedulers: `{{Day}}`, `{{Date}}`, `{{Date+X}}`, `{{DateRange
529
529
  clio reports generate <type> [flags]
530
530
  ```
531
531
 
532
- Types: `trial-balance`, `balance-sheet`, `profit-loss`, `cashflow`, `aged-ar`, `aged-ap`, `cash-balance`, `general-ledger`, `vat-ledger`, `equity-movement`, `bank-balance-summary`, `bank-recon-summary`, `bank-recon-details`, `fa-summary`, `fa-recon-summary`, `ar-report`, `ledger-highlights`
532
+ Types: `trial-balance`, `balance-sheet`, `profit-loss`, `cashflow`, `aged-receivables`, `aged-payables`, `cash-balance`, `general-ledger`, `vat-ledger`, `equity-movement`, `bank-balance-summary`, `bank-reconciliation-summary`, `bank-reconciliation-details`, `fixed-assets-summary`, `fixed-assets-reconciliation-summary`, `aged-receivables-summary`, `aged-payables-summary`, `ledger-highlights`
533
533
 
534
534
  | Flag | Purpose |
535
535
  |------|---------|
@@ -727,7 +727,7 @@ Valid entity types: INVOICE, BILL, CUSTOMER_CREDIT_NOTE, SUPPLIER_CREDIT_NOTE, S
727
727
  Universal async tracker: any operation returning a jobId (contacts bulk-upsert, items bulk-upsert, bank import, magic processing) can be polled here.
728
728
 
729
729
  ### `clio mcp`: MCP stdio server
730
- Starts an MCP server for Claude Code / AI tool integration. Exposes all 381 operations.
730
+ Starts an MCP server for Claude Code / AI tool integration. Exposes all 382 operations.
731
731
 
732
732
  ### `clio init`: Skill installer
733
733
  Installs AI agent skills into your project.
@@ -70,7 +70,7 @@ Follow the month-end playbook in the jaz-jobs skill (`references/month-end-close
70
70
  clio reports generate trial-balance --to 2026-03-31 --json > tb-mar.json
71
71
  clio reports generate profit-loss --from 2026-03-01 --to 2026-03-31 --json > pl-mar.json
72
72
  clio reports generate balance-sheet --to 2026-03-31 --json > bs-mar.json
73
- clio reports generate bank-recon-summary --to 2026-03-31 --json > recon-mar.json
73
+ clio reports generate bank-reconciliation-summary --to 2026-03-31 --json > recon-mar.json
74
74
 
75
75
  # Create adjusting journal if needed
76
76
  clio journals create \
@@ -83,8 +83,8 @@ clio journals create \
83
83
  --finalize
84
84
 
85
85
  # Generate aged AR/AP reports
86
- clio reports generate aged-ar --to 2026-03-31 --json > aged-ar-mar.json
87
- clio reports generate aged-ap --to 2026-03-31 --json > aged-ap-mar.json
86
+ clio reports generate aged-receivables --to 2026-03-31 --json > aged-receivables-mar.json
87
+ clio reports generate aged-payables --to 2026-03-31 --json > aged-payables-mar.json
88
88
  ```
89
89
 
90
90
  ## 4. FX Transaction: Add Currency, Set Rate, Create Invoice
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-conversion
3
- version: 6.1.1
3
+ version: 7.0.1
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-kit
3
- version: 6.1.1
3
+ version: 7.0.1
4
4
  description: >-
5
5
  Use this skill when an accountant, bookkeeper, or owner is running real books
6
6
  in Jaz across one or more organizations from the terminal: setting up a
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-pseudo-sql
3
- version: 6.1.1
3
+ version: 7.0.1
4
4
  description: >-
5
5
  Use this skill when answering ad-hoc data questions that aren't covered by
6
6
  download_export (canonical reports: anomaly, audit, aging, P&L, BS, GL,
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-jobs
3
- version: 6.1.1
3
+ version: 7.0.1
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,
@@ -24,7 +24,7 @@ You are helping an **SMB accountant or bookkeeper** complete recurring accountin
24
24
 
25
25
  You orchestrate the **real platform tools directly**, following the phase sequence in the per-job reference:
26
26
 
27
- - **The per-job reference is your checklist.** Walk its phases in order and call the named platform tools: `calculate`, `search_invoices` / `search_bills` / `search_bank_records`, the `generate-reports/*` report tools (`generate_trial_balance`, `generate_aged_ar`, `generate_vat_ledger`, …), `reconcile_*`, `create_capsule`, `create_journal`, `bulk_finalize_drafts`, `update_account` lockDate, and so on. There is no "blueprint tool" or checklist command to call; the reference IS the plan.
27
+ - **The per-job reference is your checklist.** Walk its phases in order and call the named platform tools: `calculate`, `search_invoices` / `search_bills` / `search_bank_records`, the `generate-reports/*` report tools (`generate_trial_balance`, `generate_aged_receivables`, `generate_vat_ledger`, …), `reconcile_*`, `create_capsule`, `create_journal`, `bulk_finalize_drafts`, `update_account` lockDate, and so on. There is no "blueprint tool" or checklist command to call; the reference IS the plan.
28
28
  - **Local CLI helpers:** five `clio jobs` sub-tools do real work for specific steps (see "CLI helpers" below).
29
29
 
30
30
  ### Scheduled and calculated entries
@@ -13,10 +13,10 @@
13
13
  - **`generate_general_ledger(startDate, endDate, groupBy: 'ACCOUNT')`** (step 5): the auditor's primary working document.
14
14
 
15
15
  ### Platform tools: supporting schedules
16
- - **`generate_aged_ar(endDate)` / `generate_aged_ap(endDate)`**: step 6.
17
- - **`generate_bank_recon_summary(bankAccountResourceId, primarySnapshotStartDate, primarySnapshotEndDate)` / `generate_bank_recon_details(bankAccountResourceId, primarySnapshotStartDate, primarySnapshotEndDate, filter)` per bank account**: step 7. NON-NEGOTIABLE deliverable.
16
+ - **`generate_aged_receivables(endDate)` / `generate_aged_payables(endDate)`**: step 6.
17
+ - **`generate_bank_reconciliation_summary(bankAccountResourceId, primarySnapshotStartDate, primarySnapshotEndDate)` / `generate_bank_reconciliation_details(bankAccountResourceId, primarySnapshotStartDate, primarySnapshotEndDate, filter)` per bank account**: step 7. NON-NEGOTIABLE deliverable.
18
18
  - **`generate_bank_balance_summary(primarySnapshotDate)`**: step 7. Cross-reference to bank confirmation letters.
19
- - **`generate_fa_summary(primarySnapshotStartDate, primarySnapshotEndDate, groupBy)` / `generate_fa_recon_summary(primarySnapshotStartDate, primarySnapshotEndDate)`**: step 8.
19
+ - **`generate_fixed_assets_summary(primarySnapshotStartDate, primarySnapshotEndDate, groupBy)` / `generate_fixed_assets_reconciliation_summary(primarySnapshotStartDate, primarySnapshotEndDate)`**: step 8.
20
20
  - **`generate_vat_ledger(startDate, endDate)`**: step 9. Annual total ties to sum of quarterly F5 returns.
21
21
 
22
22
  ### Platform tools: XLSX deliverables
@@ -101,8 +101,8 @@ The tool returns 50 rows per call by default. Page it at `limit` 50-100: a GL ro
101
101
  ## Step 6: AR / AP aging
102
102
 
103
103
  ```
104
- generate_aged_ar(endDate: '2025-12-31')
105
- generate_aged_ap(endDate: '2025-12-31')
104
+ generate_aged_receivables(endDate: '2025-12-31')
105
+ generate_aged_payables(endDate: '2025-12-31')
106
106
  ```
107
107
 
108
108
  Use `endDate` not `startDate` (rule 36, point-in-time snapshot). Assert:
@@ -118,8 +118,8 @@ And post any top-up provision yourself: `create_capsule` (type `ECL Provision`),
118
118
  ## Step 7: Bank reconciliation (NON-NEGOTIABLE)
119
119
 
120
120
  ```
121
- generate_bank_recon_summary(bankAccountResourceId: <each bank account>, primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-12-31')
122
- generate_bank_recon_details(bankAccountResourceId: <each bank account>, primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-12-31', filter: {valueDate: {range: ['2025-01-01', '2025-12-31']}})
121
+ generate_bank_reconciliation_summary(bankAccountResourceId: <each bank account>, primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-12-31')
122
+ generate_bank_reconciliation_details(bankAccountResourceId: <each bank account>, primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-12-31', filter: {valueDate: {range: ['2025-01-01', '2025-12-31']}})
123
123
  generate_bank_balance_summary(primarySnapshotDate: '2025-12-31')
124
124
  ```
125
125
 
@@ -130,8 +130,8 @@ If `unreconciledCount > 0`: halt audit-prep and route back to `bank-recon.md` jo
130
130
  ## Step 8: Fixed assets + supporting schedules
131
131
 
132
132
  ```
133
- generate_fa_summary(primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-12-31', groupBy: 'CATEGORY')
134
- generate_fa_recon_summary(primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-12-31')
133
+ generate_fixed_assets_summary(primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-12-31', groupBy: 'CATEGORY')
134
+ generate_fixed_assets_reconciliation_summary(primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-12-31')
135
135
  ```
136
136
 
137
137
  Assert: `fa_recon.openingNbv + additions - disposals - depreciation == fa_recon.closingNbv == TB['Fixed Assets'].balance`.
@@ -220,7 +220,7 @@ The SG Form C-S wizard walks the user field-by-field through the C-S form, prefi
220
220
  | Source | Error | Recovery |
221
221
  |--------|-------|----------|
222
222
  | `generate_*` | 422 `period_not_closed` | Year-end close incomplete. Route to `year-end-close.md` first. |
223
- | `generate_bank_recon_summary` / `generate_bank_recon_details` | `unreconciledCount > 0` | Route to `bank-recon.md`; do NOT hand pack with this open. |
223
+ | `generate_bank_reconciliation_summary` / `generate_bank_reconciliation_details` | `unreconciledCount > 0` | Route to `bank-recon.md`; do NOT hand pack with this open. |
224
224
  | `download_export` | 422 `period_too_long` | GL XLSX rejected for >12 months. Split into per-quarter exports. |
225
225
  | `download_export` | 504 timeout | Large org. Re-run with smaller `endDate` range or contact infrastructure team. |
226
226
  | `update_account` | 422 `lock_date_in_future` | The CoA `lockDate` must be ≤ the period end date. Use today if unsure. |
@@ -29,13 +29,13 @@
29
29
  - **`reconcile_cash_transfer(...)`**: inter-account transfer.
30
30
 
31
31
  ### Platform tools: create missing transactions
32
- - **`create_bt_from_attachment(...)`** (step 6 path B): OCR + autofill bill or invoice from receipt PDF/JPG. Local CLI: `clio magic create --file <pdf> --type bill`.
32
+ - **`create_transaction_from_document(...)`** (step 6 path B): OCR + autofill bill or invoice from receipt PDF/JPG. Local CLI: `clio magic create --file <pdf> --type bill`.
33
33
  - **`create_cash_in(...)` / `create_cash_out(...)`** (step 6 path C): bank fees, interest, FX charges that have no source document.
34
34
  - **`create_bank_rule(...)`** (preventive): build a rule for any recurring pattern you handled this run (subscription, rent, utility) so it auto-applies next time.
35
35
 
36
36
  ### Platform tools: verification
37
- - **`generate_bank_recon_summary(bankAccountResourceId, primarySnapshotStartDate, primarySnapshotEndDate)`** (step 7): per-account formal recon statement.
38
- - **`generate_bank_recon_details(bankAccountResourceId, primarySnapshotStartDate, primarySnapshotEndDate, filter: {valueDate: {range: [from, to]}})`** (step 7): line-level recon detail for audit pack.
37
+ - **`generate_bank_reconciliation_summary(bankAccountResourceId, primarySnapshotStartDate, primarySnapshotEndDate)`** (step 7): per-account formal recon statement.
38
+ - **`generate_bank_reconciliation_details(bankAccountResourceId, primarySnapshotStartDate, primarySnapshotEndDate, filter: {valueDate: {range: [from, to]}})`** (step 7): line-level recon detail for audit pack.
39
39
  - **`generate_bank_balance_summary(primarySnapshotDate)`** (step 8): book balance vs bank statement balance per account.
40
40
 
41
41
  ### CLI tools: bulk auto-match cascade (offline)
@@ -158,7 +158,7 @@ For unreconciled rows that have no book-side counterpart yet:
158
158
  ```
159
159
  clio magic create --file <invoice-or-receipt-path> --type bill # or --type invoice
160
160
  # OR equivalent MCP call:
161
- create_bt_from_attachment(
161
+ create_transaction_from_document(
162
162
  businessTransactionType: 'BILL' | 'INVOICE',
163
163
  sourceUrl: <file URL> // omit when the host attaches the file to the call
164
164
  )
@@ -220,8 +220,8 @@ search_bank_records(accountResourceId: B.resourceId, status: 'UNRECONCILED', lim
220
220
  Target: zero rows OR all remaining are documented timing differences (outstanding cheques, deposits in transit clearing next period; practitioner annotates). Record the judgment: `jot(kind: SCOPE)` naming each residual accepted as a timing difference and why it clears next period.
221
221
 
222
222
  ```
223
- generate_bank_recon_summary(bankAccountResourceId: B.resourceId, primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-01-31')
224
- generate_bank_recon_details(bankAccountResourceId: B.resourceId, primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-01-31', filter: {valueDate: {range: ['2025-01-01', '2025-01-31']}})
223
+ generate_bank_reconciliation_summary(bankAccountResourceId: B.resourceId, primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-01-31')
224
+ generate_bank_reconciliation_details(bankAccountResourceId: B.resourceId, primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-01-31', filter: {valueDate: {range: ['2025-01-01', '2025-01-31']}})
225
225
  ```
226
226
 
227
227
  Keep both the summary and the line-level detail per account; audit-prep step 7 will require them.
@@ -44,8 +44,8 @@ generate_balance_sheet(snapshotDate: <period-end>)
44
44
  Standard assertions:
45
45
  - TB: `Debits == Credits` (always; if not, system bug).
46
46
  - BS: `Total Assets == Total Liabilities + Total Equity`.
47
- - TB AR == `generate_aged_ar(endDate)` total.
48
- - TB AP == `generate_aged_ap(endDate)` total.
47
+ - TB AR == `generate_aged_receivables(endDate)` total.
48
+ - TB AP == `generate_aged_payables(endDate)` total.
49
49
  - TB Cash == `generate_bank_balance_summary(primarySnapshotDate)` per-bank total (via `bank-recon.md`).
50
50
 
51
51
  ## Calculated schedules: calculate, capsule, post
@@ -115,11 +115,11 @@ get_capsule(resourceId) # returns totalTransactions (a COUNT), not the transac
115
115
  | `generate_trial_balance` | Verification, every job |
116
116
  | `generate_balance_sheet` | Verification |
117
117
  | `generate_profit_and_loss` | Verification + period analysis |
118
- | `generate_aged_ar` / `generate_aged_ap` | Aging-aware jobs (credit-control, payment-run, audit-prep) |
119
- | `generate_bank_recon_summary` / `generate_bank_recon_details` | Bank-recon, audit-prep |
118
+ | `generate_aged_receivables` / `generate_aged_payables` | Aging-aware jobs (credit-control, payment-run, audit-prep) |
119
+ | `generate_bank_reconciliation_summary` / `generate_bank_reconciliation_details` | Bank-recon, audit-prep |
120
120
  | `generate_vat_ledger` | GST/VAT, quarter-end Q1 |
121
121
  | `generate_general_ledger` | Investigation + audit-prep |
122
- | `generate_fa_summary` / `generate_fa_recon_summary` | FA review, year-end |
122
+ | `generate_fixed_assets_summary` / `generate_fixed_assets_reconciliation_summary` | FA review, year-end |
123
123
  | `search_journals` / `search_invoices` / `search_bills` | Discovery + filter, every job |
124
124
  | `calculate` | Schedules + journal lines for every calculated step (posts nothing) |
125
125
  | `search_capsules` | Capsule lifecycle discovery |
@@ -5,7 +5,7 @@
5
5
  ## Tools and calculators this job uses
6
6
 
7
7
  ### Platform tools
8
- - **`generate_aged_ar(endDate: <date>)`**: step 1: AR aging report with bucket breakdown.
8
+ - **`generate_aged_receivables(endDate: <date>)`**: step 1: AR aging report with bucket breakdown.
9
9
  - **`search_invoices(filter: {status: {eq: 'UNPAID'}, dueDate: {lt: <date>}, contactResourceId: <customer>}, sortBy: 'dueDate', sortOrder: 'ASC', limit: 200)`**: step 2: per-customer overdue detail. Paginate.
10
10
  - **`get_contact(resourceId: <customer id>)`**: step 2: pull contact info (email, phone, primary contact).
11
11
  - **`get_contact_signals(resourceId: <id>, btType: 'SALE')`**: step 3: pull cadence + outlier signals + outstanding balance for the customer. Mid-7 endpoint.
@@ -28,7 +28,7 @@ Walk steps 1-8 below.
28
28
  ## Step 1: AR aging snapshot
29
29
 
30
30
  ```
31
- generate_aged_ar(endDate: '2025-01-31')
31
+ generate_aged_receivables(endDate: '2025-01-31')
32
32
  ```
33
33
 
34
34
  Save the AR aging snapshot. Returns aging buckets (current, 30d, 60d, 90d, 120d+) per customer. Total per bucket informs collection priority.
@@ -5,7 +5,7 @@
5
5
  ## Tools and calculators this job uses
6
6
 
7
7
  ### Platform tools
8
- - **`create_bt_from_attachment(businessTransactionType: 'BILL'|'INVOICE'|'CUSTOMER_CREDIT_NOTE'|'SUPPLIER_CREDIT_NOTE', sourceUrl)`**: step 4: OCR + line-item extraction + contact + CoA suggestion. Creates DRAFT transaction. Local CLI: `clio magic create --file <pdf> --type bill`.
8
+ - **`create_transaction_from_document(businessTransactionType: 'BILL'|'INVOICE'|'CUSTOMER_CREDIT_NOTE'|'SUPPLIER_CREDIT_NOTE', sourceUrl)`**: step 4: OCR + line-item extraction + contact + CoA suggestion. Creates DRAFT transaction. Local CLI: `clio magic create --file <pdf> --type bill`.
9
9
  - **`finalize_bill(...)` / `finalize_invoice(...)` / `finalize_customer_credit_note(...)`**: step 5: finalize practitioner-reviewed Magic-extracted DRAFTs.
10
10
  - **`import_bank_statement(accountResourceId, sourceUrl | attached file)`**: step 6: bank statements (CSV / OFX / PDF); creates bank records pending reconciliation per `bank-recon.md`.
11
11
  - **`search_background_jobs(filter: {resourceId: {eq: <jobId>}})`**: step 7: poll Magic / bank-import async jobs to terminal status.
@@ -88,7 +88,7 @@ For each file with `suggestedAction: 'magic-create-bill' | 'magic-create-invoice
88
88
  ```
89
89
  clio magic create --file <decrypted path> --type bill
90
90
  # OR equivalent MCP call:
91
- create_bt_from_attachment(
91
+ create_transaction_from_document(
92
92
  businessTransactionType: 'BILL',
93
93
  sourceUrl: <file URL> // omit when the host attaches the file to the call
94
94
  )
@@ -7,8 +7,8 @@
7
7
  ### Platform tools
8
8
  - **`search_fixed_assets(filter: {status: {in: ['ACTIVE', 'DISPOSED', 'DISCARDED']}}, limit: 200)`**, step 1: enumerate FAs. Paginate.
9
9
  - **`get_fixed_asset(resourceId: <id>)`**, step 2: per-asset detail (purchaseAmount, purchaseDate, depreciationStartDate, effectiveLife in months, depreciationMethod, depreciableValueResidualAmount, NBV).
10
- - **`generate_fa_summary(primarySnapshotStartDate: <period-start>, primarySnapshotEndDate: <period-end>, groupBy: 'CATEGORY')`**, step 3: aggregate FA register at period end.
11
- - **`generate_fa_recon_summary(primarySnapshotStartDate: <year-start>, primarySnapshotEndDate: <year-end>)`**, step 3: reconcile movement (opening + additions − disposals − depreciation = closing).
10
+ - **`generate_fixed_assets_summary(primarySnapshotStartDate: <period-start>, primarySnapshotEndDate: <period-end>, groupBy: 'CATEGORY')`**, step 3: aggregate FA register at period end.
11
+ - **`generate_fixed_assets_reconciliation_summary(primarySnapshotStartDate: <year-start>, primarySnapshotEndDate: <year-end>)`**, step 3: reconcile movement (opening + additions − disposals − depreciation = closing).
12
12
  - **`generate_general_ledger(accountResourceIds: [<FA category GL>], startDate, endDate)`**, step 4: per-FA-category GL movement vs FA register.
13
13
  - **`mark_fixed_asset_sold(resourceId: <id>, depreciationEndDate, assetDisposalGainLossAccountResourceId, saleBusinessTransactionType, saleItemResourceId)` / `discard_fixed_asset(resourceId: <id>, disposalDate, depreciationEndDate)`**, 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).
14
14
  - **`calculate(type: 'asset-disposal', ...)`**, then `create_capsule` + `create_journal` with `capsuleResourceId`, step 5: per disposal identified during review (see the `asset-disposal` recipe).
@@ -50,8 +50,8 @@ For each ACTIVE asset, flag for practitioner attention:
50
50
  ## Step 3: FA register reconciliation
51
51
 
52
52
  ```
53
- generate_fa_summary(primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-12-31', groupBy: 'CATEGORY')
54
- generate_fa_recon_summary(primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-12-31')
53
+ generate_fixed_assets_summary(primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-12-31', groupBy: 'CATEGORY')
54
+ generate_fixed_assets_reconciliation_summary(primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-12-31')
55
55
  ```
56
56
 
57
57
  Keep both the FA summary and the recon summary. Assert per FA category:
@@ -8,7 +8,7 @@
8
8
  - **`search_invoices(filter: {valueDate: {between: [<period-start>, <period-end>]}}, sortBy: 'valueDate', sortOrder: 'ASC', limit: 200)`**: step 1: confirm sales invoices entered. Paginate via `offset`.
9
9
  - **`search_bills(filter: {valueDate: {between: [<period-start>, <period-end>]}}, ...)`**: step 2: confirm purchase bills entered.
10
10
  - **`search_bank_records(accountResourceId: <id>, status: 'UNRECONCILED', startDate: <from>, endDate: <to>)`**: step 3: pull unreconciled bank statement entries per account.
11
- - **`generate_aged_ar(endDate: <date>)` / `generate_aged_ap(endDate: <date>)`**: steps 4-5: aging reports tied to TB AR / AP balances.
11
+ - **`generate_aged_receivables(endDate: <date>)` / `generate_aged_payables(endDate: <date>)`**: steps 4-5: aging reports tied to TB AR / AP balances.
12
12
 
13
13
  ### Platform tools: accruals + valuations
14
14
  Every calculated step below is the three-step flow in `building-blocks.md` § Calculated schedules: `calculate` (schedule + journal lines, posts nothing), then `list_capsule_types` + `create_capsule`, then one `create_journal` / `create_bill` / `create_invoice` / `create_cash_in` / `create_cash_out` per step with `capsuleResourceId`.
@@ -19,7 +19,7 @@ Every calculated step below is the three-step flow in `building-blocks.md` § Ca
19
19
  - **`calculate(type: 'depreciation', ...)`**: step 9: only when an asset uses non-SL method (DDB, 150DB). Jaz native FA handles SL automatically. Verify FA register first.
20
20
  - **`calculate(type: 'leave-accrual', ...)`**: step 10: monthly leave accrual; the same amount repeats, so one `create_scheduled_journal` covers the year.
21
21
  - **FX revaluation**: step 12: **Jaz auto-handles**. `calculate(type: 'fx-reval', ...)` is verification only; do NOT post its result (would double-post).
22
- - **`calculate(type: 'ecl', ...)`**: step 13: top-up bad-debt provision based on `generate_aged_ar` buckets.
22
+ - **`calculate(type: 'ecl', ...)`**: step 13: top-up bad-debt provision based on `generate_aged_receivables` buckets.
23
23
 
24
24
  ### Platform tools: reconciliation execution
25
25
  - **`view_auto_reconciliation(bankStatementEntryResourceIds: [<id>, ...])`**: step 3: READ-ONLY suggestions (does NOT write). Per-entry only; source ids from `search_bank_records` (status `UNRECONCILED`).
@@ -69,7 +69,7 @@ Compare count + sum against POS / sales register. Missing invoices = understated
69
69
  search_bills(filter: {valueDate: {between: ['2025-01-01', '2025-01-31']}}, sortBy: 'valueDate', sortOrder: 'ASC', limit: 200)
70
70
  ```
71
71
 
72
- Cross-reference against email + supplier portals + physical mail. Late bills = missed expenses = overstated profit. For PDFs in hand: `create_bt_from_attachment` with the file and `businessTransactionType: 'BILL'` (Jaz Magic OCR + autofill; local CLI: `clio magic create --file <pdf> --type bill`) to generate the bill draft.
72
+ Cross-reference against email + supplier portals + physical mail. Late bills = missed expenses = overstated profit. For PDFs in hand: `create_transaction_from_document` with the file and `businessTransactionType: 'BILL'` (Jaz Magic OCR + autofill; local CLI: `clio magic create --file <pdf> --type bill`) to generate the bill draft.
73
73
 
74
74
  ### Step 3: Bank reconciliation
75
75
 
@@ -79,15 +79,15 @@ For each bank account:
79
79
  2. `search_bank_records(accountResourceId: <bank account resourceId>, status: 'UNRECONCILED', startDate: '2025-01-01', endDate: '2025-01-31', limit: 200, sortBy: 'valueDate', sortOrder: 'ASC')`.
80
80
  3. If results: drive the 5-phase cascade matcher (Step 4 in `bank-recon.md`; local CLI: `clio jobs bank-recon match --input <records> --tolerance 0.01 --date-window 14 --json`). For each match, invoke the matching `reconcile_*` tool.
81
81
  4. `view_auto_reconciliation(bankStatementEntryResourceIds: [<id>, ...], recommendationType: 'MAGIC_MATCH')`: READ-ONLY suggestions for residuals (per-entry; get ids from `search_bank_records`, status `UNRECONCILED`); commit via `quick_reconcile` / `apply_bank_rule` / per-entry `reconcile_*`.
82
- 5. `generate_bank_recon_summary(bankAccountResourceId: <id>, primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-01-31')`. Confirm `unreconciledCount == 0` OR document the residuals for the period and surface to the user.
82
+ 5. `generate_bank_reconciliation_summary(bankAccountResourceId: <id>, primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-01-31')`. Confirm `unreconciledCount == 0` OR document the residuals for the period and surface to the user.
83
83
 
84
84
  Full detail in `bank-recon.md`. NOT idempotent; see error table.
85
85
 
86
86
  ### Steps 4-5: AR / AP aging
87
87
 
88
88
  ```
89
- generate_aged_ar(endDate: '2025-01-31')
90
- generate_aged_ap(endDate: '2025-01-31')
89
+ generate_aged_receivables(endDate: '2025-01-31')
90
+ generate_aged_payables(endDate: '2025-01-31')
91
91
  ```
92
92
 
93
93
  Use `endDate` (rule 36: point-in-time, not period-range). Assert: aging totals match `generate_trial_balance` AR/AP lines within the org's materiality threshold. Flag > 60d for credit-control / payment-priority. Disputed bills exit the active aging; annotate for the user.
@@ -127,7 +127,7 @@ Mirror of step 7. Existing `Deferred Revenue` capsules: find this period's DRAFT
127
127
  search_fixed_assets(filter: {status: {eq: 'ACTIVE'}, depreciationMethod: {eq: 'NO_DEPRECIATION'}})
128
128
  ```
129
129
 
130
- For Jaz-native SL assets: depreciation auto-posts; verify via `generate_fa_summary(primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-01-31', groupBy: 'CATEGORY')` showing month's depreciation movement. The search above returns the assets registered with `NO_DEPRECIATION`: the register's only methods are `STRAIGHT_LINE` and `NO_DEPRECIATION`, so these are the assets depreciated by manual journal (declining balance). Confirm each one's method with the practitioner, then `calculate(type: 'depreciation', method: 'ddb' | '150db', cost, salvageValue, usefulLifeYears, frequency: 'monthly')` per asset. With `frequency: 'monthly'` the calculator's `blueprint.steps` are still ANNUAL and the monthly figures are in `schedule[]`: read this period's charge from `schedule[]`, not `blueprint.steps`. Post it with `create_journal` (Dr Depreciation Expense / Cr Accumulated Depreciation) into the asset's `Depreciation` capsule. The depreciation calculator takes no start date, so its rows are undated: ask the practitioner for the posting date and set each journal's `valueDate` yourself.
130
+ For Jaz-native SL assets: depreciation auto-posts; verify via `generate_fixed_assets_summary(primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-01-31', groupBy: 'CATEGORY')` showing month's depreciation movement. The search above returns the assets registered with `NO_DEPRECIATION`: the register's only methods are `STRAIGHT_LINE` and `NO_DEPRECIATION`, so these are the assets depreciated by manual journal (declining balance). Confirm each one's method with the practitioner, then `calculate(type: 'depreciation', method: 'ddb' | '150db', cost, salvageValue, usefulLifeYears, frequency: 'monthly')` per asset. With `frequency: 'monthly'` the calculator's `blueprint.steps` are still ANNUAL and the monthly figures are in `schedule[]`: read this period's charge from `schedule[]`, not `blueprint.steps`. Post it with `create_journal` (Dr Depreciation Expense / Cr Accumulated Depreciation) into the asset's `Depreciation` capsule. The depreciation calculator takes no start date, so its rows are undated: ask the practitioner for the posting date and set each journal's `valueDate` yourself.
131
131
 
132
132
  ### Step 10: Employee benefit accruals
133
133
 
@@ -182,7 +182,7 @@ Bank FX is revaluation, not realized: bank/cash FX uses `FX Bank Revaluation` (n
182
182
  Mental check on AR aging > 90d bucket changes. If material change vs prior month: run the ECL calculator.
183
183
 
184
184
  ```
185
- calculate(type: 'ecl', buckets: <generate_aged_ar buckets, each {name, balance, rate} with rate from the org ECL loss-rate matrix>, existingProvision, startDate)
185
+ calculate(type: 'ecl', buckets: <generate_aged_receivables buckets, each {name, balance, rate} with rate from the org ECL loss-rate matrix>, existingProvision, startDate)
186
186
  ```
187
187
 
188
188
  If `adjustmentRequired` is non-zero, post it with one `create_journal` (Dr Bad Debt Expense / Cr Allowance for Doubtful Debts for an increase) into an `ECL Provision` capsule.
@@ -200,8 +200,8 @@ generate_trial_balance(endDate: '2025-01-31')
200
200
  Save the close trial balance for the period (you'll diff next month against it). Assert:
201
201
  - Debits == Credits (exact).
202
202
  - Cash / bank balances match step 3 bank reconciliation summaries.
203
- - AR balance == `generate_aged_ar.totalOutstanding` from step 4.
204
- - AP balance == `generate_aged_ap.totalOutstanding` from step 5.
203
+ - AR balance == `generate_aged_receivables.totalOutstanding` from step 4.
204
+ - AP balance == `generate_aged_payables.totalOutstanding` from step 5.
205
205
  - No unexpected balances (negative cash, credit balances on expense accounts).
206
206
 
207
207
  ### Steps 15-16: P&L + Balance Sheet
@@ -6,7 +6,7 @@
6
6
 
7
7
  ### Platform tools (jaz-api)
8
8
  - **`search_bills(filter: {status: {eq: 'UNPAID'}, balanceAmount: {gt: 0}, dueDate: {lte: <cutoff>}}, sortBy: 'dueDate', sortOrder: 'ASC', limit: 200)`**, used in step 2: pull due bills (paginate via `offset` if `>200`).
9
- - **`generate_aged_ap(endDate: <cutoff>)`**, used in step 3: total-AP cross-check; flag bills in 60d+ aging buckets.
9
+ - **`generate_aged_payables(endDate: <cutoff>)`**, used in step 3: total-AP cross-check; flag bills in 60d+ aging buckets.
10
10
  - **`generate_bank_balance_summary(primarySnapshotDate: <cutoff>)`**, used in step 5: confirm cash availability before approving the batch.
11
11
  - **`get_contact(resourceId: <contactResourceId>)`**, used in step 4 (per supplier): pull payment terms / preferred payment method / bank details (especially `taxId`, `bankAccountNumber`, `bicSwift` for GIRO file generation).
12
12
  - **`pay_bill(resourceId: <id>, paymentAmount, transactionAmount, accountResourceId, valueDate, ...)`**, used in step 6: post the payment per bill. NO BATCH PAYMENT ENDPOINT yet; one POST per bill.
@@ -60,10 +60,10 @@ For each bill, also collect: `contactResourceId`, `currency`, `originalAmount`,
60
60
  ## Step 3: AP aging cross-check
61
61
 
62
62
  ```
63
- generate_aged_ap(endDate: '2025-02-28')
63
+ generate_aged_payables(endDate: '2025-02-28')
64
64
  ```
65
65
 
66
- Verify: `sum(derived outstanding) ≈ generate_aged_ap.totalOutstanding` (within the materiality threshold). Mismatch indicates pending bills in non-`UNPAID` status (e.g., `PARTIALLY_PAID`) that need separate handling; surface to the user.
66
+ Verify: `sum(derived outstanding) ≈ generate_aged_payables.totalOutstanding` (within the materiality threshold). Mismatch indicates pending bills in non-`UNPAID` status (e.g., `PARTIALLY_PAID`) that need separate handling; surface to the user.
67
67
 
68
68
  Flag any bill in the 60d+ bucket; these need priority OR dispute resolution. Exclude bills the user has flagged as disputed.
69
69
 
@@ -116,7 +116,7 @@ pay_bill(
116
116
  After all `pay_bill` calls succeed:
117
117
 
118
118
  ```
119
- generate_aged_ap(endDate: '2025-02-28')
119
+ generate_aged_payables(endDate: '2025-02-28')
120
120
  search_payments(filter: {businessTransactionReference: {startWith: 'PAYRUN-2025-02-28-'}, valueDate: {eq: '2025-02-28'}})
121
121
  ```
122
122
 
@@ -142,7 +142,7 @@ Assert: per-account balance reduced by `sum(paymentAmount per accountResourceId)
142
142
  | `pay_bill` | 422 `bill_already_paid` | Bill went `PAID` since step 2. Re-run `search_bills` for fresh state; remove from batch. |
143
143
  | `pay_bill` | 422 `lock_date_violated` | `valueDate` is in a locked period. Either lift the lock via `update_account` lock_date OR adjust `valueDate` to the next open period. |
144
144
  | `pay_bill` | 500 mid-run | Some payments succeeded; others didn't. NOT idempotent; re-running the loop creates duplicates. Use `search_payments` with the run prefix to identify what succeeded; resume from the next unprocessed bill. Record the judgment: `jot(kind: RECOVERY)` naming the resume point and the bills already paid. |
145
- | `generate_aged_ap` | Total mismatch with `search_bills` | Likely `PARTIALLY_PAID` bills excluded from `search_bills` filter. Add `status: {in: ['UNPAID', 'PARTIALLY_PAID']}` and retry. |
145
+ | `generate_aged_payables` | Total mismatch with `search_bills` | Likely `PARTIALLY_PAID` bills excluded from `search_bills` filter. Add `status: {in: ['UNPAID', 'PARTIALLY_PAID']}` and retry. |
146
146
 
147
147
  ---
148
148
 
@@ -9,7 +9,7 @@
9
9
 
10
10
  ### Platform tools: quarterly extras
11
11
  - **`generate_vat_ledger(startDate: <Q-start>, endDate: <Q-end>)`**, Q1 GST/VAT filing prep: full quarterly tax ledger.
12
- - **`generate_aged_ar(endDate: <Q-end>)`**: Q2 ECL formal review input.
12
+ - **`generate_aged_receivables(endDate: <Q-end>)`**: Q2 ECL formal review input.
13
13
  - **`calculate(type: 'ecl', ...)`**, then `create_capsule` + `create_journal` with `capsuleResourceId`: Q2 ECL top-up if material (the three-step flow in `building-blocks.md` § Calculated schedules).
14
14
  - **`search_journals(filter: {tags: {eq: 'bonus-accrual'}, valueDate: {between: [<Q-start>, <Q-end>]}})`**: Q3 bonus YTD pull.
15
15
  - **`create_journal(...)`**: Q3 bonus true-up adjustment (manual one-off).
@@ -68,7 +68,7 @@ Full step-by-step in `gst-vat-filing.md`.
68
68
  ### Q2: ECL formal review
69
69
 
70
70
  ```
71
- generate_aged_ar(endDate: '2025-03-31')
71
+ generate_aged_receivables(endDate: '2025-03-31')
72
72
  clio calc ecl --current 100000 --30d 50000 --60d 20000 --90d 10000 --120d 5000 --rates 0.5,2,5,10,50 --existing-provision <TB Allowance balance> --currency <base currency> --json
73
73
  ```
74
74
 
@@ -23,7 +23,7 @@
23
23
  > The amount filter differs by endpoint: `totalAmount` is accepted on bills and on
24
24
  > cashflow-transactions but **rejected on supplier credit notes**, and no `paymentAmount` filter
25
25
  > exists anywhere; it is a response field on a payment, not a filter key.
26
- - **`generate_aged_ap(endDate: <date>)`** (step 5): per-supplier outstanding balance.
26
+ - **`generate_aged_payables(endDate: <date>)`** (step 5): per-supplier outstanding balance.
27
27
  - **`create_bill(...)`** / **`apply_credits_to_bill(...)`** / **`create_supplier_credit_note(...)`** (step 6): post any missing items identified during recon.
28
28
 
29
29
  ### Cross-references
@@ -62,7 +62,7 @@ search_bills(
62
62
 
63
63
  Per bill: `{resourceId, reference, valueDate, currency, originalAmount, paymentRecords, status, dueDate}`. `balanceAmount` is a FILTER key only; the API accepts it in a filter but never returns it on a bill or invoice. Reading it back yields undefined. Derive outstanding instead: `totalAmount - sum(paymentRecords[].transactionAmount) - sum(creditsApplied[].amountApplied)`, and fetch with `view: 'full'` because a lean row omits `paymentRecords` entirely. Keep the Jaz-side bill list for the recon pack.
64
64
 
65
- For an opening-balance recon: also pull the supplier's pre-period balance via `generate_aged_ap(endDate: <period-start - 1 day>)` and filter to this supplier.
65
+ For an opening-balance recon: also pull the supplier's pre-period balance via `generate_aged_payables(endDate: <period-start - 1 day>)` and filter to this supplier.
66
66
 
67
67
  ## Step 3: Pull payments
68
68
 
@@ -83,7 +83,7 @@ Save. Each credit note may have been applied to one or more bills; the applicati
83
83
  ## Step 5: Compute Jaz-side closing balance
84
84
 
85
85
  ```
86
- generate_aged_ap(endDate: '2025-01-31')
86
+ generate_aged_payables(endDate: '2025-01-31')
87
87
  ```
88
88
 
89
89
  Filter to this supplier. Compute: opening balance + new bills (step 2) - payments (step 3) - applied credit notes (step 4) = closing balance per Jaz.
@@ -94,7 +94,7 @@ Practitioner provides the supplier's statement (PDF, email, paper). Per-line-ite
94
94
 
95
95
  | Discrepancy | Likely cause | Fix |
96
96
  |-------------|--------------|-----|
97
- | Bill on supplier statement, not in Jaz | Missed bill (most common) | `create_bt_from_attachment` (local CLI: `clio magic create --file <bill-pdf> --type bill`) extracts the missing bill from its PDF, OR manual `create_bill(...)`; pay if owed. |
97
+ | Bill on supplier statement, not in Jaz | Missed bill (most common) | `create_transaction_from_document` (local CLI: `clio magic create --file <bill-pdf> --type bill`) extracts the missing bill from its PDF, OR manual `create_bill(...)`; pay if owed. |
98
98
  | Bill in Jaz, not on supplier statement | Supplier hasn't issued / lost the invoice | Verify with supplier; if confirmed bogus, `delete_bill` (DRAFT) OR `create_supplier_credit_note` (if ACTIVE). |
99
99
  | Different amounts on same reference | Pricing dispute | Practitioner contacts supplier for clarification. Possible adjustment journal post-resolution. |
100
100
  | Bill paid per Jaz, supplier says unpaid | Bank reconciliation gap | Pull bank statement for the payment date; verify the wire/cheque cleared. If cleared, send remittance proof to supplier. |
@@ -108,7 +108,7 @@ For each missing bill / credit note: post via `create_bill` / `create_supplier_c
108
108
 
109
109
  After corrections:
110
110
  ```
111
- generate_aged_ap(endDate: '2025-01-31')
111
+ generate_aged_payables(endDate: '2025-01-31')
112
112
  ```
113
113
 
114
114
  Filter to supplier. New closing balance should match the supplier statement closing balance within tolerance (typically zero; pricing rounding on long-running accounts can leave cents).
@@ -8,14 +8,14 @@
8
8
  - **`quarter-end-close.md`**: invoked four times in standalone mode (Q1, Q2, Q3, Q4) before annual extras run.
9
9
 
10
10
  ### Platform tools: annual extras
11
- - **`generate_fa_summary(primarySnapshotStartDate: <FY-start>, primarySnapshotEndDate: <FY-end>, groupBy: 'CATEGORY')`**: Y1 FA reconciliation: full-year depreciation movement per asset.
12
- - **`generate_fa_recon_summary(primarySnapshotStartDate: <FY-start>, primarySnapshotEndDate: <FY-end>)`**: Y1 verification: opening NBV + additions − disposals − depreciation = closing NBV.
11
+ - **`generate_fixed_assets_summary(primarySnapshotStartDate: <FY-start>, primarySnapshotEndDate: <FY-end>, groupBy: 'CATEGORY')`**: Y1 FA reconciliation: full-year depreciation movement per asset.
12
+ - **`generate_fixed_assets_reconciliation_summary(primarySnapshotStartDate: <FY-start>, primarySnapshotEndDate: <FY-end>)`**: Y1 verification: opening NBV + additions − disposals − depreciation = closing NBV.
13
13
  - **`search_fixed_assets(filter: {status: {in: ['ACTIVE', 'DISPOSED']}})`**: Y1 enumeration of FAs.
14
14
  - **`mark_fixed_asset_sold(...)` for a sale or `discard_fixed_asset(...)` for a write-off (both are operations, not status mutations)**: Y1 fallback if any FA has incorrect status at FY-end.
15
15
  - **`search_journals(filter: {tags: {eq: 'leave-accrual'}, valueDate: {between: [<FY-start>, <FY-end>]}})` / `search_journals(filter: {tags: {eq: 'bonus-accrual'}, ...})`**: Y2 true-up: pull all FY accrual journals to compare against actuals.
16
16
  - **`create_journal(...)`**: Y2 true-up adjustment journals (manual one-off, no calculator).
17
17
  - **`calculate(type: 'dividend', ...)`**, then `create_capsule` + `create_journal` (declaration) + `create_cash_out` (payment), each with `capsuleResourceId`: Y3 dividend declaration + payment.
18
- - **`calculate(type: 'ecl', ...)`**, then `create_capsule` + `create_journal` with `capsuleResourceId`: Y4 IFRS 9 ECL year-end true-up against `generate_aged_ar`.
18
+ - **`calculate(type: 'ecl', ...)`**, then `create_capsule` + `create_journal` with `capsuleResourceId`: Y4 IFRS 9 ECL year-end true-up against `generate_aged_receivables`.
19
19
  - **`update_account(resourceId: <CoA root>, lockDate: <FY-end>)`**: Y8 final lock.
20
20
 
21
21
  ### Platform tools: current/non-current reclassification (manual annual journals)
@@ -60,15 +60,15 @@ For each quarter Q1-Q4: invoke `quarter-end-close.md` job. Each builds on its ow
60
60
  ### Y1: Final FA reconciliation
61
61
 
62
62
  ```
63
- generate_fa_summary(primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-12-31', groupBy: 'CATEGORY')
64
- generate_fa_recon_summary(primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-12-31')
63
+ generate_fixed_assets_summary(primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-12-31', groupBy: 'CATEGORY')
64
+ generate_fixed_assets_reconciliation_summary(primarySnapshotStartDate: '2025-01-01', primarySnapshotEndDate: '2025-12-31')
65
65
  ```
66
66
 
67
67
  For Jaz native straight-line depreciation: should be automatic and correct. Verify the 12-month aggregate against `generate_general_ledger(accountResourceIds: [<Depreciation Expense>], startDate, endDate)`.
68
68
 
69
69
  For non-SL assets (DDB, 150DB) depreciated from a `calculate(type: 'depreciation', method: 'ddb' | '150db')` schedule: the year's journals were posted into the asset's capsule (up front as future-dated DRAFTs, or one per monthly close). Confirm all are FINALIZED via `search_journals(filter: {status: {eq: 'DRAFT'}, valueDate: {between: [<FY-start>, <FY-end>]}})` (should be empty). If non-empty: route back to `month-end-close.md` step 9.
70
70
 
71
- Reconcile `generate_fa_recon_summary` formula: `openingNbv + additions − disposals − depreciation == closingNbv == TB[Fixed Assets].balance`. Mismatch beyond the materiality threshold → investigate via `search_fixed_assets(filter: {status: {eq: 'ACTIVE'}})` cross-referenced against the depreciation capsule's journals (`search_journals(filter: {valueDate: {between: [<FY-start>, <FY-end>]}})`); typical cause is a disposal posted without `mark_fixed_asset_sold` / `discard_fixed_asset`.
71
+ Reconcile `generate_fixed_assets_reconciliation_summary` formula: `openingNbv + additions − disposals − depreciation == closingNbv == TB[Fixed Assets].balance`. Mismatch beyond the materiality threshold → investigate via `search_fixed_assets(filter: {status: {eq: 'ACTIVE'}})` cross-referenced against the depreciation capsule's journals (`search_journals(filter: {valueDate: {between: [<FY-start>, <FY-end>]}})`); typical cause is a disposal posted without `mark_fixed_asset_sold` / `discard_fixed_asset`.
72
72
 
73
73
  ### Y2: Annual true-ups (manual journals)
74
74
 
@@ -130,7 +130,7 @@ For interim dividends declared during the year: those should already be posted i
130
130
  ### Y4: IFRS 9 ECL year-end true-up
131
131
 
132
132
  ```
133
- generate_aged_ar(endDate: '2025-12-31')
133
+ generate_aged_receivables(endDate: '2025-12-31')
134
134
  ```
135
135
 
136
136
  Bucket AR by aging band per the org's ECL loss-rate matrix (current 0.5%, 30d 2%, 60d 5%, 90d 10%, 120d+ 50%; tune per the org's historical loss data).
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-recipes
3
- version: 6.1.1
3
+ version: 7.0.1
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
@@ -15,7 +15,7 @@
15
15
 
16
16
  ### Lookup and verification tools
17
17
  - **`get_fixed_asset(resourceId: <id>)`** (step 1): the asset's registered cost, purchase date and net book value. Use the live FA-register values; the auditor wants those, not a cached estimate.
18
- - **`generate_fa_summary(primarySnapshotStartDate: <FY-start>, primarySnapshotEndDate: <disposalDate>, groupBy: 'CATEGORY')`** (step 1 alt): NBV from Jaz's running FA register. If this matches your independent calculation, use it as the authoritative NBV. If they diverge: investigate (likely a missing depreciation journal).
18
+ - **`generate_fixed_assets_summary(primarySnapshotStartDate: <FY-start>, primarySnapshotEndDate: <disposalDate>, groupBy: 'CATEGORY')`** (step 1 alt): NBV from Jaz's running FA register. If this matches your independent calculation, use it as the authoritative NBV. If they diverge: investigate (likely a missing depreciation journal).
19
19
  - **`search_capsules(filter: {title: {eq: <capsule title>}})`**: step 0 idempotency check. Each disposal is unique; duplicate disposal journals would corrupt the FA register reconciliation.
20
20
  - **`search_accounts(filter: {name: {in: ['Vehicles', 'Accumulated Depreciation (Vehicles)', 'Gain on Disposal', 'Loss on Disposal']}})`**: step 2.
21
21
  - **`generate_trial_balance(endDate: <disposalDate>)`** (step 6): verify cost + accumulated depreciation cleared; gain/loss in P&L.
@@ -195,7 +195,7 @@ get_fixed_asset(resourceId: <FA UUID>)
195
195
  Should now show `status: 'DISPOSED'`, and no further depreciation auto-posting.
196
196
 
197
197
  ```
198
- generate_fa_recon_summary(primarySnapshotStartDate: <FY-start>, primarySnapshotEndDate: <FY-end>)
198
+ generate_fixed_assets_reconciliation_summary(primarySnapshotStartDate: <FY-start>, primarySnapshotEndDate: <FY-end>)
199
199
  ```
200
200
  Should reflect the disposal in the year's movement: `openingNbv − depreciation − disposals == closingNbv`.
201
201