For developers and agents
Ship outcome-based products on one API.
Freeze what counts, bring your own judge, and get back a signed Outcome that billing, workflows and agents can act on.
REST, MCP and CLI. The sandbox needs no account.
{
"result": "partial",
"units": { "accepted": 97, "rejected": 3 },
"earned": "970.00",
"agreement_version": 4,
"signature": "Ed25519"
}Verifies offline with the open receipt verifier
Where to start
Start where your code is.
Read the platform, ship a product on it, or go straight to the reference. Every path ends in the same signed Outcome.
Eight lifecycle primitives, one Outcome. Compose the lifecycle directly when no packaged product fits.
See the platform →ProductOutcome AcceptanceShip acceptance without building it. Agree on what counted and hand every consumer one signed result.
See Outcome Acceptance →ReferenceAPI & MCP referenceEvery endpoint and every MCP tool, with OpenAPI, webhooks and versioning.
Read the reference →How it works for developers
Three calls, one durable result.
Define what counts
Freeze acceptance criteria in a Spool before the work starts. Versioned, so the rule cannot shift after the fact.
POST /v1/spools · create_spoolBring your own judge
Deterministic checks, your model, a reviewer, or another authority. Spoolis records the verdict and where it came from.
POST /v1/verify · verify_spoolAct on the signed Outcome
Accepted, rejected or uncertain, per unit, with earned value. Send it to billing, a workflow, or the next agent.
GET /v1/receipts/{id} · verify_resultBuilt for production state
An Outcome your systems can trust.
- Signed, verifiable offline
- Ed25519 receipts. Open verifiers for JavaScript and Python check the signature and the figures with pinned trust material.
- Versioned and correctable
- Idempotent events. A correction adds a version and keeps the earlier one. History is never rewritten.
- Agent-native
- A hosted MCP server, machine.md, llms.txt and a skill file, so an agent can run the whole lifecycle and continue only with accepted work.
- status
- partial
- accepted
- 97
- rejected
- 3
- earned
- $970.00
- agreement
- v4
- signature
- verified
Straight answers
What developers ask before they integrate.
Another billing platform?
No. Spoolis never moves money and never sends invoices. It produces the accepted record your billing consumes, next to Stripe, not instead of it.
We already have pass or fail logic.
Keep it. It becomes the judge, and its verdict becomes a signed, portable Outcome.
Platform lock-in?
Outcomes verify offline with an open verifier, and every record exports. Your rules and your history stay yours.
Start with one call. Build the full lifecycle.
Run an Outcome in the sandbox, inspect the signed result, then move into the API or MCP.