# Agents can’t practice law. They can call it.

> ONE API FOR EVERY KIND OF LEGAL WORK

The endpoint your agent hits the moment work turns legal — no SDK ceremony, no sales call, no law degree. Everything the law leaves open runs agent-native; the one act that needs a license is signed by an independent, verified professional.

**No filing, no charge — billing releases only on the government receipt.**

- **$400/hr** — the meter your product can’t build against — any legal work, the law-firm way
- **UPL** — the risk if your agent signs it anyway — a bar complaint, not a bug ticket
- **$0** — what you pay when the act doesn’t complete — the meter releases only on the receipt

*Incumbent figures are typical market rates for outside counsel.*

## Quickstart

```sh
npx api.lawyer                            # CLI + MCP server
curl https://api.lawyer/matters           # keyless first value — a typed OK envelope
curl -X POST https://api.lawyer/workspaces  # anonymous sandbox — the full contract, synthetic state
curl https://api.lawyer/pricing           # the Pricing Document ({"model":"free"})
curl https://api.lawyer/verify/suite.json # run our tests — the digest-pinned suite
```

## The line is where the law draws it.

Every capability is classified by its effect and gated exactly where the law gates it. Access is a function of authority, never a sales tier.

- **data** (read) — Dockets, registers, statutes, file-wrappers, chain-of-title. Reading a fact is never reserved, no matter how much AI does it — so reads are keyless from your very first call. `gate: none`
- **services** (record) — Drafting, assembly, analysis, monitoring. Agent-native end to end — assembly stays on the right side of unauthorized-practice rules because it selects mechanically and never tells your user what’s right for their matter. `scoped grants`
- **commerce** (act) — Money moves or an instrument executes. Some acts are unreserved (a fee payment, a provisional filing). Some are reserved — and there, an independent credential-holder signs under their own license. `Mandate + requiresSigner`

Two gates, both checked fresh at call time against the authoritative registry: requiresAccess — a restricted upstream (PACER, FinCEN BOI, private PAIR) your caller may only consume with a live credential. requiresSigner — a reserved act only a live credential-holder may perform.

## Every kind of legal work, one typed catalog.

One substrate for every practice area. The gate column tells your code which acts need a licensed human, before you call.

### data — read — gate: none · keyless

| method | path | note | gate |
| --- | --- | --- | --- |
| GET | `/patent/search?q=` | prior-art & citation hits | none |
| GET | `/patent/{number}/status` | prosecution history / file-wrapper | none |
| GET | `/trademark/{serial}/status` | TSDR status + prosecution events | none |
| GET | `/entity/{state}/{id}/standing` | SoS good standing + registered agent | none |
| GET | `/lien/ucc/{state}/{filing}` | UCC-1 status & lapse window | none |
| GET | `/court/{district}/{case}/docket` | federal docket & filings | `requiresAccess: pacer` |

### services — record — agent-native

| method | path | note | gate |
| --- | --- | --- | --- |
| POST | `/patent/draft-claims` | adversarial §101/102/103/112 examiner panel | none |
| POST | `/trademark/oa-response-draft` | office-action response draft | none |
| POST | `/contract/review` | clause-by-clause risk report | none |
| POST | `/demand-letter/draft` | drafted for attorney review | none |
| POST | `/entity/de/formation-docs` | certificate + consents + bylaws assembly | none |
| POST | `/docket-watch` | deadline ladder on any asset — patent, mark, entity, case | `requiresAccess: patent-center-practitioner` |

### commerce — act — money moves · instrument executes

| method | path | note | gate |
| --- | --- | --- | --- |
| POST | `/entity/de/form` | files the certificate — open act | none |
| POST | `/patent/file-provisional` | pro-se-fileable | none |
| POST | `/patent/file-utility` | the reserved act | `requiresSigner: uspto-registration` ← reserved |
| POST | `/trademark/file-oa-response` | reserved — attorney signs | `requiresSigner: state-bar` ← reserved |
| POST | `/demand-letter/send` | reserved — attorney signs & sends | `requiresSigner: state-bar` ← reserved |
| POST | `/contract/advise` | legal advice — reserved at the utterance | `requiresSigner: state-bar` ← reserved |

### sandbox — provision & play — gate: none · keyless · live today

| method | path | note | gate |
| --- | --- | --- | --- |
| POST | `/workspaces` | anonymous sandbox workspace — the full practice contract on synthetic state, TTL-bound | none |
| POST | `/tenants` | anonymous Tenant grain — Offers and routing mechanics, flat-priced by type | none |
| POST | `/firms` | anonymous firm envelope grain — member-executed Enrollment grants, lattice-derived roster | none |
| GET | `/workspaces/{id}/fixtures` | magic fixtures — named identities with promised, contract-tested outcomes | none |
| POST | `/workspaces/{id}/matters` | mint and advance Matters; you play the Signer on the same gig-result door | none |

### practice files & proof — live today — the workbench families

| method | path | note | gate |
| --- | --- | --- | --- |
| GET | `/matters/{id}/journal` | the append-only journal — Stage derives from it | none |
| GET | `/matters/{id}/attestations` | every Attestation on the record — a derived view | none |
| POST | `/matters/{id}/terminal` | the three exit terminals, each with its ratified predicate | none |
| GET | `/assets/{id}` | the perpetual noun — status history, docket, lineage | none |
| POST | `/matters/{id}/documents` | document metadata, content hash required — no blob door | none |
| POST | `/conflicts/{id}/entries` | Conflicts Ledger — hashed at rest, append-forever, per-practitioner | `tier: credential_verified` |
| GET | `/catalog` | data SKUs for sale — zero listed today, stated truthfully | none |
| GET | `/verify` | run our tests — the digest-pinned public-contract suite | none |
| GET | `/icp.json` | agent classes + the access-tier ladder | none |

The pattern holds across every practice area: reading facts is never reserved, drafting is agent-native (an inventor may even file pro se), and the reserved acts — a filing signature, a demand letter on attorney letterhead, legal advice itself — route to an independent credential-holder. Your agent runs 90–98% of the graph; a licensed human performs the irreducible rest.

Patent, trademark OA, contract review, demand letters, and DE formation run today; litigation, tax, and immigration clone the shape. Browse the catalog: https://api.lawyer/docs (746 capabilities)

## You never cross the line.

The acts your agent cannot perform are not a model-quality problem. They are reserved to licensed humans by definition. This API makes that boundary callable.

1. **Call the API.** curl your first read keyless — dockets, registers, good standing, file-wrappers — then let your agent run the open workflow: drafting, review, assembly, docketing.
2. **Hit the reserved act — and keep going.** The call returns a typed PENDING_SIGNER state instead of a dead end, while an independent, verified professional reviews and — in their own judgment — signs and files under their own license. Credentials are checked fresh at the call against the authoritative registry: suspended means BLOCKED, never degraded.
3. **Get the receipt.** The signed artifact, a verifiable Attestation, and the government receipt come back on a webhook. Your product moves on. You were never the lawyer — and never needed to be.

### what the API promises

- No filing, no charge
- Flat, posted pricing
- A live credential at every reserved act
- Independent judgment, structurally protected

The people who sign come through [gigs.lawyer](https://gigs.lawyer/) — independent attorneys and USPTO patent agents on the network, claiming work under their own license, with coverage in force on every act. Their flat Legal Fee is entirely their own, fixed when the work is posted. That independence is your regulatory safety, not our fine print.

## Provision a sandbox. Play the whole contract. No one to ask.

The sandbox is a mode, not a separate address: the same routes, the same typed envelopes, the same Gate, over synthetic state your agent owns. Every payload is marked simulated, and nothing in it can file, charge, or bind anyone.

1. **Discover.** GET /.well-known/agents.json returns the capability card: every door, the probe manifest, and the access-tier ladder.
2. **Provision — keyless.** POST /workspaces answers 201 with an ephemeral, TTL-bound workspace on synthetic seed state. Playing the Tenant role instead? POST /tenants, same rules.
3. **Play the contract.** The whole practice surface mounts under /workspaces/{id}. Reserved acts never leave the sandbox: a deterministic counterparty answers the Gig, and you play the Signer yourself.
4. **Script against known outcomes.** GET /workspaces/{id}/fixtures lists the magic fixtures below: named identities with promised, contract-tested outcomes. Script against them, not seed state.
5. **Verify without asking anyone.** GET /verify runs the digest-pinned public-contract suite against the live doors. A claim in this copy you cannot run yourself is a bug.

### magic fixtures — deterministic, contract-tested

| fixture | magic value | promise |
| --- | --- | --- |
| eligible Signer | `sg_fixture_eligible` | always verifies eligible — a gig-result attestation under this identity always lands |
| lapsed Signer | `sg_fixture_lapsed` | always fails standing — gig-result answers 422 naming the eligibility refusal; the Gig stays pending |
| lapsed-coverage Signer | `sg_fixture_lapsed_coverage` | always fails coverage freshness — gig-result answers 422 naming the coverage refusal and its cure (re-verify the coverage in force); the Gig stays pending |
| conflict party | `Conflict Fixture Industries` | always produces a conflict hit — the Matter carries the 'conflict_hit' Signal from intake |
| ack-due Asset | `[fixture:ack-due]` | the Deadline Ladder always sits inside the final week — GET /deadlines/{assetId} shows the daily-ack rung live |
| notice-eve Asset | `[fixture:notice-eve]` | the Deadline Ladder always rests one day above the t-30 notice rung — the first POST /deadlines/{assetId}/tick fires the notice reminder onto the event tail (GET /events?feed=reminders, live at /events/stream), addressed to the Monitoring owner once one is named |
| declining Client | `Declan Declines (fixture)` | every reserved-act Gig is declined by the counterparty — the Matter lands in needs_client_direction (Declination Finality), reopened only by a journaled Client Direction |
| fulfilling Client | `Fiona Fulfills (fixture)` | every reserved-act Gig is attested by the eligible fixture Signer — repeated POST /matters/{id}/advance walks clean to the fulfilled terminal, receipt on file |

## Three calls: a free fact, an open workflow, a reserved act.

### curl · data tier · keyless

```
$ curl https://api.lawyer/patent/US11123456B2/status

{
  "number": "US11123456B2",
  "title": "Distributed ledger for credential attestation",
  "status": "granted",
  "prosecution": {
    "artUnit": "3685",
    "examiner": "K. Tran",
    "events": [
      { "date": "2023-04-11", "code": "CTNF", "desc": "Non-final rejection" },
      { "date": "2023-09-02", "code": "A...", "desc": "Response after non-final" },
      { "date": "2024-01-17", "code": "NOA",  "desc": "Notice of allowance" }
    ]
  },
  "maintenance": { "nextWindow": "2027-07-17", "surchargeAfter": "2028-01-17" },
  "meta": { "gate": "none", "effect": "read", "metered": false }
}
```

### curl · services tier · contract review

```
$ curl -X POST https://api.lawyer/contract/review -F file=@msa.pdf

{
  "matter": "mtr_7c21fa",
  "effect": "record",
  "report": {
    "clauses": 41,
    "flags": [
      { "clause": "11.2", "kind": "indemnity",    "risk": "uncapped — no liability ceiling" },
      { "clause": "14.1", "kind": "assignment",   "risk": "silent on change-of-control" },
      { "clause": "17.4", "kind": "governing-law", "risk": "venue is counterparty's home forum" }
    ],
    "redline": "https://api.lawyer/artifacts/mtr_7c21fa/redline.docx"
  },
  "meta": { "gate": "none", "note": "analysis, not advice — /contract/advise is the reserved act" }
}
```

### MCP tool call · commerce tier · reserved act

```
// tool call
{
  "name": "patent_file_utility",
  "arguments": {
    "draft": { "claims": "…", "spec": "…", "ids": ["US10998877B1", "EP3456789A1"] },
    "applicant": { "name": "Acme Robotics, Inc.", "entityStatus": "small" },
    "mandate": "mnd_9f2ka7"
  }
}

// response
{
  "status": "PENDING_SIGNER",
  "effect": "act",
  "gate": { "requiresSigner": "uspto-registration" },
  "signer": {
    "routed": true,
    "credential": "uspto-registration",
    "verification": { "mode": "registry:USPTO-OED", "liveness": "FRESH" }
  },
  "eta": "PT24H",
  "then": {
    "attestation": "att_…  (authority: PatentAttorney)",
    "receipt": "USPTO e-filing acknowledgment",
    "webhook": "outcome.filed"
  }
}
```

Same API across the whole line. Reads return instantly and keyless. Open workflows — drafting, review, assembly — run agent-native and record their artifacts. Reserved acts return a typed PENDING_SIGNER, route to a verified credential-holder, and resolve to a signed artifact on a webhook. Typed BLOCKED and EMPTY — never a silent failure.

## Three motions. One API.

Who consumes is a per-matter setting, not a different product. Same surface, same typed gate.

- **B2A — Business → Agent. Your agent is the customer.** No human in your loop. Your agent holds the key and a hard spend ceiling and buys legal work at machine speed: good-standing sweeps, portfolio deadline watches, contract triage on every inbound MSA, filings staged the moment a threshold trips.
- **B2H2A — Business → Human → Agent. Your users, with a licensed human at the one moment that needs one.** Your product serves people. Your agent does the work in-product; when a user’s matter hits a reserved act, it routes to an independent credential-holder who reviews and, in their own judgment, signs. A typed PENDING_SIGNER state keeps your UI honest, never a dead end.
- **B2A2D — Business → Agent → Downstream. Your platform’s agents, serving their customers.** You run agents for downstream clients: a legal-features SDK in your SaaS, a marketplace’s compliance bot, an enterprise fleet. Each client’s matter carries its own journaled consent, conflicts surface, and receipts. The gate travels with the capability, so you never build a professional network or practice law.

Whoever’s calling, the constitution is identical: open work runs agent-native, reserved acts route to an independent licensed human, and every outcome lands as a typed webhook with the receipt attached.

## Priced like infrastructure, not like a law firm.

- **reads**: $0 keyless. Every read, free from your first call. No key, no signup.
- **provisional filing**: $199 flat. Drafted, stress-tested, and filed with the USPTO. Pro se or done-for-you.
- **utility filing**: $799 flat. The reserved act: signed and filed by an independent USPTO-registered attorney or agent.

- No filing, no charge.
- Your spend ceiling is hard, and you set it.
- Metered usage rates publish with your key.

*Incumbent figures are typical market rates for outside counsel.*

## Get your API key.

One key covers the whole surface. Reads stay keyless, and nothing is priced by the hour or as a share of an outcome.

- `npx api.lawyer` — request your key from the terminal; it stores the key and manages delegated-authority tokens.
- `POST /keys` with form field `email` (optional `building`) — your key provisions by email.

Credentialed professional? You’re the supply side [gigs.lawyer](https://gigs.lawyer/)

*Keys are provisioned by email, patent surface first. Prefer the terminal? npx api.lawyer requests your key, stores it, and manages B2H2A delegated-authority tokens.*

## Machine surfaces

- llms.txt (the model front door): https://api.lawyer/llms.txt
- capability card + AXP probe manifest: https://api.lawyer/.well-known/agents.json
- OpenAPI 3.1 contract: https://api.lawyer/openapi.json
- self-classification (agent classes + tier ladder): https://api.lawyer/icp.json
- data catalog (empty-but-real): https://api.lawyer/catalog
- run our tests (digest-pinned suite): https://api.lawyer/verify
- documentation (HTML register): https://api.lawyer/docs
- the guided sandbox walk (keyless, synthetic, in a browser): https://api.lawyer/sandbox

---

© 2026 api.lawyer · Nothing on this page is legal advice. · [AXP conformance](https://api.qa/api.lawyer)
