{
  "markdown": "# Jaz AI · Agent stack for the ledger\n\n<p align=\"center\">\n  <a href=\"https://github.com/teamtinvio/jaz-ai/releases\"><img src=\"https://img.shields.io/github/v/release/teamtinvio/jaz-ai?style=for-the-badge&color=blue\" alt=\"GitHub Release\"></a>\n  <img src=\"https://img.shields.io/badge/tools-369-blue?style=for-the-badge\" alt=\"369 tools\">\n  <img src=\"https://img.shields.io/badge/API_rules-159-green?style=for-the-badge\" alt=\"159 API rules\">\n  <img src=\"https://img.shields.io/badge/skills-7-purple?style=for-the-badge\" alt=\"7 skills\">\n  <img src=\"https://img.shields.io/badge/recipe_playbooks-16-orange?style=for-the-badge\" alt=\"16 Recipe Playbooks\">\n  <img src=\"https://img.shields.io/badge/calculators-13-red?style=for-the-badge\" alt=\"13 Calculators\">\n  <img src=\"https://img.shields.io/badge/jobs-12-teal?style=for-the-badge\" alt=\"12 Jobs\">\n  <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>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/jaz-clio\"><img src=\"https://img.shields.io/npm/v/jaz-clio?style=flat-square&logo=npm&label=CLI\" alt=\"npm\"></a>\n  <a href=\"https://www.npmjs.com/package/jaz-clio\"><img src=\"https://img.shields.io/npm/dm/jaz-clio?style=flat-square&label=downloads\" alt=\"npm downloads\"></a>\n  <a href=\"https://github.com/teamtinvio/jaz-ai/stargazers\"><img src=\"https://img.shields.io/github/stars/teamtinvio/jaz-ai?style=flat-square&logo=github\" alt=\"GitHub stars\"></a>\n</p>\n\nThe complete agent surface for [Jaz](https://jaz.ai) accounting. 369 tools, 7 skills, 13 IFRS recipes, 13 calculators, 12 close playbooks. Works with any agent: Claude, GPT, Gemini, Copilot, Cursor. Token-lean discovery, first-try tool selection, structured errors an agent can recover from.\n\n> Also fully compatible with [Juan Accounting](https://juan.ac) (same API surface).\n\n## Contents\n\n- [Install · 30 seconds](#install--30-seconds)\n- [What you get](#what-you-get)\n- [Three layers](#three-layers)\n- [Quick start](#quick-start)\n- [Token economics + speed](#token-economics--speed)\n- [For AI agents](#for-ai-agents)\n- [For accountants](#for-accountants)\n- [Jaz Kit · run your practice](#jaz-kit--run-your-practice)\n- [Reference](#reference)\n- [Troubleshooting](#troubleshooting)\n- [Privacy & security](#privacy--security)\n- [Support](#support)\n\n## Install · 30 seconds\n\n| Your agent | Install |\n|------------|---------|\n| **Claude.ai · ChatGPT · Cowork** (hosted, no install) | Add a custom connector → `https://mcp.jaz.ai/mcp` → sign in. See [Remote connector](#remote-connector--no-install). |\n| **Microsoft 365 Copilot · Copilot Studio** (hosted, no install) | Add an MCP tool → `https://mcp.jaz.ai/mcp` → OAuth sign-in. See [Microsoft 365 Copilot](#microsoft-365-copilot--copilot-studio). |\n| **Claude Code** | `/plugin marketplace add teamtinvio/jaz-ai` |\n| **Claude Desktop** | Install the `.mcpb` from [latest release](https://github.com/teamtinvio/jaz-ai/releases/latest) |\n| **Cursor / Windsurf** | Add the stdio MCP config (below) |\n| **VS Code (incl. GitHub Copilot)** | Add the VS Code MCP config (below) to `.vscode/mcp.json` |\n| **Gemini CLI** | `gemini extensions install https://github.com/teamtinvio/jaz-ai` |\n| **OpenAI Codex CLI / Agents SDK** | Add the stdio MCP config (below) |\n| **OpenAI Responses API** | Hosted HTTP MCP only (see [Responses API note](#openai-responses-api)) |\n| **npm (CLI)** | `npm install -g jaz-clio && clio auth add <jk-your-api-key>` |\n\n**Stdio MCP config** (Claude Desktop, Cursor, Windsurf, OpenAI Codex CLI / Agents SDK, any host that runs MCP servers as local processes):\n\n```json\n{\n  \"mcpServers\": {\n    \"jaz\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"jaz-clio@5.55.14\", \"mcp\"],\n      \"env\": { \"JAZ_API_KEY\": \"jk-your-api-key\" }\n    }\n  }\n}\n```\n\n**VS Code MCP config** (`.vscode/mcp.json`, workspace-scoped, read by VS Code and the GitHub Copilot Chat extension):\n\n```json\n{\n  \"servers\": {\n    \"jaz\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"jaz-clio@5.55.14\", \"mcp\"],\n      \"env\": { \"JAZ_API_KEY\": \"jk-your-api-key\" }\n    }\n  }\n}\n```\n\nPin `jaz-clio@5.55.14` for stability, or `jaz-clio@latest` for auto-updates. **Multi-org**: comma-separated keys, e.g. `\"JAZ_API_KEY\": \"jk-aaa,jk-bbb\"`. Personal access tokens (`pat-...`) also work for multi-org.\n\n### Remote connector · no install\n\nBring Jaz into **Claude** (claude.ai, Desktop, mobile, Cowork) and **ChatGPT** with no install and no API key in any config. Just sign in.\n\n1. In Claude: **Settings → Connectors → Add custom connector** (ChatGPT: **Add a connector**).\n2. Enter the URL `https://mcp.jaz.ai/mcp`.\n3. Sign in with your Jaz account (email one-time code or passkey) and **Allow**.\n\nIt uses OAuth 2.1 + PKCE: the agent receives a scoped, time-limited token tied to your account, never your password. One sign-in reaches **every organization you belong to**; name the org in your request (e.g. *\"in Acme Pte Ltd, list unpaid invoices\"*), and access to each is checked on every call. The same operations as the local server, packaged as namespace tools — one `tools/list` entry per accounting area, each routing to the operations inside it — with honest read-only / write / destructive hints. Ask *\"what can you do?\"* and the connector answers from its own live capability map. Bookkeeping only: it records entries and reads data. It moves no money.\n\n### Microsoft 365 Copilot · Copilot Studio\n\nBring Jaz into Microsoft 365 Copilot through a Copilot Studio agent. Cloud to cloud: no install, no API key in any config.\n\n1. In [Copilot Studio](https://copilotstudio.microsoft.com), open your agent and go to **Tools → Add a tool → New tool → Model Context Protocol**.\n2. Enter the server name (Jaz), a short description, and the URL `https://mcp.jaz.ai/mcp`.\n3. Authentication: **OAuth 2.0 → Dynamic discovery** → **Create** → **Next**.\n4. On the **Add tool** dialog, select **Create a new connection**, sign in with your Jaz account, and **Allow**.\n5. Select **Add to agent**, then publish the agent to Microsoft 365 Copilot or Teams as usual.\n\nSame tool surface and per-call organization checks as the [remote connector](#remote-connector--no-install); the sign-in here uses OAuth 2.0 dynamic client registration. If your tenant restricts custom connectors, a Power Platform admin needs to allow this one.\n\n**If sign-in fails with \"Could not discover authorization server metadata\":** choose **Dynamic** instead of **Dynamic discovery** in step 3, then enter `https://api.getjaz.com/oauth/authorize` as the Authorization URL and `https://api.getjaz.com/oauth/token` as the Token URL. Copilot Studio still registers itself, so you need no client ID or secret. Everything else is unchanged.\n\n**Prefer a local install on the Microsoft stack?** Copilot Studio is cloud-only and cannot run local MCP servers. Use VS Code with GitHub Copilot Chat instead: the [VS Code MCP config](#install--30-seconds) runs Jaz locally with an API key, and `npx jaz-clio init --platform copilot` installs the skills to `.github/copilot-instructions.md`.\n\n### OpenAI Responses API\n\nThe Responses API only accepts **HTTP MCP** (no stdio). Point it at the hosted Jaz connector:\n\n```json\n{\n  \"type\": \"mcp\",\n  \"server_label\": \"jaz\",\n  \"server_url\": \"https://mcp.jaz.ai/mcp\",\n  \"headers\": { \"Authorization\": \"Bearer <your-oauth-token>\" },\n  \"require_approval\": \"never\"\n}\n```\n\nThe endpoint is OAuth-gated (no static API key). Obtain a token through the [remote connector](#remote-connector--no-install) sign-in and pass it as a bearer token. To use a plain API key instead, take the OpenAI Codex CLI / Agents SDK stdio path above.\n\n**Just want skills** (no MCP, any agent on the [Agent Skills](https://agentskills.io) standard):\n\n```bash\nnpx jaz-clio init                  # auto-detects your agent\nnpx jaz-clio init --platform cursor\nnpx jaz-clio init --no-rules       # skills only, skip the agent-rules file\nnpx jaz-clio init --check          # report drift between installed agent-rules version and current\n```\n\nSkills install to `.agents/skills/` (Agent Skills standard, used by Cursor, Copilot, Codex, Antigravity, Windsurf, Goose, Roo Code, Junie, Amp, and more) or `.claude/skills/` (Claude Code).\n\n`init` also writes a one-page `jaz-agent-rules.md` block to the path your platform reads on workspace open, so any agent (Claude / GPT / Gemini / Copilot / Cursor) starts every session with the meta-tool discovery flow, the 6 API gotchas, and the recipe-engine carve-outs.\n\nThe block is wrapped in version-stamped markers (`<!-- BEGIN jaz-agent-rules vX.Y.Z -->` / `<!-- END jaz-agent-rules -->`), so re-running `init` updates only the Jaz block; your own rules above and below stay untouched. Run `clio init --check` to report drift between your installed version and the current package version (exit 1 = drift, exit 0 = current).\n\n| Platform | Rules file path |\n|---|---|\n| Claude Code | `CLAUDE.md` |\n| Codex / Antigravity / Goose | `AGENTS.md` |\n| GitHub Copilot | `.github/copilot-instructions.md` |\n| Cursor | `.cursor/rules/jaz.mdc` (auto-loaded via `alwaysApply: true`) |\n| Windsurf | `.windsurf/rules/jaz.md` |\n| Gemini CLI | `GEMINI.md` |\n\n## How many tools is it?\n\nOne catalog, three packagings. Every install reaches the **same 369 operations** — they are presented differently because hosts have different context budgets.\n\n| Install | `tools/list` shows | Operations reachable | Why |\n|---|---|---|---|\n| Claude Code plugin, `.mcpb`, Gemini, Cursor / VS Code / Windsurf / Codex | **3** meta-tools | 367 | Lazy: `search_tools` → `describe_tools` → `execute_tool`. ~600 tokens of context instead of ~78KB. |\n| Remote connector (`mcp.jaz.ai`), M365 Copilot, OpenAI Responses | **45** namespace tools | 367 | One tool per accounting area; each routes to its operations, documented in its description. |\n| `JAZ_MCP_FLAT=1` (either transport) | **367** tools | 367 | Every operation listed directly. Heaviest payload; enables per-tool read-only parallelism. |\n\nA directory listing that says \"369 tools\" and a client that shows 3 or 45 are describing the same server. Nothing is missing.\n\nAsk the agent **\"what can you do?\"** on any of them — it answers from the connector's own live capability map (`describe_capabilities`), never from the length of its tool list.\n\n## What you get\n\n- **369 tools** covering every Jaz endpoint. Each tool description disambiguates against similar tools, lists enum values inline, and notes which operations are safe to retry. The model picks the right tool on the first call.\n- **7 skills** with the production-grade rules and playbooks any agent needs:\n\n| Skill | What it teaches an agent |\n|-------|--------------------------|\n| **jaz-api** | 159 API rules, every endpoint, error catalog, field aliases, response shapes |\n| **jaz-cli** | The `clio` command surface, auth precedence, output formats, pagination |\n| **jaz-conversion** | Xero / QuickBooks / Sage / MYOB / Excel migration, CoA mapping, FX, clearing accounts, TB verification |\n| **jaz-jobs** | 12 close playbooks (month-end / quarter-end / year-end / bank-recon / GST-VAT / payment-run / credit-control / supplier-recon / audit-prep / FA-review / statutory-filing) + Singapore Form C-S |\n| **jaz-recipes** | 13 IFRS recipes (loans, IFRS 16 leases, depreciation, FX reval, ECL, IAS 37 provisions, asset disposal, etc.) + 13 calculators |\n| **jaz-pseudo-sql** | Read-only SQL over the curated reporting schema: ad-hoc questions, joins and aggregates, sync preview or async CSV export |\n| **jaz-kit** | Multi-organization operator workspace: per-org context, resumable period closes, draft review queue, policies and rules |\n\n- **3 meta-tools** (`search_tools`, `describe_tools`, `execute_tool`) for deferred discovery so the full catalog never has to load into context.\n- **Help center mirror** at `help-center-mirror/` synced weekly from Intercom.\n- **Structured-search DSL** for natural-feeling queries (`status:unpaid amount:>500 contact:Acme`).\n\n## Three layers\n\nThe stack is one binary plus markdown skills, exposed through three layers that compose. The default agent setup is **Skills + MCP**. The CLI is the same binary as the MCP server with a different transport flag.\n\n| Layer | What it is | Use it alone when |\n|-------|------------|-------------------|\n| **Skills** | Domain knowledge as markdown (159 API rules, 13 recipes, 12 jobs, conversion playbooks). The agent reads these at session start. | Your agent reads markdown but cannot call binaries (e.g., a Custom GPT with no actions). |\n| **CLI** (`jaz-clio`) | A `clio` binary: 72 command groups + 13 offline calculators + 12 offline blueprints + live API access. Humans run it; agents shell out to it. | You're scripting CI / running offline calculators / a human is at the terminal. |\n| **MCP server** (`clio mcp`) | The same binary in MCP mode: 369 tools as agent-callable functions with structured envelopes. | This is the default for any agent (Claude / GPT / Gemini / Copilot / Cursor) that takes accounting actions. |\n\nSkills layer on top of either. Most installs (Claude Code plugin, Claude Desktop MCPB, Cursor + MCP, Gemini extension) load Skills + MCP together. The MCP server runs **locally** (stdio, via the CLI binary) or **hosted** (the [remote connector](#remote-connector--no-install) at `mcp.jaz.ai`, no install). **The same operations either way — packaged differently.** See [How many tools is it?](#how-many-tools-is-it).\n\n## Quick start\n\nOnce installed, skills load automatically when an agent works with Jaz. Describe what you need:\n\n```\nClose the books for Acme for January. Bank-recon DBS Current first.\nThen file GST for Q1.\n```\n\nOr call the CLI directly:\n\n```bash\nclio invoices list --json\nclio calc loan --principal 100000 --rate 6 --term 60 --json\nclio jobs month-end --period 2025-01 --json\n```\n\nOr via MCP from any agent:\n\n```\nsearch_tools(\"anomalous bills\")\n  → download_export at rank 1\nexecute_tool(\"download_export\", { exportType: \"analysis-anomalous-bills\" })\n  → { fileName, fileUrl }\n```\n\n## Token economics + speed\n\nBuilt so any model sees the right tool fast and calls it once.\n\n| What | How |\n|------|-----|\n| **MCP delivery — local, plugin, `.mcpb`** | 3 meta-tools (~600 tokens) instead of 367 operation schemas (~78KB). The agent searches into the catalog only when needed. |\n| **MCP delivery — hosted connector** | 45 namespace tools (~28.6k tokens) with every operation documented inline. No discovery round-trip; fits ChatGPT's ~5k-per-tool cap. |\n| **OpenAI Responses API** | Native deferred tool_search with namespace bundles. ~78% token reduction over a static tool list. |\n| **Anthropic delivery** | Tool list cached via prompt-cache breakpoints (5-min TTL). System blocks cached. ~5KB/request savings after v5.4.4 cleanup. |\n| **Discovery ranker** | In-memory, no network round-trip. Scans tool name + description + searchHint + namespace. |\n| **Disambiguation** | Every tricky pair (`download_export` vs `export_records`, `view_auto_reconciliation` vs `quick_reconcile`, `validate_drafts` vs per-entity validators) has explicit \"USE THIS, not X\" preambles. Cuts the 1-3 wrong-tool retries. |\n| **Median tool call** | Subsecond for read tools; bounded by the Jaz API + network. |\n| **Errors are structured** | 422 responses carry field-level details so the agent can self-correct without human input. |\n\n## For AI agents\n\n- **Skills load automatically** from `.claude/skills/`, `.agents/skills/`, the Claude Code marketplace, the Gemini CLI extension, or the Claude Desktop MCPB.\n- **Discovery is one-shot.** 68 canonical-query lock-in tests guarantee the right tool at rank 1 for the queries that matter.\n- **Disambiguation is explicit.** Tools that look similar carry \"USE THIS, not X\" preambles. No more guessing.\n- **Errors are structured.** Server validation failures return field-level details so the agent can self-correct.\n- **Multi-org is native.** Comma-separated keys (`jk-aaa,jk-bbb`) or PATs unlock cross-org tools (`list_organizations`, per-call `org_id`).\n- **CONTEXT.md** captures runtime rules-of-engagement (bootstrap with `clio context --json`, search before create, mutate as draft first, never echo API keys).\n\n## For accountants\n\nRun period work conversationally. Describe it to any agent:\n\n> Close March for Acme. Bank-recon DBS Current first.\n> File GST for Q1.\n\n13 calculators (`clio calc loan / depreciation / lease / ecl / fx-reval / provision / fixed-deposit / asset-disposal / prepaid-expense / deferred-revenue / accrued-expense / leave-accrual / dividend`), 12 job blueprints (`clio jobs month-end / quarter-end / year-end / bank-recon / document-collection / gst-vat / payment-run / credit-control / supplier-recon / audit-prep / fa-review / statutory-filing`), all with `--json` for structured blueprint output.\n\nIn Claude Code, ten commands walk the jobs that have real steps to follow:\n\n| Command | What it runs |\n|---------|--------------|\n| `/jaz-recon` | Bank reconciliation — match, categorise, resolve |\n| `/jaz-gst` | GST/VAT return prep — tax ledger review, discrepancies, filing summary |\n| `/jaz-payment-run` | Batch bill payments by due date |\n| `/jaz-credit-control` | Aged receivables, chase list, bad-debt assessment |\n| `/jaz-supplier-recon` | Supplier statement vs AP ledger |\n| `/jaz-audit-prep` | Reports, schedules and reconciliations for the auditor |\n| `/jaz-fa-review` | Fixed asset register — depreciation, disposals, write-offs |\n| `/jaz-doc-collect` | Scan and classify client documents for upload |\n| `/jaz-migrate` | Migration from Xero, QuickBooks, Sage, MYOB or Excel |\n| `/jaz-tax-sg` | Singapore Form C-S / C-S Lite computation |\n\nEvery one of them also works by just asking — the commands are a shortcut, not a requirement.\n\n## Jaz Kit · run your practice\n\nA close is not one conversation. Month-end runs eighteen steps over one to three days, and an accountant serving eight clients runs it eight times with eight different sets of bank accounts, materiality thresholds, and recurring accruals. Jaz Kit gives each organization a folder that remembers all of it.\n\n```\n/jk-setup                  set up the kit, connect an organization\n/jk-open acme             load its context, verify the connection\n/jk-close 2026-06         run the close — resumable across sessions\n/jk-review                approve the drafts waiting on you\n/jk-status                every organization, what's due, what's pending\n/jk-exit                  journal the session, sweep scratch\n```\n\n**`/jaz-*` runs a workflow. `/jk-*` runs your practice.** Also `/jk-keys`, `/jk-policy`, `/jk-teach`, `/jk-save`, `/jk-help`.\n\n```\n~/Documents/Jaz Kit/\n  orgs/<slug>/\n    ORG.md                  bank accounts, materiality, recurring accruals, FY end\n    policies/ rules/        how this organization works\n    closes/2026-06/\n      CLOSE.md              exactly where the close stopped\n      workpapers/           the permanent audit file\n```\n\nWork is created as drafts and every record carries a link into Jaz, so you review in the UI and finalize when you're ready — the agent never posts live behind you. Interrupted closes resume where they stopped, and reconciliation steps verify against the ledger before retrying, so a crash never doubles a journal.\n\nEach company's key lives in its own folder's `.env`. A `jk-` key is scoped to one company, so the folder you open decides which books you touch — no profiles, no labels, nothing to switch. Keys are gitignored, so a kit shared through a private git repo carries the context and policies but never the keys; each machine pastes its own. (On a default Mac `~/Documents` syncs to iCloud, so keys sync too — bounded and revocable; set `JAZ_KIT_HOME` elsewhere to keep them off the cloud.)\n\n**One organization per session, enforced.** Every call names its organization explicitly rather than relying on whichever one happens to be active. If something in your shell would silently override that choice — an exported `JAZ_API_KEY`, or several comma-separated keys — the command stops instead of posting to the wrong company's books.\n\nMulti-organization work needs the CLI (`npm i -g jaz-clio`); a single organization works through MCP tools alone. Windows is supported by design but not yet verified — [tell us](https://github.com/teamtinvio/jaz-ai/issues) if you hit something.\n\nStart with `/jk-setup`, or just say \"set up Jaz Kit for my company\" — the skill triggers the same flows in Codex CLI, Cursor, and Copilot, which have no slash commands.\n\n> Slash commands share one global namespace across installed plugins, so `/jk-*` and `/jaz-*` could collide with another plugin using the same names. If that happens, ask for the flow in words instead (\"open acme\", \"close the books for June\") — it triggers on intent, not on the command name.\n\n## Reference\n\n- **[CONTEXT.md](CONTEXT.md)** · runtime rules-of-engagement for agents using the stack\n- **[CHANGELOG.md](CHANGELOG.md)** · release notes\n- **[Skills source](src/skills/)** · all 7 skills (jaz-api / jaz-cli / jaz-conversion / jaz-jobs / jaz-recipes / jaz-pseudo-sql / jaz-kit)\n- **[OpenAPI spec](spec/openapi.yaml)** · full HTTP surface, synced weekly\n- **[README-cli.md](README-cli.md)** · npm-package README, full CLI command catalog\n- **[help.jaz.ai](https://help.jaz.ai)** · Jaz product help center\n- **CLI surface**: 72 command groups across the `clio` binary\n\n<details>\n<summary><strong>What's inside · skill file catalog</strong></summary>\n\n### jaz-api\n\n| Reference | Content |\n|-----------|---------|\n| `SKILL.md` | 159 API rules: auth, IDs, dates, FX, payments, field aliases, response shapes |\n| `endpoints.md` | Request/response examples for every core endpoint |\n| `errors.md` | Error catalog with root causes and fixes |\n| `field-map.md` | Intuitive name → actual field name mapping |\n| `search-reference.md` | Filter fields, sort fields, operators for 28 search endpoints |\n| `search-enums.md` | Valid enum values for every searchable filter field, by entity |\n| `search-syntax.md` | Structured-search DSL: operators, precedence, and edge cases |\n| `full-api-surface.md` | Complete endpoint catalog, enums, limits |\n| `dependencies.md` | Resource creation order (currencies → CoA → transactions) |\n| `feature-glossary.md` | Business context per feature |\n| `claims.md` | Employee-expense claims: records, lifecycle, bulk actions, types/profiles/posting-rules, conversion, payouts |\n| `orders.md` | Sale quotes/orders and purchase requests/orders: the pre-invoice/pre-bill pipeline |\n| `bank-rule-column-mapping.md` | Bank-rule column-value mapping: resolve fields per statement row from a custom column |\n\n### jaz-recipes (13 IFRS recipes + 13 calculators)\n\n| Reference | Content |\n|-----------|---------|\n| `SKILL.md` | 13 recipes in 4 tiers, building blocks, calculator index |\n| `building-blocks.md` | Capsules, schedulers, manual journals, FA, tracking tags, nano classifiers |\n| `prepaid-amortization.md` | Annual insurance/rent paid upfront, monthly scheduler recognition |\n| `deferred-revenue.md` | Upfront customer payment, monthly revenue recognition |\n| `accrued-expenses.md` | Month-end accrual + reversal cycle using dual schedulers |\n| `bank-loan.md` | Loan disbursement, amortization table, monthly installments |\n| `ifrs16-lease.md` | ROU asset + lease liability unwinding (IFRS 16) |\n| `declining-balance.md` | DDB/150DB with switch-to-SL logic |\n| `fixed-deposit.md` | Placement, compound interest accrual, maturity (IFRS 9) |\n| `hire-purchase.md` | Like IFRS 16 but depreciate over useful life |\n| `asset-disposal.md` | Sale/scrap/write-off with gain/loss (IAS 16) |\n| `fx-revaluation.md` | Non-AR/AP FX revaluation with Day 1 reversal (IAS 21) |\n| `bad-debt-provision.md` | ECL simplified approach provision matrix (IFRS 9) |\n| `employee-accruals.md` | Leave (scheduler) + bonus (manual) accruals (IAS 19) |\n| `provisions.md` | PV recognition + monthly discount unwinding (IAS 37) |\n| `dividend.md` | Declaration + payment (two manual journals) |\n| `intercompany.md` | Mirrored invoices/bills across two entities |\n| `capital-wip.md` | CIP accumulation → FA transfer on completion |\n\n### jaz-jobs (12 close playbooks + Singapore Form C-S)\n\n| Reference | Content |\n|-----------|---------|\n| `SKILL.md` | 12 jobs + SG tax computation, CLI commands, wizard workflow |\n| `building-blocks.md` | Shared concepts: accounting periods, lock dates, period verification |\n| `month-end-close.md` | 5 phases, ~18 steps. Foundation for all period closes. |\n| `quarter-end-close.md` | Monthly + quarterly extras (GST/VAT, ECL, bonus accruals) |\n| `year-end-close.md` | Quarterly + annual extras (true-ups, dividends, CYE rollover) |\n| `bank-recon.md` | Match, categorize, resolve unreconciled items |\n| `bank-match.md` | 5-phase cascade matcher (1:1, N:1, 1:N, N:M) |\n| `document-collection.md` | Local + cloud (Dropbox / Drive / OneDrive) doc capture |\n| `gst-vat-filing.md` | Tax ledger review, discrepancy check, filing summary |\n| `payment-run.md` | Select bills by due date, process payments |\n| `credit-control.md` | AR aging review, overdue chase list, bad debt |\n| `supplier-recon.md` | AP vs supplier statement reconciliation |\n| `audit-prep.md` | Compile reports, schedules, reconciliations for auditor |\n| `fa-review.md` | Fixed asset register review, disposal/write-off |\n| `sg-tax/*.md` | 10 files: SG CIT framework, Form C-S fields, wizard, data extraction, add-backs, capital allowances, IFRS 16 tax adj, enhanced deductions, exemptions, loss carry-forward |\n\n### jaz-conversion\n\n| Reference | Content |\n|-----------|---------|\n| `SKILL.md` | Conversion domain knowledge, clearing account pattern, FX handling |\n| `mapping-rules.md` | CoA, contact, and tax code mapping rules |\n| `option1-full.md` | Full conversion (all transactions FY + FY-1) |\n| `option2-quick.md` | Quick conversion (opening balances at FYE) |\n| `file-types.md` | Supported file formats and detection heuristics |\n| `edge-cases.md` | Platform-specific quirks (Sage 300, Xero rounding) |\n| `verification.md` | Trial balance comparison and verification checklist |\n| `file-analysis.md` | Excel/CSV structure analysis and smart detection |\n\n</details>\n\n## Troubleshooting\n\n### `command not found: clio`\n\nNode.js is not installed, or npm's global bin directory is not on `PATH`.\n\n```bash\nnode --version    # Need v18+. If missing, install LTS from https://nodejs.org\nnpm install -g jaz-clio\nnpm config get prefix    # e.g. /usr/local or ~/.nvm/versions/node/v22.x.x\nexport PATH=\"$(npm config get prefix)/bin:$PATH\"   # Add to ~/.bashrc or ~/.zshrc\n```\n\n### Auth error / 401 Unauthorized\n\nMissing or invalid API key. Keys expire if regenerated in the Jaz app.\n\n```bash\nclio auth whoami\nclio auth add <your-api-key>       # Get from Settings > API in Jaz\nclio auth list                     # Confirm the right org is active\n```\n\nIf you use env vars, set `JAZ_API_KEY` in the current shell or your MCP config's `env` block.\n\n### MCP not connecting\n\nThe config path is wrong, the command is wrong, or the server crashes on startup.\n\n```bash\nnpx jaz-clio mcp                   # Smoke-test the server (Ctrl+C to stop)\nclaude mcp list                    # Confirm Claude Code sees \"jaz\"\nclaude mcp add jaz -- npx jaz-clio mcp\n```\n\nFor Cursor / VS Code / Windsurf, validate the JSON and pin the API key:\n\n```json\n{\n  \"command\": \"npx\",\n  \"args\": [\"-y\", \"jaz-clio@5.55.14\", \"mcp\"],\n  \"env\": { \"JAZ_API_KEY\": \"jk-your-api-key\" }\n}\n```\n\n> Pin `JAZ_API_KEY` in MCP config rather than relying on the active CLI profile. MCP servers cache credentials at startup so `clio auth switch` won't take effect until restart. For multi-org, use comma-separated keys.\n\n### Skills not loading\n\nFiles are in the wrong path, or your agent doesn't auto-discover from there.\n\n```bash\nls .claude/skills/                 # Claude Code\nls .agents/skills/                 # Agent Skills standard (Cursor, Copilot, etc.)\nnpx jaz-clio init                  # Re-install with auto-detection\n```\n\nEach skill folder must contain `SKILL.md` plus its reference files. Manual copies often miss subdirectories.\n\n### `EACCES` permission denied on npm install\n\nnpm's global directory needs elevated permissions on macOS/Linux without nvm.\n\n```bash\n# Option A: nvm (recommended)\ncurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash\nnvm install --lts && npm install -g jaz-clio\n\n# Option B: fix npm permissions\nmkdir -p ~/.npm-global && npm config set prefix ~/.npm-global\nexport PATH=\"$HOME/.npm-global/bin:$PATH\"   # Add to ~/.bashrc or ~/.zshrc\nnpm install -g jaz-clio\n```\n\n### Stale data after org switch\n\nYou ran `clio auth switch` but the MCP server still uses the previous org (it cached auth at startup).\n\n```bash\n# In Claude Code: remove and re-add\nclaude mcp remove jaz && claude mcp add jaz -- npx jaz-clio mcp\n\n# In Cursor / VS Code: restart the editor or reload MCP servers\n```\n\nOr use multi-org mode and skip restarts: comma-separated keys (`jk-aaa,jk-bbb`) and switch orgs in conversation.\n\n## Privacy & security\n\nRuns entirely on your machine. API calls go directly from your machine to the Jaz API over HTTPS. No telemetry. The API key lives locally in `~/.config/jaz-clio/credentials.json`.\n\nThe **hosted remote connector** (`mcp.jaz.ai`) is different by design: you connect over OAuth 2.1 + PKCE (no API key stored anywhere, never your password), requests run server-side over HTTPS, and the connector reaches the organizations your Jaz account belongs to; access is checked on every call.\n\nFull policy: [jaz.ai/legal](https://jaz.ai/legal). Vulnerability disclosure: [SECURITY.md](SECURITY.md).\n\n## Support\n\n- **Help center**: [help.jaz.ai](https://help.jaz.ai)\n- **Issues**: [github.com/teamtinvio/jaz-ai/issues](https://github.com/teamtinvio/jaz-ai/issues)\n- **Email**: build.with@jaz.ai\n\n## License\n\n[MIT](LICENSE) · Copyright (c) 2026 Jaz · Clio is a registered trademark.\n",
  "bytes": 29903,
  "sha": "4299cf357356190a0860c7b732488191ede7fbcd67bbc454bfd1fe78c3f1e7e9",
  "repo_slug": "teamtinvio/jaz-ai",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_teamtinvio_jaz_ai_9b78b6fd/readme"
}