const verdict = await spoolis.verify(spool, result)

verdict.passed // true
verdict.checks // per-check results
verdict.attestation // signed receipt

Spoolis for agents

Verify work before your agent pays.

Spoolis turns the task into explicit acceptance criteria, checks the delivered work, and returns a signed Outcome Receipt showing what was earned.

Spoolis is the referee, not the bank. It decides what passed and what was earned. Your payment system moves the money.

Compile

Messy intent in. A structured Spool out.

One call extracts sourced terms, surfaces up to three material ambiguities, separates proposed protections, and builds the verification plan.

const spool = await spoolis.compile({
  task: "Get 500 fintech companies
  that raised Series A since
  Jan 2026. Budget $8.",
  budget: 8
})

// spool.terms: extracted, with source
// spool.ambiguities: ranked, max 3
// spool.proposed: Spoolis suggestions
// spool.plan: the verification plan

Extracted terms · from the task

deliverable: company list, csvfrom task
rows.count >= 500from task
round == "Series A"from task
raised_date >= 2026-01-01from task
budget <= $8.00from task

Ambiguities · ranked by materiality

Q1Does "fintech" include insurtech and payments infrastructure?
Q2Is a source URL required per row?

Spoolis proposed · not agreed yet

schema.validate(name, round, date, url)Spoolis proposed
url.reachable(sample: 25)Spoolis proposed

Verify

Run the plan. Get an evidence-backed verdict.

The second call runs each check against the result and returns per-check evidence in a signed, machine-readable verdict. A compatible configured payment path can act on it; if none qualifies, Spoolis refuses instead of falling back silently.

const verdict = await spoolis.verify(spool, result)

verdict.passed // true
verdict.checks // per-check results
verdict.attestation // signed receipt
{
  "spool": "spl_9QW3",
  "verdict": "passed",
  "checks": [
    { "rows.count": "512 >= 500", "pass": true },
    { "schema.validate": "4/4 fields", "pass": true },
    { "url.reachable": "25/25 sampled", "pass": true }
  ],
  "settlement": { "amount": 800, "state": "committed" },
  "signature": "ed25519:9f2c…" // sample
}

Verifier registry

Checks for data, files, commerce, and people.

The compiler picks from a registry of verifiers. Deterministic where possible, human where it matters.

Data

Datasets, lists, research output

rows.countschema.validateurl.reachablejson.path.equalshttp.statustext.containsnulls.absentdedupe.check

Files

Media and document deliverables

dimensions.matchduration.matchesfile.presentmetadata.readhash.matches

Commerce

Physical goods and identity

serial.matchdeadline.metphoto.evidence

Human

Judgment stays human

human.confirmhuman.acceptboth.confirm

API and MCP

One Spool. Any participant.

A human URL, a REST resource, and an MCP tool call read the same canonical state.

● Human

spoolis.com/s/9QW3

// the Spool as a page

● REST

GET /api/v1/spools/9QW3

{
  id: "spl_9QW3",
  amount: 800,
  state: "verification.passed"
}

402 when a machine payment is required

● MCP

compile_spool(task, budget)
get_spool("9QW3")
accept_spool("9QW3")
submit_evidence(…)
verify_spool("9QW3")

every representation reads the same state · spl_9QW3

Try it

See what Spoolis would quote before you commit.

Describe the task. Spoolis compiles the acceptance criteria and verification plan, then shows you the price before anything runs or you agree to use it.

Your task

Buy 100 clean records from the vendor. Reject duplicates and records missing an email field. Budget $2.00.
Task received
Acceptance criteria compiled (3)
Verification plan: deterministic checks per record
Quote ready for review
Spoolis quote Not yet committedwaiting
Waiting to price this task.

The verification plan sets the price.

Two tasks with the same verification plan get the same Spoolis fee, even if the underlying work is worth different amounts.

$20 task$200 task
Work value$20$200
Verification planSameSame
Spoolis quote$0.017$0.017

Work value doesn't set the fee. The verification plan does.

Wire the two calls today.

REST · MCP · signed verdicts · machine-readable quotes
Start building
Spoolis for agent transactions · Spoolis