jaz-clio 8.0.0 → 9.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.
- package/README.md +3 -3
- package/assets/skills/api/SKILL.md +3 -3
- package/assets/skills/api/references/endpoints.md +8 -5
- package/assets/skills/api/references/errors.md +1 -7
- package/assets/skills/api/references/feature-glossary.md +1 -1
- package/assets/skills/api/references/field-map.md +7 -4
- package/assets/skills/api/references/full-api-surface.md +3 -2
- package/assets/skills/api/references/orders.md +5 -5
- 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/transaction-recipes/SKILL.md +1 -1
- package/assets/templates/platform-rules/jaz-agent-rules.md +2 -2
- package/cli.mjs +461 -470
- 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-387-blue?style=for-the-badge" alt="387 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
|
-
|
|
12
|
+
387 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
|
-
|
|
112
|
+
387 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:
|
|
3
|
+
version: 9.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
|
|
@@ -170,7 +170,7 @@ The rest of this skill (field names, gotchas, error catalog, dependency order, s
|
|
|
170
170
|
42. **Scheduler GET returns `interval`**; POST uses `repeat`. (Response-side asymmetry remains.)
|
|
171
171
|
43. **Search sort is an object**: `{ sort: { sortBy: ["valueDate"], order: "DESC" } }`. Required when `offset` is present (even `offset: 0`).
|
|
172
172
|
44. **Bank records**. **Create**: Multipart CSV/OFX via `POST /magic/importBankStatementFromAttachment` or JSON via `POST /bank-records/:accountResourceId` with `{ records: [{amount, transactionDate, description?, payerOrPayee?, reference?}] }` (positive = cash-in, negative = cash-out, response: `{data: {errors: []}}`). **Search**: `POST /bank-records/:accountResourceId/search`; filter fields: `valueDate` (DateExpression), `status` (StringExpression: UNRECONCILED, RECONCILED, ARCHIVED, POSSIBLE_DUPLICATE), `description`, `extContactName` (payer/payee), `extReference`, `netAmount` (BigDecimalExpression), `extAccountNumber`. Sort by `valueDate` DESC default.
|
|
173
|
-
45. **Withholding tax
|
|
173
|
+
45. **Withholding tax (PH) has two sides.** Expanded withholding (EWT) on what you pay sits on each bill / supplier credit note line as `withholdingTax`: copy `code`, `rate`, `type` and `description` from one `list_withholding_codes` row (a field left out is not stored, measured 2026-10-06). Creditable withholding (CWT) a customer deducts is recorded from the customer's BIR Form 2307 with `record_withholding_tax_certificate`, never on the invoice lines (rule 98). On `WITHHOLDING_CODE_NOT_FOUND`, check the code against `list_withholding_codes` (codes contain a space: `WC 158`); never strip the field silently, because the tax disappears from the bill.
|
|
174
174
|
46. **Known API bugs (500s)**: none on this list today. **Capsules POST, catalogs POST, inventory balances by status GET, contact groups PUT and custom fields PUT are NO LONGER on this list.** Capsules POST creates the capsule and returns its `resourceId`. Catalogs POST returned 201 on a live probe 2026-09-23 (item `unit` omitted, it is optional); its response is counts (`createdCatalogs`, `createdCatalogItems`), not a resourceId, so find the new catalog with `search_catalogs`. Inventory balances by status works (Rule 97). Contact groups PUT and custom fields PUT were re-probed live 2026-09-02 and returned 200 and applied the change. Do not route around any of them.
|
|
175
175
|
47. **Non-existent endpoints**: `POST /inventory/adjustments` (and `/inventory-adjustments`, `/inventory-items/:id/adjustments`, `/items/:id/inventory-adjustments`; no stock-adjustment write path exists at any spelling), `GET /payments` (list), and `POST /payments/search` return 404; these endpoints are not implemented. For payments, per-payment CRUD is `GET/PUT/DELETE /payments/:resourceId` and there ARE two payment-scoped searches; see Rule 64. `POST /deposits` also 404s, but for a different reason, see Rule 47a; do not read it as a missing feature.
|
|
176
176
|
47a. **Deposits are not an entity; the 404 on `/deposits` is by design.** A deposit is a **flag on a Chart of Accounts account**, not a document: the account carries `depositContactType` = `CUSTOMER` (advance received, a liability) or `SUPPLIER` (advance paid, an asset). Once flagged, a deposit movement is an **ordinary transaction against that account**: top up with `POST /journals` / `POST /cash-in-entries` / `POST /cash-out-entries` (one leg on the flagged account), draw down with `POST /invoices/:id/payments` or `POST /bills/:id/payments` passing `accountResourceId` = the flagged account **and `paymentMethod` set to something other than BANK_TRANSFER / CASH / CHEQUE** (use `OTHER`; those three force a bank/cash account and 422 here, see Rule 80), read with `POST /cashflow-transactions/search`. **Flagging the account is a web-app action**: `depositContactType` is on no chart-of-accounts request or response model here, and the platform-backend mutation that sets it (`configureDepositAccounts`) is not proxied, so `POST /chart-of-accounts` cannot create a deposit account. Over the API you can only read and post against an account someone already flagged. Full walkthrough: `references/endpoints.md` → Deposits.
|
|
@@ -334,7 +334,7 @@ Bills, invoices, and credit notes share identical mandatory field specs. Adding
|
|
|
334
334
|
97. **Inventory balances: one item or all.** One item: `GET /inventory-item-balance/:itemResourceId` (`get_inventory_balance`) returns `{ itemResourceId, latestAverageCostAmount, baseQty, baseUnit }`; the id is the ITEM resourceId, not an inventory-specific ID. All items: `GET /inventory-balances/:balanceStatus` (`list_inventory_balances`, `clio inventory balances --status`) with `balanceStatus` one of `ALL`, `AVAILABLE`, `FULLY_DRAWN` (anything else is 422); rows carry `itemCode`, `internalName`, `totalQuantity`, `baseUnit`, `averageCostAmount`, `balanceAmount`. The API answers an empty result with 404; the tool and CLI return it as `data: []`. `offset` is a page number here, though the spec says row (probed live 2026-09-23).
|
|
335
335
|
|
|
336
336
|
### Withholding Tax
|
|
337
|
-
98. **Withholding
|
|
337
|
+
98. **Withholding codes are `GET /withholding-codes`** (`list_withholding_codes`, `clio tax-profiles withholding-codes`): the BIR ATCs with `code`, `rate`, `rateType`, `type` (corp, ind, final, wvat), `description` and `resourceId`; filters `countryCode`, `code` (contains, space included) and `type`; `limit` max 100, `offset` is a page. `GET /withholding-tax-codes` is a different list (MSIC/PSIC industry codes) that no withholding field accepts. A customer's 2307 is a sale batch payment with method `WITHHOLDING_TAX_CERTIFICATE` (`record_withholding_tax_certificate`): PH orgs only, sales only, account = the system "Creditable Withholding Tax" account, one allocation per code by `resourceId`, and each allocation's `baseAmount` is the TAX WITHHELD (the dashboard's "Withholding" column; `amount` is the income); the `baseAmount`s must add up to the payment total within 0.01. The certificate lands on the invoice as `recordedWithholding_ph` (`get_invoice`), not among its payments, so an empty payment list does not mean it failed; `delete_payment` with the record's `resourceId` removes it (verified live 2026-10-07).
|
|
338
338
|
99. **Duplicate detection fields**. API rejects duplicates with 422: Contacts on `name` (NOT `billingName`), Items on `itemCode`, Accounts on `name`, Tax Profiles on `name`. Agent tools auto-search before creating; if a match is found, the existing entity is returned instead of hitting a 422.
|
|
339
339
|
|
|
340
340
|
### Tax Profile Scoping
|
|
@@ -643,7 +643,7 @@ The `payments` array uses the same 6-field structure as standalone payments. pro
|
|
|
643
643
|
|
|
644
644
|
### Withholding Tax on Line Items
|
|
645
645
|
|
|
646
|
-
Bills and supplier credit notes support withholding tax per line item:
|
|
646
|
+
Bills and supplier credit notes support expanded withholding tax (EWT, Philippines) per line item. Copy `code`, `rate`, `type` and `description` from one `GET /withholding-codes` row (`list_withholding_codes`); a field left out is not stored:
|
|
647
647
|
|
|
648
648
|
```json
|
|
649
649
|
{
|
|
@@ -653,15 +653,18 @@ Bills and supplier credit notes support withholding tax per line item:
|
|
|
653
653
|
"quantity": 1,
|
|
654
654
|
"accountResourceId": "expense-uuid",
|
|
655
655
|
"withholdingTax": {
|
|
656
|
-
"code": "
|
|
657
|
-
"rate":
|
|
658
|
-
"
|
|
656
|
+
"code": "WC 158",
|
|
657
|
+
"rate": 1,
|
|
658
|
+
"type": "corp",
|
|
659
|
+
"description": "Income Payment Made By Top Withholding Agents To Their Local/Resident Supplier Of Goods Other Than Those Covered By Other Rates Of Withholding Tax"
|
|
659
660
|
}
|
|
660
661
|
}]
|
|
661
662
|
}
|
|
662
663
|
```
|
|
663
664
|
|
|
664
|
-
**
|
|
665
|
+
**On `WITHHOLDING_CODE_NOT_FOUND`**: check the code against `list_withholding_codes` (codes contain a space). If the organization does not use withholding (non-PH), remove `withholdingTax` and say so; never strip it silently. See errors.md.
|
|
666
|
+
|
|
667
|
+
Customer-side withholding (CWT) is not a line field: record the customer's BIR Form 2307 with `record_withholding_tax_certificate` (`POST /sales/batch-payments`, `paymentMethod: WITHHOLDING_TAX_CERTIFICATE`, `ph2307Details`). SKILL.md rule 98 has the rules.
|
|
665
668
|
|
|
666
669
|
---
|
|
667
670
|
|
|
@@ -749,13 +749,7 @@ The same applies on update: `PUT /cash-in-entries/:id` with `saveAsDraft: true`
|
|
|
749
749
|
**Request**: POST /api/v1/bills with `withholdingTax` on line items
|
|
750
750
|
**Error**: `"WITHHOLDING_CODE_NOT_FOUND"` or similar withholding-related error
|
|
751
751
|
**Cause**: The organization does not have withholding tax enabled, or the code is invalid for this region.
|
|
752
|
-
**Fix**:
|
|
753
|
-
|
|
754
|
-
**Retry pattern** (from production):
|
|
755
|
-
1. Submit bill/credit note with `withholdingTax` fields
|
|
756
|
-
2. If error contains "WITHHOLDING" (case-insensitive), strip `withholdingTax` from all line items
|
|
757
|
-
3. Retry the same request without withholding tax
|
|
758
|
-
4. Log which org doesn't support withholding tax to avoid future retries
|
|
752
|
+
**Fix**: First check the code against `list_withholding_codes` (`GET /withholding-codes`): codes contain a space (`WC 158`, not `WC158`). If the organization does not use withholding (Singapore orgs typically don't; Philippines orgs do), remove `withholdingTax` from the line items, retry, and tell the user the bill was recorded without it. Never strip it silently: the withholding disappears from the bill.
|
|
759
753
|
|
|
760
754
|
---
|
|
761
755
|
|
|
@@ -231,7 +231,7 @@ Fixed assets lock their linked line items: cannot edit account, amounts, or exch
|
|
|
231
231
|
|
|
232
232
|
**User Roles**: Admin (full access), Preparer (create drafts, submit for approval), Member (own drafts only). Granular permissions by module (AR, AP, Treasury, Journals).
|
|
233
233
|
|
|
234
|
-
**API**: CRUD `GET/POST/PUT/DELETE /chart-of-accounts`, `POST /chart-of-accounts/bulk-upsert`, `POST /chart-of-accounts/search`, `GET /tax-profiles`, `POST /tax-profiles/search`, CRUD `GET/POST/PUT/DELETE /tags`, `POST /tags/search`, CRUD `GET/POST/PUT/DELETE /custom-fields`, `POST /custom-fields/search`, `POST /organization/currencies` (enable), `DELETE /organization/currencies/:code` (disable), `POST /organization/currencies/:code/rates` (set FX rate, CRUD), `GET /organization` (org details), CRUD `GET/POST/PUT/DELETE /organization/bookmarks`, CRUD `GET/POST/PUT/DELETE /nano-classifiers`, `POST /nano-classifiers/search`, `GET /organization-users`, `POST /organization-users/search`. Reference data: `GET /account-classifications`, `GET /withholding-tax-codes
|
|
234
|
+
**API**: CRUD `GET/POST/PUT/DELETE /chart-of-accounts`, `POST /chart-of-accounts/bulk-upsert`, `POST /chart-of-accounts/search`, `GET /tax-profiles`, `POST /tax-profiles/search`, CRUD `GET/POST/PUT/DELETE /tags`, `POST /tags/search`, CRUD `GET/POST/PUT/DELETE /custom-fields`, `POST /custom-fields/search`, `POST /organization/currencies` (enable), `DELETE /organization/currencies/:code` (disable), `POST /organization/currencies/:code/rates` (set FX rate, CRUD), `GET /organization` (org details), CRUD `GET/POST/PUT/DELETE /organization/bookmarks`, CRUD `GET/POST/PUT/DELETE /nano-classifiers`, `POST /nano-classifiers/search`, `GET /organization-users`, `POST /organization-users/search`. Reference data: `GET /account-classifications`, `GET /withholding-codes` (withholding ATCs), `GET /withholding-tax-codes` (MSIC/PSIC industry codes), `GET /tax-types`, `GET /modules`
|
|
235
235
|
|
|
236
236
|
---
|
|
237
237
|
|
|
@@ -208,11 +208,14 @@ COGS maps to `"Direct Costs"`; "Cost of Goods Sold" is the default account name
|
|
|
208
208
|
| What You'd Guess | Actual API Field | Notes |
|
|
209
209
|
|---|---|---|
|
|
210
210
|
| `tax` | `withholdingTax` | Nested object on each line item |
|
|
211
|
-
| `withholdingTaxCode` | `withholdingTax.code` |
|
|
212
|
-
| `withholdingTaxRate` | `withholdingTax.rate` | Numeric percentage (e.g.,
|
|
213
|
-
| `
|
|
211
|
+
| `withholdingTaxCode` | `withholdingTax.code` | The ATC, space included (e.g., "WC 158") |
|
|
212
|
+
| `withholdingTaxRate` | `withholdingTax.rate` | Numeric percentage (e.g., 1) |
|
|
213
|
+
| `withholdingTaxType` | `withholdingTax.type` | corp, ind, final or wvat |
|
|
214
|
+
| `withholdingTaxDescription` | `withholdingTax.description` | The code's description |
|
|
214
215
|
|
|
215
|
-
|
|
216
|
+
Copy all four from one `list_withholding_codes` row; a field left out is not stored on the line.
|
|
217
|
+
|
|
218
|
+
**Line-level only on**: bills and supplier credit notes (EWT). Customer-side withholding (CWT) on invoices is recorded from the customer's BIR Form 2307 with `record_withholding_tax_certificate`, not on invoice lines.
|
|
216
219
|
|
|
217
220
|
---
|
|
218
221
|
|
|
@@ -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
|
|
6
|
+
> carries 475 spec paths and 607 spec 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
|
>
|
|
@@ -848,11 +848,12 @@ incomplete. Reaching them needs a raw HTTP call.
|
|
|
848
848
|
| POST | `/bank-records/:accountResourceId/archive` | Archive bank records |
|
|
849
849
|
| POST | `/bank-records/:accountResourceId/unarchive` | Unarchive bank records |
|
|
850
850
|
|
|
851
|
-
### Withholding (
|
|
851
|
+
### Withholding (2): 2026-07-31, withholding-codes 2026-10-06
|
|
852
852
|
|
|
853
853
|
| Method | Path | Description |
|
|
854
854
|
|--------|------|-------------|
|
|
855
855
|
| POST | `/payments/withholding` | Record withholding on a sale / sale credit note payment (see SKILL.md Rule 45) |
|
|
856
|
+
| GET | `/withholding-codes` | Withholding codes (BIR ATCs) for line `withholdingTax` and 2307 allocations (Rule 98) |
|
|
856
857
|
|
|
857
858
|
---
|
|
858
859
|
|
|
@@ -18,7 +18,7 @@ Two MCP namespaces wrap these: **`sale_orders`** (Sale Quotes + Sale Orders) and
|
|
|
18
18
|
| `PURCHASE_REQUEST` | DRAFT (default) / ACTIVE (saveAsDraft:false) | **accept** (ACTIVE → ACCEPTED) | VOID | yes (default true) |
|
|
19
19
|
| `PURCHASE_ORDER` | DRAFT (default) / ACTIVE (saveAsDraft:false) | **confirm** → CONFIRMED | VOID | yes (default true) |
|
|
20
20
|
|
|
21
|
-
- **Quotes & Requests use `accept`. Orders use `confirm`.**
|
|
21
|
+
- **Quotes & Requests use `accept`. Orders use `confirm`.** Each is its own tool: `accept_sale_quote`, `confirm_sale_order`, `accept_purchase_request`, `confirm_purchase_order`.
|
|
22
22
|
- **`accept` works on the ISSUED state, not DRAFT**: a Sale Quote must be CREATED, a Purchase Request must be ACTIVE. Accepting a DRAFT returns `422 Invalid status` (verified live). **Issue an existing DRAFT in place** with the update tool's flag: `update_sale_order` `isDraftToActiveSaleQuote: true` (→ CREATED), `update_purchase_order` `isDraftToActivePurchaseRequest: true` (→ ACTIVE). Send every stored line with its `resourceId` in the SAME update: a flag-only update is refused with `422 SALE_LINE_ITEMS_REQUIRED` (verified live 2026-09-23 on a sale quote). It keeps the document's number and line ids (verified live: DRAFT → CREATED, same reference, same line `resourceId`; a line without an account issued fine), so never create a second quote/request to issue one. (Update with `saveAsDraft:false` does NOT issue a DRAFT, verified live.) To create one already issued, pass `saveAsDraft:false` on create.
|
|
23
23
|
- **Sale Orders have no draft state**: `saveAsDraft` is ignored; created directly as `CREATED`.
|
|
24
24
|
- **PENDING orders.** Jaz Magic creates Sale Orders and Purchase Orders as `PENDING`. Take one live with `update_sale_order` `isPendingToActiveSaleOrder: true` / `update_purchase_order` `isPendingToActivePurchaseOrder: true`. Search accepts `status: PENDING`.
|
|
@@ -85,13 +85,13 @@ To change a few fields on some lines without resending the document, use `quick_
|
|
|
85
85
|
|
|
86
86
|
## Delete vs Void
|
|
87
87
|
|
|
88
|
-
- **DELETE is draft-only** (422 on anything non-draft). `
|
|
89
|
-
- **VOID** cancels any non-draft quote/request/order; optional `internalNotes` reason.
|
|
88
|
+
- **DELETE is draft-only** (422 on anything non-draft). `delete_sale_order` / `delete_purchase_order` pre-flight the status and return a `repair` pointing at the void tool for a non-draft record.
|
|
89
|
+
- **VOID** (`void_sale_order` / `void_purchase_order`) cancels any non-draft quote/request/order; optional `internalNotes` reason.
|
|
90
90
|
|
|
91
91
|
## MCP tools
|
|
92
92
|
|
|
93
|
-
`sale_orders`: `create_sale_order`, `get_sale_order`, `search_sale_orders`, `search_sale_order_line_items`, `update_sale_order`, `
|
|
94
|
-
`purchase_orders`: `create_purchase_order`, `get_purchase_order`, `search_purchase_orders`, `search_purchase_order_line_items`, `update_purchase_order`, `
|
|
93
|
+
`sale_orders`: `create_sale_order`, `get_sale_order`, `search_sale_orders`, `search_sale_order_line_items`, `update_sale_order`, `accept_sale_quote`, `confirm_sale_order`, `void_sale_order`, `delete_sale_order`, `convert_sale_order_to_invoice`.
|
|
94
|
+
`purchase_orders`: `create_purchase_order`, `get_purchase_order`, `search_purchase_orders`, `search_purchase_order_line_items`, `update_purchase_order`, `accept_purchase_request`, `confirm_purchase_order`, `void_purchase_order`, `delete_purchase_order`, `convert_purchase_order_to_bill`.
|
|
95
95
|
|
|
96
96
|
PDF downloads for the documents these convert into: `download_bill_pdf` (`bills`), `download_supplier_credit_note_pdf` (`supplier_credit_notes`), alongside the existing `download_invoice_pdf` / `download_credit_note_pdf`.
|
|
97
97
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jaz-cli
|
|
3
|
-
version:
|
|
3
|
+
version: 9.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
|
|
11
|
+
74 command groups and 387 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),
|
|
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), 387 tools. Also fully compatible with Juan Accounting (same API, same endpoints).
|
|
21
21
|
|
|
22
22
|
## When to Use This Skill
|
|
23
23
|
|
|
@@ -192,7 +192,7 @@ Same subcommands and flags as `cash-in`.
|
|
|
192
192
|
| `create` | `--rate`, `--name`, `--tax-type-code` |
|
|
193
193
|
| `update <id>` | `--name`, `--rate` |
|
|
194
194
|
| `types` | List available tax type codes |
|
|
195
|
-
| `
|
|
195
|
+
| `withholding-codes` | List withholding codes (BIR ATCs) for a bill line's withholding tax and a Withholding Tax Certificate (2307) |
|
|
196
196
|
|
|
197
197
|
### `clio filing-submissions`: Tax return filings (read-only, 1 tool)
|
|
198
198
|
| Subcommand | Key flags |
|
|
@@ -725,7 +725,7 @@ Valid entity types: INVOICE, BILL, CUSTOMER_CREDIT_NOTE, SUPPLIER_CREDIT_NOTE, S
|
|
|
725
725
|
Universal async tracker: any operation returning a jobId (contacts bulk-upsert, items bulk-upsert, bank import, magic processing) can be polled here.
|
|
726
726
|
|
|
727
727
|
### `clio mcp`: MCP stdio server
|
|
728
|
-
Starts an MCP server for Claude Code / AI tool integration. Exposes all
|
|
728
|
+
Starts an MCP server for Claude Code / AI tool integration. Exposes all 387 operations.
|
|
729
729
|
|
|
730
730
|
### `clio init`: Skill installer
|
|
731
731
|
Installs AI agent skills into your project.
|
|
@@ -4,11 +4,11 @@ Jaz accounting guidance for this workspace. Load the installed Jaz skills for de
|
|
|
4
4
|
|
|
5
5
|
## Discovery
|
|
6
6
|
|
|
7
|
-
Jaz exposes **
|
|
7
|
+
Jaz exposes **387 tools across 49 namespaces**. Your tool list shows **3, 49, or 387** entries depending on packaging; **never infer capability from its length.**
|
|
8
8
|
|
|
9
9
|
- **3**: `search_tools(query)` → `describe_tools(names)` → `execute_tool(name, args)`. Empty query returns the namespace map.
|
|
10
10
|
- **49**: namespace routers; call one with `{ operation, arguments }`. Its description lists its operations.
|
|
11
|
-
- **
|
|
11
|
+
- **387**: call operations directly by name.
|
|
12
12
|
|
|
13
13
|
`describe_capabilities` returns the capability map on all three. **Call it before telling the user Jaz cannot do something.**
|
|
14
14
|
|