{"_id":"@axiom-billing/mcp","name":"@axiom-billing/mcp","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@axiom-billing/mcp","version":"0.1.0","description":"Model Context Protocol server for Axiom — exposes accounting tools to Claude Desktop, ChatGPT, and any MCP-capable AI client.","type":"module","bin":{"axiom-mcp":"dist/server.js","axiom-mcp-install":"dist/install.js"},"main":"./dist/server.js","repository":{"type":"git","url":"git+https://github.com/seankanderson/axiom-mcp.git"},"homepage":"https://github.com/seankanderson/axiom-mcp#readme","bugs":{"url":"https://github.com/seankanderson/axiom-mcp/issues"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc","start":"node dist/server.js","install-client":"node dist/install.js","test":"node --import tsx --test src/**/*.test.ts","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.0","zod":"^3.23.0"},"devDependencies":{"@types/node":"^20.11.0","tsx":"^4.7.0","typescript":"^5.4.0"},"engines":{"node":">=20"},"_id":"@axiom-billing/mcp@0.1.0","gitHead":"3dad851d8e3bb52a2844479d198fefb2df36ed1e","types":"./dist/server.d.ts","_nodeVersion":"22.6.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-yL8TDywUl+PTpDDTxQis2rIy17Op07qT4Oh2VJcshfZpp3R1NyEAIz8Ur41UlBDOVW0WHRzQYy9LvVw3ZAFKng==","shasum":"0647de229c481d5006efeda944562ab03cd40c5f","tarball":"https://registry.npmjs.org/@axiom-billing/mcp/-/mcp-0.1.0.tgz","fileCount":32,"unpackedSize":89812,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCWI8r5FDQd4ez7mSLIEZ572wDP3w+ATgA/RpkaWb3QYAIhAP9MBDzYgE+fVrkb9hksHCBdfc84fN/RiKonsISPtwio"}]},"_npmUser":{"name":"datavirtue","email":"sean.anderson@datavirtue.com"},"directories":{},"maintainers":[{"name":"datavirtue","email":"sean.anderson@datavirtue.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_0.1.0_1780778597211_0.5139341824481882"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-06T20:43:17.011Z","0.1.0":"2026-06-06T20:43:17.370Z","modified":"2026-06-06T20:43:17.623Z"},"maintainers":[{"name":"datavirtue","email":"sean.anderson@datavirtue.com"}],"description":"Model Context Protocol server for Axiom — exposes accounting tools to Claude Desktop, ChatGPT, and any MCP-capable AI client.","homepage":"https://github.com/seankanderson/axiom-mcp#readme","repository":{"type":"git","url":"git+https://github.com/seankanderson/axiom-mcp.git"},"bugs":{"url":"https://github.com/seankanderson/axiom-mcp/issues"},"readme":"# @axiom-billing/mcp\n\nModel Context Protocol server for Axiom. Exposes accounting tools to Claude Desktop, ChatGPT, Codex, or any MCP-capable AI client — so the user's AI can read reports, suggest reconciliations, and create draft invoices without writing custom glue code.\n\n## Install (one command)\n\n```sh\nnpx @axiom-billing/mcp install\n```\n\nThat command:\n\n1. Discovers your Axiom deployment's OAuth endpoints (`/.well-known/oauth-authorization-server`).\n2. Dynamically registers a new OAuth client (RFC 7591) — no developer-portal step.\n3. Opens your browser to the Axiom consent screen with PKCE.\n4. Captures the redirect on a one-shot loopback listener (`http://127.0.0.1:<port>/callback`).\n5. Exchanges the authorization code for access + refresh tokens.\n6. Writes tokens to `~/.axiom-mcp/config.json` (mode 600).\n7. Updates your Claude Desktop config to register the MCP server.\n\nRestart Claude Desktop. The Axiom tools are now available in any conversation.\n\n## Environment overrides\n\n| Variable | Default | Meaning |\n|---|---|---|\n| `AXIOM_API_URL` | `http://localhost:8200/api` | Base URL of the Axiom API |\n| `AXIOM_SCOPES` | `read:ledger read:invoices read:contacts read:reports read:bank-transactions offline_access` | Space-separated OAuth scopes to request |\n\n## What it exposes\n\n### Read tools\n\n- `find_contact(query)` — fuzzy match contacts.\n- `summarize_ar_aging()` — open AR with aging buckets.\n- `list_open_invoices(contactId?)` — unpaid invoices.\n- `list_unmatched_bank_transactions()` — bank transactions awaiting reconciliation.\n- `explain_ledger_entry(transactionId)` — full debit/credit breakdown of a transaction.\n- `get_report(reportId, dateFrom?, dateTo?)` — runs any of the standard Axiom reports.\n\n### Write tools (approval-gated)\n\nThese tools NEVER write directly. They submit a request to the per-company approval queue. A human admin/supervisor explicitly approves each one from the Axiom UI before it runs. The exact policy (auto-approve, require-approval, block) is set per-tool per-company.\n\n- `create_invoice_draft(contactId, items, dueDate?)` — proposes a draft invoice. Never finalizes.\n- `record_payment(invoiceId, amount, method?, receivedDate?)` — proposes a payment row.\n- `propose_reconciliation(bankTransactionId)` — returns a suggested match. Pure read.\n\n## Audit trail\n\nEvery API call from this server carries `X-Axiom-Source: mcp`. The Axiom audit log records every mutation with `actorType: ai` and `actorId` = the user the install belongs to. Approved write actions also link the approving admin in the audit row.\n\n## Security\n\n- Tokens at rest in `~/.axiom-mcp/config.json` with file mode 600.\n- Refresh tokens rotate on every use (RFC 6749 §6); reuse of an old refresh token revokes the entire grant chain.\n- Revoke this install at any time from **Connected Apps** in the Axiom UI.\n\n## License\n\nInternal.\n","readmeFilename":"README.md","_rev":"1-e999aea9b8ec97ef957beb8003cff320"}