Skip to content

Developer docs

Spend exposes the same JSON API its web app uses, a signed webhook stream of every ledger event, a Model Context Protocol server for agents, SCIM for directories, and connectors to the ERPs and records systems agencies run.

  • Node.js 22 and TypeScript, as a pnpm monorepo. The server uses node:http with a small route table and no web framework; the web app is React and Vite.
  • Packages: @spend/core (ledger, money, policy, RBAC and segregation of duties, approvals), @spend/ai (Claude client and agent runtime), @spend/docintel (document capture), @spend/procurement, @spend/pay, @spend/platform (analytics, agents hub, tenants, migration) and @spend/connectors.
  • Storage: Postgres for records, the audit ledger and sessions; S3-compatible object storage for documents. Every row and file is encrypted per tenant before it is written.
  • AI: Anthropic’s Claude with structured outputs and quoted evidence. Without a model configured, capture and agents run on rules.