jaz-clio 5.45.0 → 5.46.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.
- package/README.md +3 -3
- package/assets/skills/api/SKILL.md +2 -2
- package/assets/skills/api/references/full-api-surface.md +1 -1
- package/assets/skills/cli/SKILL.md +3 -3
- package/assets/skills/cli/references/command-catalog.md +2 -2
- package/assets/skills/conversion/SKILL.md +1 -1
- package/assets/skills/jaz-kit/SKILL.md +1 -1
- package/assets/skills/jaz-pseudo-sql/SKILL.md +1 -1
- package/assets/skills/jobs/SKILL.md +1 -1
- package/assets/skills/jobs/references/building-blocks.md +1 -1
- package/assets/skills/jobs/references/credit-control.md +1 -1
- package/assets/skills/jobs/references/fa-review.md +1 -1
- package/assets/skills/jobs/references/payment-run.md +5 -5
- package/assets/skills/jobs/references/supplier-recon.md +1 -1
- package/assets/skills/transaction-recipes/SKILL.md +1 -1
- package/assets/skills/transaction-recipes/references/building-blocks.md +3 -3
- package/assets/templates/platform-rules/jaz-agent-rules.md +2 -2
- package/cli.mjs +508 -508
- 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-
|
|
6
|
+
<img src="https://img.shields.io/badge/tools-367-blue?style=for-the-badge" alt="367 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>Jaz accounting on the command line, and inside any AI agent.</b></p>
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
367 tools · 66 command groups · 7 skills · 13 calculators · 12 close playbooks · 159 field-tested API rules.
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
15
|
npm install -g jaz-clio
|
|
@@ -77,7 +77,7 @@ that ends up in a journal.
|
|
|
77
77
|
|
|
78
78
|
## MCP server
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
367 tools for any AI agent that speaks MCP. Runs locally: no cloud, no ports.
|
|
81
81
|
|
|
82
82
|
> **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.
|
|
83
83
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jaz-api
|
|
3
|
-
version: 5.
|
|
3
|
+
version: 5.46.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, 159 production gotchas, error
|
|
@@ -148,7 +148,7 @@ The rest of this skill — field names, gotchas, error catalog, dependency order
|
|
|
148
148
|
| Trial balance | `startDate`, `endDate` |
|
|
149
149
|
| Balance sheet | `primarySnapshotDate` |
|
|
150
150
|
| P&L | `primarySnapshotDate`, `secondarySnapshotDate` |
|
|
151
|
-
| General ledger | `startDate`, `endDate`, `groupBy: "ACCOUNT"` (also `TRANSACTION`, `
|
|
151
|
+
| General ledger | `startDate`, `endDate`, `groupBy: "ACCOUNT"` (also `CONTACT`, `TRANSACTION`, `RELATIONSHIP`) |
|
|
152
152
|
| Cashflow | `primaryStartDate`, `primaryEndDate` |
|
|
153
153
|
| Cash balance | `reportDate` |
|
|
154
154
|
| AR/AP report | `endDate` |
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> **The endpoints clio wraps — the REST surface is larger.** This file catalogues roughly 200
|
|
4
4
|
> paths, organized by resource, including undocumented endpoints, magic AI features, admin
|
|
5
5
|
> APIs, and advanced search/filter syntax. The committed OpenAPI spec (`spec/openapi.yaml`)
|
|
6
|
-
> carries 440 paths /
|
|
6
|
+
> carries 440 paths / 367 operations and is the authoritative list; check it before concluding
|
|
7
7
|
> an endpoint does not exist. For request/response examples of core endpoints, see
|
|
8
8
|
> endpoints.md.
|
|
9
9
|
>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jaz-cli
|
|
3
|
-
version: 5.
|
|
3
|
+
version: 5.46.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
|
-
66 command groups and
|
|
11
|
+
66 command groups and 367 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. 66 command groups, 13 calculators, 12 job blueprints,
|
|
20
|
+
You are working with **Clio** (`jaz-clio`) — the CLI for the Jaz accounting platform. 66 command groups, 13 calculators, 12 job blueprints, 367 tools. Also fully compatible with Juan Accounting (same API, same endpoints).
|
|
21
21
|
|
|
22
22
|
## When to Use This Skill
|
|
23
23
|
|
|
@@ -406,7 +406,7 @@ Types: `trial-balance`, `balance-sheet`, `profit-loss`, `cashflow`, `aged-ar`, `
|
|
|
406
406
|
| `--from` | Start date (P&L, cashflow, equity, recon) |
|
|
407
407
|
| `--to` | End/snapshot date |
|
|
408
408
|
| `--currency` | Currency code override |
|
|
409
|
-
| `--group-by` | ACCOUNT, TRANSACTION,
|
|
409
|
+
| `--group-by` | GL: ACCOUNT, CONTACT, TRANSACTION, RELATIONSHIP · FA summary: ACCOUNT, TYPE, CATEGORY, STATUS |
|
|
410
410
|
| `--bank-account` | Bank account ID (for bank-recon-*) |
|
|
411
411
|
|
|
412
412
|
Also: `clio reports pdf` — generate PDF from a message/document.
|
|
@@ -586,7 +586,7 @@ Valid entity types: INVOICE, BILL, CUSTOMER_CREDIT_NOTE, SUPPLIER_CREDIT_NOTE, S
|
|
|
586
586
|
Universal async tracker — any operation returning a jobId (contacts bulk-upsert, items bulk-upsert, bank import, magic processing) can be polled here.
|
|
587
587
|
|
|
588
588
|
### `clio mcp` — MCP stdio server
|
|
589
|
-
Starts an MCP server for Claude Code / AI tool integration. Exposes all
|
|
589
|
+
Starts an MCP server for Claude Code / AI tool integration. Exposes all 367 operations.
|
|
590
590
|
|
|
591
591
|
### `clio serve` — HTTP daemon
|
|
592
592
|
Starts the HTTP daemon for ChatKit and email channel integrations.
|
|
@@ -87,7 +87,7 @@ Capsule types used by jobs:
|
|
|
87
87
|
|
|
88
88
|
Group GL by capsule for the auditor:
|
|
89
89
|
```
|
|
90
|
-
|
|
90
|
+
get_capsule(resourceId) # returns the capsule's transactions; GL cannot group by capsule
|
|
91
91
|
```
|
|
92
92
|
|
|
93
93
|
## Platform tools every job uses
|
|
@@ -53,7 +53,7 @@ search_invoices(
|
|
|
53
53
|
get_contact(resourceId: <customer id>)
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
For each customer build a chase record: `{customerName, totalOverdue, oldestDaysOverdue, invoices: [{reference, valueDate, dueDate, daysOverdue,
|
|
56
|
+
For each customer build a chase record: `{customerName, totalOverdue, oldestDaysOverdue, invoices: [{reference, valueDate, dueDate, daysOverdue, outstanding}], primaryContact}`.
|
|
57
57
|
|
|
58
58
|
## Step 3 — Contact-signals pull (Mid-7)
|
|
59
59
|
|
|
@@ -109,7 +109,7 @@ For assets at salvage value AND no longer in use:
|
|
|
109
109
|
|
|
110
110
|
For each FA category (e.g., Vehicles, Office Equipment, Computers, Buildings):
|
|
111
111
|
```
|
|
112
|
-
generate_general_ledger(accountResourceId: <FA cost GL>, period_start: '2025-01-01', period_end: '2025-12-31', groupBy: '
|
|
112
|
+
generate_general_ledger(accountResourceId: <FA cost GL>, period_start: '2025-01-01', period_end: '2025-12-31', groupBy: 'ACCOUNT')
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
Group by capsule shows per-asset / per-disposal trail. Auditor sample-test will pick 2-3 assets per category and trace GL → original purchase bill → FA registration → depreciation history → disposal (if any).
|
|
@@ -54,7 +54,7 @@ search_bills(
|
|
|
54
54
|
|
|
55
55
|
Paginate via `offset` if `totalElements > 200`. Add a 7-day grace window (`dueDate.lte: <cutoff + 7 days>`) — pay slightly early beats missing day-after.
|
|
56
56
|
|
|
57
|
-
For each bill, also collect: `contactResourceId`, `currency`, `originalAmount`, `
|
|
57
|
+
For each bill, also collect: `contactResourceId`, `currency`, `originalAmount`, `paymentRecords`, `creditsApplied`, `dueDate`, `reference`. `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. Per `jaz-api/SKILL.md` rule 52, `dueDate` arrives as epoch ms — convert with `new Date(ms)` before display.
|
|
58
58
|
|
|
59
59
|
## Step 3 — AP aging cross-check
|
|
60
60
|
|
|
@@ -62,7 +62,7 @@ For each bill, also collect: `contactResourceId`, `currency`, `originalAmount`,
|
|
|
62
62
|
generate_aged_ap(period_end: '2025-02-28')
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
-
Verify: `sum(
|
|
65
|
+
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
66
|
|
|
67
67
|
Flag any bill in the 60d+ bucket — these need priority OR dispute resolution. Exclude bills the user has flagged as disputed.
|
|
68
68
|
|
|
@@ -106,7 +106,7 @@ create_bill_payment(
|
|
|
106
106
|
|
|
107
107
|
**FX bills (e.g., USD bill paid from SGD account):** `paymentAmount` is the SGD amount that left the bank, `transactionAmount` is the USD amount applied to the bill. The platform calculates the implied rate and posts the FX gain/loss. Per `jaz-api/SKILL.md` rule 4: same-currency means both fields equal; FX means they differ.
|
|
108
108
|
|
|
109
|
-
**Partial payment:** Set both fields to the partial amount; bill remains `UNPAID`
|
|
109
|
+
**Partial payment:** Set both fields to the partial amount; bill remains `UNPAID`; the payment appears in `paymentRecords[]` and outstanding is derived from it.
|
|
110
110
|
|
|
111
111
|
**Reference convention:** `PAYRUN-YYYY-MM-DD-NNN` (zero-padded sequence). Bank reconciliation downstream relies on this prefix to auto-match bank statement lines.
|
|
112
112
|
|
|
@@ -123,7 +123,7 @@ search_payments(filter: {reference: {startsWith: 'PAYRUN-2025-02-28-'}, valueDat
|
|
|
123
123
|
|
|
124
124
|
Assert:
|
|
125
125
|
- AP aging total reduced by `sum(payments.transactionAmount)` (in base currency, FX-converted at value date).
|
|
126
|
-
- Bills fully paid no longer appear in aging; partials
|
|
126
|
+
- Bills fully paid no longer appear in aging; partials carry the payment in `paymentRecords[]`; derive outstanding from it.
|
|
127
127
|
- `search_payments` returns N rows where N = bills paid in step 6.
|
|
128
128
|
|
|
129
129
|
```
|
|
@@ -152,7 +152,7 @@ Assert: per-account balance reduced by `sum(paymentAmount per accountResourceId)
|
|
|
152
152
|
- **Priority-based payment ordering:** `sort: 'dueDate:asc'` covers chronological. For overdue-first, sort by `daysOverdue:desc`. For supplier-strategic, ask the user which suppliers are priority and process those first.
|
|
153
153
|
- **Multi-currency runs:** Split the run by currency. SGD bills → SGD bank; USD bills → USD bank or SWIFT-routed. The actual bank disbursement is handled outside Jaz (via the bank's portal); Jaz records the payment after it clears.
|
|
154
154
|
- **Approval workflow (multi-signatory SMBs):** Build the batch in step 5, get out-of-band approval, then execute step 6 only after sign-off. Do NOT post payments before the actual bank transfer is initiated — Jaz payments are not "payment instructions", they record completed payments.
|
|
155
|
-
- **Early-payment discounts:** If supplier offers `2% 10 Net 30`, computing the equivalent annualized return is `(2% / 98%) × (365 / 20) ≈ 37.2%`. Take it when cash allows. Apply the discount as: pay `transactionAmount =
|
|
155
|
+
- **Early-payment discounts:** If supplier offers `2% 10 Net 30`, computing the equivalent annualized return is `(2% / 98%) × (365 / 20) ≈ 37.2%`. Take it when cash allows. Apply the discount as: pay `transactionAmount = (derived outstanding) × 0.98`, then post a separate journal Dr Bank Charges/Discount Income for the 2% saved (cleaner than partial payment of the original bill).
|
|
156
156
|
|
|
157
157
|
---
|
|
158
158
|
|
|
@@ -47,7 +47,7 @@ search_bills(
|
|
|
47
47
|
)
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
Per bill: `{resourceId, reference, valueDate, currency, originalAmount,
|
|
50
|
+
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.
|
|
51
51
|
|
|
52
52
|
For an opening-balance recon: also pull the supplier's pre-period balance via `generate_aged_ap(period_end: <period-start - 1 day>)` and filter to this supplier.
|
|
53
53
|
|
|
@@ -63,7 +63,7 @@ The recipe engine uses capsules automatically. But capsules also enable advanced
|
|
|
63
63
|
|
|
64
64
|
2. **Use Capsule Types as the search axis, not Capsule Name.** Capsule names are unique per instance ("FY2025 Office Insurance"); types are reusable ("Prepaid Expenses"). `search_capsules(filter: {capsuleType: {eq: 'Prepaid Expenses'}})` returns ALL prepaid capsules across history.
|
|
65
65
|
|
|
66
|
-
3. **
|
|
66
|
+
3. **Tie capsule entries back for the auditor.** `generate_general_ledger` does NOT group by capsule -- `groupBy` is ACCOUNT, CONTACT, TRANSACTION or RELATIONSHIP, and `CAPSULE` returns 422 (verified live 2026-09-01). Auditor sample-test: pick 3 capsules per type, read each with `get_capsule` to get its transaction resource ids, then pull those documents (bills, invoices, journals) directly. Same evidence, one more hop.
|
|
67
67
|
|
|
68
68
|
**MCP tool shape:**
|
|
69
69
|
|
|
@@ -91,7 +91,7 @@ search_capsules(filter: {capsuleType: {eq: 'Loan Repayment'}}, status: {eq: 'ACT
|
|
|
91
91
|
# All open loan capsules — feed into year-end-close.md Y6 reclassification
|
|
92
92
|
search_journals(filter: {capsuleResourceId: {eq: <id>}}, sort: 'valueDate:asc')
|
|
93
93
|
# Full GL for one capsule — the auditor's view
|
|
94
|
-
|
|
94
|
+
get_capsule(resourceId) # returns the capsule's transactions; GL cannot group by capsule
|
|
95
95
|
# Period activity grouped by capsule — the practitioner's view
|
|
96
96
|
```
|
|
97
97
|
|
|
@@ -241,7 +241,7 @@ Apply enrichments to recipe transactions for richer reporting and record-keeping
|
|
|
241
241
|
}
|
|
242
242
|
```
|
|
243
243
|
4. **Supported transaction types**: invoices, bills, credit notes, journals, cash entries
|
|
244
|
-
5. **Reports**:
|
|
244
|
+
5. **Reports**: General Ledger cannot group by capsule (`groupBy` accepts ACCOUNT, CONTACT, TRANSACTION, RELATIONSHIP only). Read the capsule with `get_capsule` and pull its transactions.
|
|
245
245
|
|
|
246
246
|
---
|
|
247
247
|
|
|
@@ -6,11 +6,11 @@ Source of truth lives in the installed skills (`.claude/skills/jaz-*/SKILL.md` o
|
|
|
6
6
|
|
|
7
7
|
## Discovery
|
|
8
8
|
|
|
9
|
-
Jaz exposes **
|
|
9
|
+
Jaz exposes **367 tools across 45 namespaces**. Your tool list shows **3, 45, or 367** entries depending on packaging — **never infer capability from its length.**
|
|
10
10
|
|
|
11
11
|
- **3** — `search_tools(query)` → `describe_tools(names)` → `execute_tool(name, args)`. Empty query returns the namespace map.
|
|
12
12
|
- **43** — namespace routers; call one with `{ operation, arguments }`. Its description lists its operations.
|
|
13
|
-
- **
|
|
13
|
+
- **367** — call operations directly by name.
|
|
14
14
|
|
|
15
15
|
`describe_capabilities` returns the capability map on all three. **Call it before telling the user Jaz cannot do something.**
|
|
16
16
|
|