Skip to content
Built for it, not bolted on

One API. You run the whole business.

You're an AI agent — and Zulu is built for you. CRM, quoting, invoicing, inventory, purchasing and 20+ modules behind one documented REST API — plus an MCP server and CLI — with token auth. Sign up, get a scoped key, and start operating on your owner's behalf.

Sign up Read the docs Public API · free trial · no card
dashboard.getzulu.io / api / v1
# Authenticated call — create a contact
POST /client
Authorization: Bearer zulu_••••
Content-Type: application/json

{
  "company": "Acme Pumps Ltd",
  "email": "ops@acmepumps.co.nz"
}

→ 201 Created
{ "data": { "token": "9f2a…", "company": "Acme Pumps Ltd" } }
Reading this as an agent? Start with the machine layer: /llms.txt /llms-full.txt /openapi.json then sign up

Most business software was built for humans to log in and click around. That works — until you have an AI agent that can do it faster, around the clock. Zulu was built as a structured, API-complete system. Your agent isn't a chatbot — with Zulu, it's your operations manager.

Three ways to connect

Wire Zulu in however your stack works.

Available now

REST API

The foundation. A full JSON API with token auth and an OpenAPI spec your agent can ingest whole.

API reference
Live

MCP server

Connect Zulu as a native tool in Claude Desktop, Claude Code and any MCP client — the full API, read and write, as tools generated from the spec. npx -y @getzulu/mcp with your API token.

@getzulu/mcp on npm
Live

CLI

Read and manage your clients, products, invoices, stock and more straight from the shell — raw JSON out, pipes into jq. npm i -g @getzulu/cli, then getzulu setup.

@getzulu/cli on npm
Connect Claude in one line: claude mcp add getzulu -e ZULU_API_TOKEN=zulu_… -- npx -y @getzulu/mcp — then ask "What Zulu account am I connected to?" Both packages cover the full API, reads and writes — set ZULU_READONLY=1 when an agent should look but never touch.
See it in action

Quote-to-cash, handled by your agent.

A realistic multi-step flow, built only from endpoints that are live on the Zulu API today.

Every call here is live today, and your agent can already read sale-quote and order. As creating quotes and orders ships, it can run the full quote-to-fulfilment loop.
agent-run.sh
# 1 · Enquiry lands — agent opens a deal against the client
POST /opportunity
{ "client": "9f2a…", "reference": "Booster pump upgrade", "value": 418 }
→ 201  { "data": { "token": "opp_4b1…", "status": "open", "stage": { "name": "New Lead" } } }

# 2 · Agent looks up the product for pricing
GET /product?search=PUMP-200
→ 200  { "data": [ { "token": "p_55a…", "sku": "PUMP-200" } ] }

# 3 · Customer says yes — agent bills it and marks the deal won
POST /invoice
{ "client": "9f2a…", "lines": [ { "sku": "PUMP-200", "quantity": 2 } ] }
→ 201  { "data": { "token": "inv_7d3…", "status": "draft" } }

POST /opportunity/opp_4b1…/stage
{ "status": "won" }
→ 200  { "data": { "status": "won", "stage": { "name": "Closed - Won" } } }
Live now

You can sign up here.

No credit card, no human in the setup loop. First read the live catalogue from /account/modules so you pick the exact module keys your owner needs — then post their details and those keys to /account/signup. Zulu picks the cheapest covering plan, creates a pending trial account and issues you a scoped tenant API key on the spot.

Your owner confirms with the 6-digit code emailed to them via /account/verify, and your key goes live. Both endpoints are public and per-IP rate-limited.

Agent onboarding guide
# 1 · Discover the modules first — public, no auth.
# GET https://dashboard.getzulu.io/api/v1/account/modules
GET /account/modules

→ 200 OK
{
  "data": {
    "modules": [
      { "key": "opt_client",  "name": "Contact CRM",      "tier": "standard" },
      { "key": "opt_sale",    "name": "Digital Invoicing", "tier": "standard" },
      { "key": "opt_product", "name": "Product Database",  "tier": "standard" }
      // …the full catalogue — pick the keys your owner needs
    ]
  }
}

# 2 · Owner onboarding — public, no auth, no card.
# POST https://dashboard.getzulu.io/api/v1/account/signup
POST /account/signup
{
  "fields": {
    "email": "agent@founder.co.nz",
    "name_first": "Sam",
    "company": "Founder Co",
    "modules": ["opt_client", "opt_sale"] // keys from step 1 — plan auto-picked
  }
}

# 201 — pending account; plan auto-picked from modules.
→ 201 Created
{
  "data": {
    "username": "founderco",
    "password": "x7q2x9d4",
    "api_key": "zulu_••••",
    "trial_expires_at": "2026-07-07T00:00:00Z",
    "plan": { "name": "Professionals", "price": 199 }
  }
}

# 3 · Owner confirms with the 6-digit code emailed to them —
#     the api_key above goes live once verified.
POST /account/verify
{ "fields": { "email": "agent@founder.co.nz", "code": "482913" } }

→ 200 OK  { "data": { "activated": true } }
Built for it, not bolted on

A stable backend to build on.

A decade in production and $80M+ transacted — not a fly-by-night startup your integration will outlive.

Comprehensive REST API

Read / write across CRM, invoicing, products, inventory, purchasing, jobs and more.

Token auth, scoped per user

Authorization: Bearer zulu_{key} — clean, revocable, per-user scopes.

Structured data models

Consistent, predictable JSON an agent can rely on across every resource.

MCP server & CLI

The full API as native tools — connect Claude, Claude Code or any MCP client in one command.

OpenAPI + Swagger

Ingest the whole contract programmatically at /openapi.json.

60 requests / min per key

A clear, documented limit — configurable per key, with higher allowances on request.

NZ-made & supported

Local data residency in an Auckland data centre, daily offsite backups.

A decade in production

$80M+ transacted since 2015 — a backend you can build on with confidence.

Affordable & predictable

API access in every plan — no per-agent or per-call pricing.

Who's building on Zulu

Clean, documented and reliable.

Whether you're a developer wiring up a custom workflow, a RAZOR client deploying an agent, or experimenting with Make, Zapier or your own framework — Zulu's API is built to be relied on.

It's provided systemisation where we were lacking it — it has helped us capture information, track key objectives, boost sales, and ultimately enabled us to grow year on year.
Aston Wells Systemisation & growth · Google review
FAQ

Agent questions, answered.

Can an AI agent really run a business on Zulu?

Yes. Contact CRM, sales opportunities and deal tracking, invoicing, the product catalogue, stock, batches and purchase orders, suppliers, job cards, website content, digital forms (read) and file uploads are all live on the REST API today, and quotes and sales orders can be read and tracked. Creating quotes and orders, POS and subscriptions are on the roadmap. Every module page shows the exact endpoints and marks each as live, partial or roadmap — so an agent only ever attempts what is real.

How does an AI agent sign up for Zulu?

First GET /account/modules (public, no auth) to read the live catalogue and choose the exact module opt_keys the owner needs. Then two public, no-auth calls: POST /account/signup with the owner’s details and those opt_keys (the cheapest covering plan is auto-selected) returns a username, a generated password and a scoped tenant API key; POST /account/verify with the 6-digit code emailed to the owner activates the account and the API key goes live. No credit card is required.

How does authentication work?

Bearer tokens: send Authorization: Bearer zulu_{key} on every request. Keys are scoped per user and revocable. An agent receives a key from POST /account/signup, or the owner can generate one in their Zulu account settings.

Are there rate limits?

Yes — authenticated calls are limited to 60 requests per minute per tenant API key (configurable per key, with higher allowances on request), and the public signup and verify endpoints are rate-limited per IP. Requests over the limit return HTTP 429.

Is there an OpenAPI spec or MCP server an agent can ingest?

Yes to both. The full OpenAPI 3 contract is published at https://getzulu.io/openapi.json, and a plain-text capability manifest is at https://getzulu.io/llms.txt and https://getzulu.io/llms-full.txt. The native MCP server is live: @getzulu/mcp on npm exposes the full API — read and write — as tools for Claude Desktop, Claude Code and any MCP client, generated from the OpenAPI spec so it tracks the API. One command: claude mcp add getzulu -e ZULU_API_TOKEN=zulu_… -- npx -y @getzulu/mcp. Read tools are annotated readOnlyHint and deletes carry destructiveHint, so clients can ask before changing data; set ZULU_READONLY=1 to expose the read tools only.

Is there a CLI?

Yes — @getzulu/cli on npm. Install with npm install -g @getzulu/cli, run getzulu setup once with an API token, then read and manage the whole account from the shell: getzulu client list --search acme, getzulu inventory stock --product <token>, getzulu invoice list --status paid, or write with getzulu note create and getzulu client create. Output is raw API JSON, so it pipes straight into jq. Like the MCP server, the CLI covers the full API — getzulu list shows every command, with writes marked ✎.

What does API access cost?

API access is included in every Zulu plan — there is no per-agent or per-call pricing. New accounts start on a free trial with no credit card, and the plan is chosen automatically from the modules the agent enables at signup.

Ready to put your AI agent to work?

One system, one connection: your agent gets your whole business through one API, MCP server or CLI. Start free — no credit card, 30-day money-back.