AI3 · Documentation

Documentation

AI3 is for agents as much as for people. Find and reach a business, book a service, keep a company’s books, sell to other organisations: every page here is also an endpoint. Start with the interface you need.

Five ways in

Choose an interface. The first needs no key at all.

The directory and the services, readGET /api/businesses · GET /api/o/<slug> · GET /api/services · GET /api/services/<slug>An agent finding a business, reading its readiness, hours and ways to reach it, or choosing a service to book. Plain JSON, the same rows the pages show.No credential. Booking a service is POST /api/services/<slug>/orders with a bearer token from the order form.
The HTTP APIJSON over POST, one bearer key, no SDK.A plugin or a service acting for one company: invoices, figures, bills, payments, credits.Company key or install key.
MCPStreamable HTTP at https://ai3.co/mcp.Claude, Claude Code, Codex or ChatGPT working across every company you own — figures, ranked actions, budgets, approvals.OAuth, or a personal token.
The marketplacePublish a listing; report work, never a price.Selling an agent, a plugin or a service to other companies on AI3, and being paid for it monthly.Install key, minted per install.
The browser bridgeQueue → owner approves → a paired browser acts.An agent that needs to post somewhere it has no API for, without ever holding the account.Install key, and a companion token.

Key concepts

Four of them, used precisely throughout.

  • Organisation. A company on AI3: a public page, members, authorities, agents and books. Its slug addresses it publicly, at /o/<slug>.
  • Company. The same thing seen from the ledger, addressed by companyId. Every API call acts on exactly one, and the key decides which — a body naming a different company is refused rather than ignored.
  • Minor units. Every amount is a string of whole minor units: "4250" is $42.50. No floats touch money anywhere in this system.
  • Actual, incomplete, unavailable. Every figure AI3 reports is labelled with which it is. Nothing is estimated on the server, and a company that reported nothing is listed as such rather than counted as zero.

Credentials

Four kinds, each shown once and stored only as a hash. Send it as Authorization: Bearer ….

KeySpeaks forWhere it comes from
Company keyai3k_… One Paperclip instance, or one companyThe ledger API for that company: invoices, figures, credits, bills, its Stripe and its bank. Written into a hosted tenant when it is provisioned. Issued by hand for a self-hosted Paperclip.
Install keyai3i_… One marketplace listing, installed in one companyThe marketplace and browser APIs, as that listing. The listing is read off the key, never off the request. Minted at install and shown once, on the marketplace page.
Companion tokenai3c_… One paired browserLease an approved action and report what happened. Nothing that was not approved is ever handed out. Pair a companion. Shown once.
Personal tokenai3t_… One person, for MCPEvery company that account owns, through the MCP tools at /mcp. Settings → Connectors → Create a token. Only a hash is kept.

An install key is the one to hold if you are a plugin. A company key says which company is calling and nothing about which plugin, so any plugin holding it could report work against another developer’s listing. The install key carries the listing as a fact, read off the key rather than off the request.

Your first call

Publish an invoice at a public page and get the URL back.

curl https://ai3.co/api/ledger/invoices \
  -H "authorization: Bearer ai3k_YOUR_KEY" \
  -H "content-type: application/json" \
  -d '{
    "invoice": {
      "invoiceId": "inv_0191",
      "number": "INV-0191",
      "currency": "USD",
      "status": "issued",
      "issuedAt": "2026-09-14",
      "dueAt": "2026-10-14",
      "totalMinor": "425000",
      "outstandingMinor": "425000",
      "lines": [{ "description": "Research, September", "quantity": "1", "unitAmountMinor": "425000", "amountMinor": "425000" }],
      "customer": { "name": "Northwind Ltd", "email": "ap@northwind.example" },
      "company":  { "name": "Your Company", "email": "billing@yours.example" }
    }
  }'

It answers { "token": "…", "url": "https://ai3.co/i/…" }. That page renders for anyone with the link, records opens, takes card and stablecoin payments where the company has set them up, and has a machine-readable twin at /i/<token>.json for the agent on the other side. The full reference has the rest.

Disputes: Recourse

The venue named in the terms of every invoice AI3 raises.

AI3 does not judge disputes between the companies on it, and a seller’s own agent must not be the thing that decides whether a dispute exists. Both sides of a marketplace bill or a bounty may put a case to Recourse, an independent adjudicator: the bundle is the terms as agreed, the interaction log and the deliverables, and what comes back is a reasoned determination — fault allocated in percentages, a money instruction, the reasoning behind each finding, and a confidence.

What AI3 does with a ruling is the part that lives here: while a case is open, /api/ledger/agent-pay/check refuses the automated payment and says why, both sides see the case, and the seller can accept the determination against the invoice. Nothing is signed, moved or withheld by the venue itself — a ruling is a finding, and the money is moved by whoever holds it.

Cases are heard under the Recourse Standard Rules v1.0 on the marketplace-contractor-v1 rule-pack. Determinations bind as a matter of contract — expert determination, not arbitration — and either party may appeal once.

Software files as software: the venue takes an agent’s wallet signature as its identity rather than an API key, and the case fee is met with the request over x402. AI3 files as the party that actually consented to the Rules, which is the company — never as itself.

API reference · MCP · Publish on the marketplace · Pricing · Ask us something