Spoolis Platform
Build custom workflows on the Outcome lifecycle.
Define what counts, turn evidence and judgment into a durable Outcome, and send it to the systems that act next.
REST · MCP · CLI · Connectors
One platform, four products
Each product is a packaged path through the same primitives.
Start with the product that fits the job. If none fits exactly, compose the lifecycle directly.
- 8 lifecycle primitives
- Agreement · Evidence · Judgment · Outcome · Finality · Remedy · Destination · History
- Interfaces
- Outcome API · MCP server · CLI · Connectors
- Trust
- Signed Outcome · Offline receipt verifier · Full history
Products package the lifecycle. Developers can compose it directly. Either way, the output is the same programmable Outcome.
Start building
Start in one paste.
Give your coding agent everything it needs to integrate Spoolis, or call the tools yourself.
Primitives
Eight pieces. One lifecycle.
Core lifecycle
Judgment
Apply deterministic checks, AI, humans, or another chosen authority.
POST /v1/verify · verify_spoolDocs →Outcome
Produce one accepted, rejected, or uncertain commercial result.
GET /v1/receipts/{id} · inspect_outcomeDocs →Operational lifecycle
Finality
Decide when the result can safely be acted on.
POST /v1/receipts/{id}/reviews · request_reviewDocs →Remedy
Determine what happens when the agreed result or promise misses.
POST /v1/promise-replayDocs →Destination
Send the Outcome to billing, finance, workflows, payments, or agents.
Webhooks · verify_resultDocs →History
Preserve every version and correction without rewriting the past.
GET /v1/spools/{id}/events · get_spool_eventsDocs →Versioned agreements · explicit finality · signed Outcomes · idempotent events · corrections without rewriting history · offline verification
The programmable Outcome
One programmable Outcome that every system can act on.
A programmable Outcome is a versioned, signed result with explicit commercial state that software can read and act on.
Outcome {
id: "rcpt_8f2c…"
spool_id: "spl_4k9d…"
agreement_version: 4
result: "partial"
units: 97 accepted, 3 rejected
earned: 970.00
state: "current"
signature: Ed25519
}- Billing
accepted_units_export()count: 97 earned: 970.00
- Finance
reconciliation_statement()accepted.amount: 970.00 difference: -30.00
- Workflow
continuation_payload()status: partial accepted: 97 rejected: 3
- Agent
verify_resultcontinue with 97 accepted units
- Payment
settlement_instruction()amount: 970.00 receiptId: rcpt_8f2c…
Different consumers. One versioned commercial result.
For agents
Agents can run the whole lifecycle.
An agent can read the agreement, submit evidence, verify the work, and continue only with the accepted result.
A failed intermediate result should not automatically trigger more spend, workflows, or agents downstream.
- get_spool · reads the agreed criteria
- submit_evidence · 100 units, with their evidence
- verify_spool · 97 accepted, 3 rejected with reasons
- verify_result · checks the signed receipt
- The agent continues with the 97 accepted units only.
Questions
The platform, in plain language.
What is the Spoolis Platform?
A developer platform for outcome-based software. It turns acceptance criteria, evidence and a judgment into one signed Outcome that billing, workflows, payments and agents can act on.
What is an Outcome?
A signed record of what was delivered, which units were accepted, rejected or uncertain, and why. Anyone holding it can verify it.
Should I use a product or the primitives?
Use a product when it fits the job: pricing, guarantees, acceptance or spend. Use the primitives through the outcome API when you need a lifecycle the products do not cover.
How do agents use Spoolis?
Through the MCP server or the API. An agent reads the agreed criteria, submits evidence, runs outcome verification and continues only with the accepted units.
How do I verify a signed Outcome?
Use the open receipt verifier for JavaScript or Python. It checks the Ed25519 signature and the figures offline, with pinned trust material.
Can I try it without an account?
Yes. The sandbox runs a full acceptance in one call and returns a signed demo receipt.
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.