Matter Docs
Overview
Corporate infrastructure as an API. One JSON REST interface covers the full lifecycle of a legal entity — create, manage, exit.
Last updated
Corporate infrastructure, by API.
One API covers the full lifecycle of a legal entity — create, manage, exit.
TL;DR. A JSON REST API at https://api.mattermode.com/v1. POST /v1/entities
forms a company; POST /v1/entities/:id/dissolve winds it down. Mutations return
immediately (HTTP 202) and the final result arrives on a webhook
— formation takes days, not milliseconds. Every request is safe to retry, and errors
come back as structured JSON.
REST, MCP, or SDK — which to use
All three speak the same wire protocol. Pick whichever fits the runtime.
REST API
Server-side automation, batch workflows, anywhere you want explicit control over headers and retries.
MCP
Model Context Protocol — the standard agent runtimes like Claude and Cursor speak. Use for tool-calling integrations where catalog and tier filtering are valuable.
SDK
Typed clients for TypeScript, Python, and Go. Use in application code where typed responses and auto-pagination accelerate development.
The wire conventions are deliberately mainstream: standard bearer-token auth,
structured-JSON errors, retry-safe POSTs (every POST takes an Idempotency-Key),
cursor-based pagination, and per-entity event ordering. See
conventions for the spec details. What's new is the
entity-as-object framing: every legal entity is a programmable resource with a state
machine, an immutable audit trail, and a webhook stream you subscribe to once.
What you can do
Start a company
POST /v1/entities runs the full formation cascade — Certificate of Incorporation, EIN
(the federal tax ID number every US business needs), governance docs, Incorporator
Receipt (signed proof the company exists), then transfers authority to the founders.
Run the company
Issue shares, file 83(b) elections (a one-page IRS form founders submit within 30 days), run board consents, pay franchise tax, file BOI (a federal beneficial-ownership report), generate LOIs. Every action is an API call. Every call is safe to retry.
Exit the company
POST /v1/entities/{id}/dissolve cascades Form 966 → final franchise tax → Certificate
of Dissolution → BOI closure. POST /v1/corporate_transactions opens the M&A envelope
(merger, acquisition, asset sale, stock sale, conversion, reorganization) and advances
through loi → due_diligence → definitive → closing → closed.
Hand the keys to an agent
Create a tier-4 token (the most autonomous token tier — runs without per-action human
approval) with a structured scope policy. Your AI runs routine compliance and pauses on
an Authorization resource when a human signature is required.
Grow a portfolio
POST /v1/portfolios/{id}/entities/batch for venture studios. Shared registered agent,
shared compliance calendar, roll-up health across every entity in the portfolio.
Lifecycle map
Quickstart
Form your first entity with a test key in under 60 seconds.
Hand it to an agent
Scoped tokens, tier-based authorization, dual-attribution events.
ID prefixes
Every Matter object — entity, document, token — has a short prefix that says what
kind of thing it is. SDKs use the prefix to generate strongly-typed ID aliases
(EntityId, FilingId, TokenId), so a doc_ can never be passed where an
ent_ is expected.
Create phase
Manage phase
Platform
Request and response shape
| Header | Type | Required | Description |
|---|---|---|---|
Authorization | string | yes | Standard HTTP bearer token. Accepts sk_live_…, sk_test_…, pk_live_…, pk_test_…, or scoped-agent tok_…. See authentication. |
Matter-Version | string | yes | Dated version, e.g. 2026-05-01. Keys and tokens pin at creation — there is no implicit "latest." See versioning. |
Idempotency-Key | string | yes | Any unique string you generate (a UUID is fine). Required on every POST. Up to 255 characters, 24-hour retention, token-scoped. See idempotency. |
Content-Type | string | default application/json | JSON for requests and 2xx responses. application/problem+json for non-2xx. |
Every response carries X-Request-Id: req_…, mirrored in Problem.request_id on errors.
Every resource includes the envelope fields id, object, created, updated,
livemode, and metadata.
Design principles
- Entity as Object. (A company is a programmable record, not a form submission.) Typed
id,objectdiscriminator,livemode,metadata,created/updatedtimestamps — on every resource. - Async by Default. (Calls return right away; the slow work finishes in the background and notifies you.) Mutations return
202 Acceptedwith a pending resource; terminal outcomes arrive via webhooks. We never block on state filings. - Imperative surface, declarative machinery. (Most calls just do the thing; the resolver underneath is also exposed if you need it.)
POST /v1/entitiesdoes the thing.POST /v1/intentsexposes the resolution engine for dry-runs, multi-entity flows, and tier-2 agent prep. - Documents as Data. (Every legal document is also a JSON object you can query and diff.) Every legal document is simultaneously queryable JSON and rendered PDF.
- Lifecycle Complete. (Dissolving is as first-class as forming. Every change is recorded and auditable.) Dissolution is as first-class as formation. Every state transition creates an immutable
AuditEntry. - Agent-Native. (Tokens carry a permission tier; high-stakes actions pause for human approval.) Authorization tier is a property of the token. Tier-3 actions pause via a first-class
Authorizationresource and emit dual-attribution events.