Skip to content
Conduit

mcp server

jaz-ai

Fastest ledger for agents. Jaz accounting plugins, skills, MCP server, and CLI for Claude, ChatGPT, Gemini, Codex, Copilot, Cursor, and more.

teamtinvio/jaz-aicommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • Node.js 20 or newer
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "jaz-ai": {
      "command": "npx",
      "args": [
        "-y",
        "jaz-clio"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Oct 17, 2026

Jaz AI · Fastest ledger for agents

Jaz is built for businesses, finance teams, and accountants. IFRS-first, multi-currency, multi-user by default. Invoicing, bills, payments, quotes & orders, bank reconciliation, fixed assets, inventory, expense claims, tax, reports, and period close, all available for read and write from any agent: Claude, ChatGPT, Gemini, Codex, Copilot, Cursor. Tools load only when needed, so your agents stay lean and fast.

Also fully compatible with Juan Accounting (same API surface).

Contents

For a guided setup, copy the Jaz agent setup prompt and paste it into your agent. It will help you choose where to connect Jaz, handle installation, and guide you through sign-in.

Install · 30 seconds

Your agentInstall
Claude.ai · ChatGPT · Cowork (hosted, no install)Add a custom connector → https://mcp.jaz.ai/mcp → sign in. See Remote connector.
Microsoft 365 Copilot · Copilot Studio (hosted, no install)Add an MCP tool → https://mcp.jaz.ai/mcp → OAuth sign-in. See Microsoft 365 Copilot.
Claude Code/plugin marketplace add teamtinvio/jaz-ai
Claude DesktopInstall the .mcpb from latest release
Cursor / WindsurfAdd the stdio MCP config (below)
VS Code (incl. GitHub Copilot)Add the VS Code MCP config (below) to .vscode/mcp.json
Gemini CLIgemini extensions install https://github.com/teamtinvio/jaz-ai
OpenAI Codex CLI / Agents SDKAdd the stdio MCP config (below)
OpenAI Responses APIHosted HTTP MCP only (see Responses API note)
npm (CLI)npm install -g jaz-clio && clio auth login

Stdio MCP config (Claude Desktop, Cursor, Windsurf, OpenAI Codex CLI / Agents SDK, any host that runs MCP servers as local processes):

{
  "mcpServers": {
    "jaz": {
      "command": "npx",
      "args": ["-y", "jaz-clio@9.2.0", "mcp", "--org", "oauth:<resourceId>"]
    }
  }
}

VS Code MCP config (.vscode/mcp.json, workspace-scoped, read by VS Code and the GitHub Copilot Chat extension):

{
  "servers": {
    "jaz": {
      "command": "npx",
      "args": ["-y", "jaz-clio@9.2.0", "mcp", "--org", "oauth:<resourceId>"]
    }
  }
}

Sign in first with npx -y jaz-clio@latest auth login, then replace <resourceId> with the organization to pin (auth organizations lists them). Pin jaz-clio@9.2.0 for stability, or jaz-clio@latest for auto-updates. Multi-org: drop --org and OAuth reaches every organization granted at sign-in, with explicit org_id selection per call. Optional key-based access accepts comma-separated keys, e.g. "JAZ_API_KEY": "jk-aaa,jk-bbb". Personal access tokens (pat-...) also work for multi-org.

Remote connector · no install

Bring Jaz into Claude (claude.ai, Desktop, mobile, Cowork) and ChatGPT with no install and no API key in any config. Just sign in.

  1. In Claude: Settings → Connectors → Add custom connector (ChatGPT: Add a connector).
  2. Enter the URL https://mcp.jaz.ai/mcp.
  3. Sign in with your Jaz account (email one-time code or passkey) and Allow.

It 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.

Microsoft 365 Copilot · Copilot Studio

Bring Jaz into Microsoft 365 Copilot through a Copilot Studio agent. Cloud to cloud: no install, no API key in any config.

  1. In Copilot Studio, open your agent and go to Tools → Add a tool → New tool → Model Context Protocol.
  2. Enter the server name (Jaz), a short description, and the URL https://mcp.jaz.ai/mcp.
  3. Authentication: OAuth 2.0 → Dynamic discovery → Create → Next.
  4. On the Add tool dialog, select Create a new connection, sign in with your Jaz account, and Allow.
  5. Select Add to agent, then publish the agent to Microsoft 365 Copilot or Teams as usual.

Same tool surface and per-call organization checks as the remote connector; 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.

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.

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 runs Jaz locally with the shared OAuth sign-in (or an optional API key), and npx jaz-clio init --platform copilot installs the skills to .github/copilot-instructions.md.

OpenAI Responses API

The Responses API only accepts HTTP MCP (no stdio). Point it at the hosted Jaz connector:

{
  "type": "mcp",
  "server_label": "jaz",
  "server_url": "https://mcp.jaz.ai/mcp",
  "headers": { "Authorization": "Bearer <your-oauth-token>" },
  "require_approval": "never"
}

The endpoint is OAuth-gated (no static API key). Obtain a token through the remote connector 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.

Just want skills (no MCP, any agent on the Agent Skills standard):

npx jaz-clio init                  # auto-detects your agent
npx jaz-clio init --platform cursor
npx jaz-clio init --no-rules       # skills only, skip the agent-rules file
npx jaz-clio init --check          # report drift between installed agent-rules version and current

Skills 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).

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 calculate-then-post flow for IFRS schedules.

The 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).

PlatformRules file path
Claude CodeCLAUDE.md
Codex / Antigravity / GooseAGENTS.md
GitHub Copilot.github/copilot-instructions.md
Cursor.cursor/rules/jaz.mdc (auto-loaded via alwaysApply: true)
Windsurf.windsurf/rules/jaz.md
Gemini CLIGEMINI.md

Sign in with OAuth

OAuth is the default for new setups. Hosted connectors handle sign-in inside the agent. For the CLI, local MCP, Claude Code plugin, Desktop extension, or Gemini extension, run npx -y jaz-clio@latest auth login on the computer that runs Jaz. The browser opens for Jaz sign-in and consent; local tools share the saved session and refresh it automatically. No key belongs in the MCP configuration.

If several organizations are available, choose one after sign-in. Agents can use auth login --json to obtain the choices, then auth select <resourceId> --json. Pin commands and local MCP with --org oauth:<resourceId>. Use auth organizations --json to refresh the list. Install skills independently of authentication.

For a custom application calling the API directly, use Jaz's authorization-code flow with PKCE and refresh tokens. Register the application's callback at https://api.getjaz.com/oauth/register, start consent at https://api.getjaz.com/oauth/authorize, and exchange or refresh tokens at https://api.getjaz.com/oauth/token. Registration returns the client credentials used by the token endpoint. Keep them private. Select the intended organization during consent for a single-organization integration; use explicit organization selection through CLI/MCP for agent workflows. The published OpenAPI specification's API-key examples describe the optional key-based route.

API keys and PATs remain supported. Explicit --org selects its saved credentials ahead of an inherited JAZ_API_KEY; without --org, the environment key retains precedence. Do not combine --api-key with --org. Existing key profiles remain available through --org <label>; use auth add <key> --as <label> for optional key-based access. Never paste credentials into agent chat. auth logout removes only the local OAuth session; revoke the grant in Jaz to remove server-side access.

Browser login requires a callback to the computer running Jaz. For an isolated agent sandbox, configure the user's intended machine or use a hosted connector. Do not copy refresh tokens from another application.

How many tools is it?

One catalog, three packagings. Every install reaches the same 387 operations; they are presented differently because hosts have different context budgets.

Installtools/list showsOperations reachableWhy
Claude Code plugin, .mcpb, Gemini, Cursor / VS Code / Windsurf / Codex3 meta-toolsall 387 operationsLazy: search_tools → describe_tools → execute_tool. ~360 tokens of context instead of ~78KB.
Remote connector (mcp.jaz.ai), M365 Copilot, OpenAI Responses49 namespace toolsall 387 operationsOne tool per accounting area; each routes to its operations, documented in its description.
JAZ_MCP_FLAT=1 (either transport)387 toolsall 387 operationsEvery operation listed directly. Heaviest payload; enables per-tool read-only parallelism.

A directory listing that says "387 tools" and a client that shows 3 or 49 are describing the same server. Nothing is missing.

Ask 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.

What you get

  • 387 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.
  • 7 skills with the production-grade rules and playbooks any agent needs:
SkillWhat it teaches an agent
jaz-api148 API rules, every endpoint, error catalog, field aliases, response shapes
jaz-cliThe clio command surface, auth precedence, output formats, pagination
jaz-conversionXero / QuickBooks / Sage / MYOB / Excel migration, CoA mapping, FX, clearing accounts, TB verification
jaz-jobs12 job playbooks (month-end / quarter-end / year-end close, bank recon, document collection, GST/VAT filing, payment run, credit control, supplier recon, audit prep, FA review, statutory filing) + Singapore Form C-S
jaz-recipes16 recipe playbooks (IFRS: loans, IFRS 16 leases, depreciation, FX reval, ECL, IAS 37 provisions, asset disposal, etc.) + 13 calculators
jaz-pseudo-sqlRead-only SQL over the curated reporting schema: ad-hoc questions, joins and aggregates, sync preview or async CSV export
jaz-kitMulti-organization operator workspace: per-org context, resumable period closes, draft review queue, policies and rules
  • 3 meta-tools (search_tools, describe_tools, execute_tool) for deferred discovery so the full catalog never has to load into context.
  • Help center search built in: search_help_center answers from the Jaz help center.
  • Structured-search DSL for natural-feeling queries (status:unpaid amount:>500 contact:Acme).

Three layers

The 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.

LayerWhat it isUse it alone when
SkillsDomain knowledge as markdown (148 API rules, 16 recipe playbooks, 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).
CLI (jaz-clio)A clio binary: 74 command groups + 13 offline calculators + job tools (bank matcher, outstanding bills, document ingest, Singapore tax) + live API access. Humans run it; agents shell out to it.You're scripting CI / running offline calculators / a human is at the terminal.
MCP server (clio mcp)The same binary in MCP mode: 387 tools as agent-callable functions with structured envelopes.This is the default for any agent (Claude / GPT / Gemini / Copilot / Cursor) that takes accounting actions.

Skills 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 at mcp.jaz.ai, no install). The same operations either way, packaged differently. See How many tools is it?.

Quick start

Once installed, skills load automatically when an agent works with Jaz. Describe what you need:

Close the books for Acme for January. Bank-recon DBS Current first.
Then file GST for Q1.

Or call the CLI directly:

clio auth login                    # once per computer
clio invoices list --json
clio calc loan --principal 100000 --rate 6 --term 60 --json
clio jobs payment-run outstanding --due-before 2025-01-31 --json
clio approvals approve <resourceId> --entity bills --json
clio sql preview "SELECT invoice_number, balance FROM invoices WHERE balance > 0 LIMIT 10"
clio ledger-find-fix preview --level TRANSACTIONS --input recode.json
clio report-templates list --json
clio report-templates update "Board P&L" --set pdfTitleConfigs.title="Board P&L" --json
clio modules list --json
clio navigate reports.profit-and-loss

The full command-group list is in README-cli.md.

Or via MCP from any agent:

search_tools("anomalous bills")
  → download_export at rank 1
execute_tool("download_export", { exportType: "analysis-anomalous-bills" })
  → { fileName, fileUrl }

Token economics + speed

Built so any model sees the right tool fast and calls it once.

WhatHow
MCP delivery: local, plugin, .mcpb3 meta-tools (~360 tokens) instead of schemas for all 387 operations (~78KB). The agent searches into the catalog only when needed.
MCP delivery: hosted connector49 namespace tools (~28.6k tokens) with every operation documented inline. No discovery round-trip; fits ChatGPT's ~5k-per-tool cap.
Discovery rankerIn-memory, no network round-trip. Scans tool name + description + searchHint + namespace.
DisambiguationEvery 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.
Median tool callSubsecond for read tools; bounded by the Jaz API + network.
Errors are structured422 responses carry field-level details so the agent can self-correct without human input.

For AI agents

  • Skills load automatically from .claude/skills/, .agents/skills/, the Claude Code marketplace, the Gemini CLI extension, or the Claude Desktop MCPB.
  • Discovery is one-shot. Canonical-query lock-in tests guarantee the right tool at rank 1 for the queries that matter.
  • Disambiguation is explicit. Tools that look similar carry "USE THIS, not X" preambles. No more guessing.
  • Errors are structured. Server validation failures return field-level details so the agent can self-correct.
  • Multi-org is native. Comma-separated keys (jk-aaa,jk-bbb) or PATs unlock cross-org tools (list_organizations, per-call org_id).
  • CONTEXT.md captures runtime rules-of-engagement (load the organization first, search before create, mutate as draft first, never echo API keys).

For accountants

Run period work conversationally. Describe it to any agent:

Close March for Acme. Bank-recon DBS Current first. File GST for Q1.

13 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 playbooks in the jaz-jobs skill (month-end / quarter-end / year-end close, bank recon, document collection, GST/VAT filing, payment run, credit control, supplier recon, audit prep, FA review, statutory filing), and five job tools (clio jobs bank-recon match, payment-run outstanding, document-collection ingest, statutory-filing sg-cs / sg-ca), all with --json for structured output. Calculators post nothing: to book a schedule, create a capsule and post each step with capsuleResourceId.

In Claude Code, ten commands walk the jobs that have real steps to follow:

CommandWhat it runs
/jaz-reconBank reconciliation: match, categorise, resolve
/jaz-gstGST/VAT return prep: tax ledger review, discrepancies, filing summary
/jaz-payment-runBatch bill payments by due date
/jaz-credit-controlAged receivables, chase list, bad-debt assessment
/jaz-supplier-reconSupplier statement vs AP ledger
/jaz-audit-prepReports, schedules and reconciliations for the auditor
/jaz-fa-reviewFixed asset register: depreciation, disposals, write-offs
/jaz-doc-collectScan and classify client documents for upload
/jaz-migrateMigration from Xero, QuickBooks, Sage, MYOB or Excel
/jaz-tax-sgSingapore Form C-S / C-S Lite computation

Every one of them also works by just asking; the commands are a shortcut, not a requirement.

Jaz Kit · run your practice

A 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.

/jk-setup                  set up the kit, connect an organization
/jk-open acme             load its context, verify the connection
/jk-close 2026-06         run the close, resumable across sessions
/jk-review                approve the drafts waiting on you
/jk-status                every organization, what's due, what's pending
/jk-exit                  journal the session, sweep scratch

/jaz-* runs a workflow. /jk-* runs your practice. Also /jk-keys, /jk-policy, /jk-teach, /jk-save, /jk-help.

~/Documents/Jaz Kit/
  orgs/<slug>/
    ORG.md                  bank accounts, materiality, recurring accruals, FY end
    policies/ rules/        how this organization works
    closes/2026-06/
      CLOSE.md              exactly where the close stopped
      workpapers/           the permanent audit file

Work 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.

Each company's folder records its organization ID in ORG.md, and every call pins that ID (--org oauth:<resourceId>), so the folder you open decides which books you touch. OAuth sign-in lives outside the kit (clio auth login), so a kit shared through a private git repo carries the context and policies but never a credential. Existing workspaces that keep a company jk- key in the folder's gitignored .env still work as an optional route. (On a default Mac ~/Documents syncs to iCloud, so such a key syncs too, bounded and revocable; set JAZ_KIT_HOME elsewhere to keep it off the cloud.)

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.

Multi-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 if you hit something.

Start 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.

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.

Reference

  • CONTEXT.md · runtime rules-of-engagement for agents using the stack
  • CHANGELOG.md · release notes
  • Skills source · all 7 skills (jaz-api / jaz-cli / jaz-conversion / jaz-jobs / jaz-recipes / jaz-pseudo-sql / jaz-kit)
  • OpenAPI spec · full HTTP surface, synced daily
  • README-cli.md · npm-package README, full CLI command catalog
  • help.jaz.ai · Jaz product help center
  • CLI surface: 74 command groups across the clio binary

jaz-api

ReferenceContent
SKILL.md148 API rules: auth, IDs, dates, FX, payments, field aliases, response shapes
endpoints.mdRequest/response examples for every core endpoint
errors.mdError catalog with root causes and fixes
field-map.mdIntuitive name → actual field name mapping
search-reference.mdFilter fields, sort fields, operators for 25 search endpoints
search-enums.mdValid enum values for every searchable filter field, by entity
search-syntax.mdStructured-search DSL: operators, precedence, and edge cases
full-api-surface.mdComplete endpoint catalog, enums, limits
dependencies.mdResource creation order (currencies → CoA → transactions)
feature-glossary.mdBusiness context per feature
claims.mdEmployee-expense claims: records, lifecycle, bulk actions, types/profiles/posting-rules, conversion, payouts
orders.mdSale quotes/orders and purchase requests/orders: the pre-invoice/pre-bill pipeline
bank-rule-column-mapping.mdBank-rule column-value mapping: resolve fields per statement row from a custom column
report-templates.mdReport templates: layouts, packs, defaults, and which edits each report type accepts

jaz-recipes (16 recipe playbooks + 13 calculators)

ReferenceContent
SKILL.md16 recipes in 4 tiers, building blocks, calculator index
building-blocks.mdCapsules, schedulers, manual journals, FA, tracking tags, nano classifiers
prepaid-amortization.mdAnnual insurance/rent paid upfront, monthly scheduler recognition
deferred-revenue.mdUpfront customer payment, monthly revenue recognition
accrued-expenses.mdMonth-end accrual + next-period reversal as a journal pair
bank-loan.mdLoan disbursement, amortization table, monthly installments
ifrs16-lease.mdROU asset + lease liability unwinding (IFRS 16)
declining-balance.mdDDB/150DB with switch-to-SL logic
fixed-deposit.mdPlacement, compound interest accrual, maturity (IFRS 9)
hire-purchase.mdLike IFRS 16 but depreciate over useful life
asset-disposal.mdSale/scrap/write-off with gain/loss (IAS 16)
fx-revaluation.mdFX revaluation check (IAS 21): verifies the revaluation Jaz posts itself; the result is not posted
bad-debt-provision.mdECL simplified approach provision matrix (IFRS 9)
employee-accruals.mdLeave (scheduler) + bonus (manual) accruals (IAS 19)
provisions.mdPV recognition + monthly discount unwinding (IAS 37)
dividend.mdDeclaration journal + payment cash-out, with optional withholding tax
intercompany.mdMirrored invoices/bills across two entities
capital-wip.mdCIP accumulation → FA transfer on completion

jaz-jobs (12 close playbooks + Singapore Form C-S)

ReferenceContent
SKILL.md12 jobs + SG tax computation, CLI commands, wizard workflow
building-blocks.mdShared concepts: accounting periods, lock dates, period verification
month-end-close.md5 phases, ~18 steps. Foundation for all period closes.
quarter-end-close.mdMonthly + quarterly extras (GST/VAT, ECL, bonus accruals)
year-end-close.mdQuarterly + annual extras (true-ups, dividends, CYE rollover)
bank-recon.mdMatch, categorize, resolve unreconciled items
bank-match.md5-phase cascade matcher (1:1, N:1, 1:N, N:M)
document-collection.mdLocal + cloud (Dropbox / Drive / OneDrive) doc capture
gst-vat-filing.mdTax ledger review, discrepancy check, filing summary
payment-run.mdSelect bills by due date, process payments
credit-control.mdAR aging review, overdue chase list, bad debt
supplier-recon.mdAP vs supplier statement reconciliation
audit-prep.mdCompile reports, schedules, reconciliations for auditor
fa-review.mdFixed asset register review, disposal/write-off
sg-tax/*.md10 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

jaz-conversion

ReferenceContent
SKILL.mdConversion domain knowledge, clearing account pattern, FX handling
mapping-rules.mdCoA, contact, and tax code mapping rules
option1-full.mdFull conversion (all transactions FY + FY-1)
option2-quick.mdQuick conversion (opening balances at FYE)
file-types.mdSupported file formats and detection heuristics
edge-cases.mdPlatform-specific quirks (Sage 300, Xero rounding)
verification.mdTrial balance comparison and verification checklist
file-analysis.mdExcel/CSV structure analysis and smart detection

Troubleshooting

command not found: clio

Node.js is not installed, or npm's global bin directory is not on PATH.

node --version    # Need v18+. If missing, install LTS from https://nodejs.org
npm install -g jaz-clio
npm config get prefix    # e.g. /usr/local or ~/.nvm/versions/node/v22.x.x
export PATH="$(npm config get prefix)/bin:$PATH"   # Add to ~/.bashrc or ~/.zshrc

Auth error / 401 Unauthorized

Missing, expired, or revoked authentication. Reconnect OAuth with clio auth login, then restart local MCP. For optional API-key access, check whether the key was regenerated in Jaz.

clio auth whoami
clio auth add <your-api-key>       # Get from Settings > API in Jaz
clio auth list                     # Confirm the right org is active

If you use env vars, set JAZ_API_KEY in the current shell or your MCP config's env block.

Claude Desktop says "Server disconnected"

Jaz Accounting closes a moment after it starts, and turning it off and on or reinstalling it does not help.

  1. Update the extension to 5.60.1 or later. Claude Desktop 2.110.0 closes any extension that starts a background copy of its Node.js runtime, and earlier versions of Jaz Accounting did that to check for updates.

  2. If the update has not reached you yet, switch that check off, then fully quit and reopen Claude Desktop:

    # macOS
    mkdir -p ~/.config/configstore && printf '{"optOut":true}' > ~/.config/configstore/update-notifier-jaz-clio.json
    

    On Windows, create the file %USERPROFILE%\.config\configstore\update-notifier-jaz-clio.json containing {"optOut":true}.

  3. Still disconnecting? The extension's own log only says the server closed. The reason is in Claude Desktop's main log:

    grep -a -E "Jaz Accounting|nodeHost|UtilityProcess" ~/Library/Logs/Claude/main.log | tail -40
    

    Send that output to build.with@jaz.ai.

MCP not connecting

The config path is wrong, the command is wrong, or the server crashes on startup.

npx jaz-clio mcp --org oauth:<resourceId>   # Smoke-test the server (Ctrl+C to stop)
claude mcp list                    # Confirm Claude Code sees "jaz"
claude mcp add jaz -- npx -y jaz-clio@latest mcp --org oauth:<resourceId>

For Cursor / VS Code / Windsurf, validate the JSON and pin the organization. Sign in first with clio auth login:

{
  "command": "npx",
  "args": ["-y", "jaz-clio@9.2.0", "mcp", "--org", "oauth:<resourceId>"]
}

Pin the intended organization explicitly. Local MCP refreshes OAuth tokens automatically; restart it after a new login or a configuration change. API-key profiles and comma-separated keys remain optional alternatives.

Skills not loading

Files are in the wrong path, or your agent doesn't auto-discover from there.

ls .claude/skills/                 # Claude Code
ls .agents/skills/                 # Agent Skills standard (Cursor, Copilot, etc.)
npx jaz-clio init                  # Re-install with auto-detection

Each skill folder must contain SKILL.md plus its reference files. Manual copies often miss subdirectories.

EACCES permission denied on npm install

npm's global directory needs elevated permissions on macOS/Linux without nvm.

# Option A: nvm (recommended)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
nvm install --lts && npm install -g jaz-clio

# Option B: fix npm permissions
mkdir -p ~/.npm-global && npm config set prefix ~/.npm-global
export PATH="$HOME/.npm-global/bin:$PATH"   # Add to ~/.bashrc or ~/.zshrc
npm install -g jaz-clio

Stale data after org switch

You ran clio auth switch or clio auth select but the MCP server still uses the previous org (it resolved auth at startup). Pinning --org in the MCP config avoids this.

# In Claude Code: remove and re-add
claude mcp remove jaz && claude mcp add jaz -- npx -y jaz-clio@latest mcp --org oauth:<resourceId>

# In Cursor / VS Code: restart the editor or reload MCP servers

Or use multi-org mode and skip restarts: an OAuth session without --org (or comma-separated keys, jk-aaa,jk-bbb), and name the organization in conversation.

Privacy & security

Runs entirely on your machine. API calls go directly from your machine to the Jaz API over HTTPS. No telemetry. OAuth tokens live in ~/.config/jaz-clio/oauth.json; optional API-key profiles live in ~/.config/jaz-clio/credentials.json. Both are private local credential files.

The 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.

Full policy: jaz.ai/legal. Vulnerability disclosure: SECURITY.md.

Support

License

MIT · Copyright (c) 2026 Jaz · Clio is a registered trademark.

↑↓ navigate openesc close