Spec0

Build against it today

Mock Servers

Every API you push gets a hosted mock automatically, serving realistic responses straight from your schema. Share one URL with your team and consumers, and wire it into CI for contract tests — zero infrastructure to run.

01

Generated from your spec. Always current.

Every API you push gets a mock automatically, serving realistic responses straight from your schema. Change the spec and the mock changes with it — it never lies to whoever's building against it.

bash
$ spec0 mock create --api orders
→ live at https://mock.spec0.io/acme/orders
GET /orders/o_92f1 200 OK
{
  "id": "o_92f1",
  "status": "fulfilled",
  "total": 4299
}
02

Real behaviour, no backend.

Auto-generated examples get you moving in seconds; then shape the edges with expression rules — a 404 for a missing order, a 402 when the balance is zero, a different payload per query param. The hard cases your frontend has to handle, without waiting on the API.

Response rules

when order.id == "0" 404
when balance <= 0 402
default 200
03

Let your agents call it.

Point Claude, Cursor, or any MCP client at the mock and let them build and test integrations against a live endpoint before the real API exists. Spec0's MCP server hands the agent the spec; the mock answers its calls.

Test the refund flow against our mock.
POST /orders/o_1/refunds 200

agent verified the happy path + the 402 on a zero balance — no backend yet.

04

Share one URL. Gate your CI.

One link your whole org and your consumers can hit, always current — no "spin it up locally" ritual. Then wire it into CI and run contract tests on every push, so a backward-incompatible change is caught in the PR that introduces it — not in a customer's incident channel.

Shareable URL Contract tests in CI Catch BWC breaks
mock.spec0.io/acme/orders
+6
contract-tests · consumer: web-app
contract-tests · consumer: partner-sdk
breaking change · removed field orders.total
Blocked in the PR — before it reached a consumer.
spec0 mock create --api orders