A structured decision, paid per decision.
Give it the situation and the questions; get back probabilities, not prose. Yes or no, one option out of several, or a level on a scale, each with a confidence your agent can act on. Decision models answer in one pass, in tens of milliseconds, for a tenth of a cent.
What it is good for
Routing and classification
Which team, which tool, which model, which queue. One choice question, a probability per option.
Gates and checks
Is this urgent, is this action safe, does the output match the request. A noul question returns the probability of yes.
Grading and triage
How severe, how good, how relevant, on a scale you define. A score question returns the level and the spread.
Decision models are not chat models: they produce no text, only a distribution over the answers you allowed, so they are fast, cheap and hard to derail. For reasoning in prose, use PayperAnswer.
Two models, priced on input only.
Decision models bill the context you send and nothing for the answer. The quote is a ceiling; with a wallet that supports upto, the call settles on the tokens actually counted.
| Model | Tier | Context | 1k tokens of context | 10k tokens |
|---|---|---|---|---|
Clef Flashcloudflare/clef-flash | fast | 24,576 | $0.001 | $0.0011 |
Clefcloudflare/clef | full | 65,536 | $0.001 | $0.0039 |
Price per decision = your input tokens at the provider's list rate, times 1.4, plus half a cent; never under $0.001. Up to 64 questions in one call share that price. Machine-readable: /decide/v1/models.
One request shape, three question types.
The same System One shape the hosted decision models use: a state and a map of typed questions. Any x402 HTTP client can pay it, including Coinbase's wallet from Claude.ai, ChatGPT or Claude Code.
Plain HTTP
Unpaid, this returns 402 with the quote; an x402 client pays and retries.
curl https://payperwork.app/decide/v1/systemone -H 'content-type: application/json' -d '{
"state": "Customer: My order arrived with a cracked screen and I need a replacement before Friday.",
"questions": {
"urgent": { "type": "noul", "instructions": "Does the customer need a response today?" },
"team": { "type": "choice", "instructions": "Which team should handle this?",
"criteria": { "billing": "charges and refunds", "shipping": "delivery and damage", "technical": "product faults" } },
"severity": { "type": "score", "instructions": "How severe is the problem?",
"criteria": ["No impact", "Minor", "Major", "Critical"] }
}
}'The answer
One entry per question id. noul is the probability of yes; choice names the option and gives every option's probability; score is the probability-weighted level, 0 the lowest, with a legend and a probability per level.
{ "model": "cloudflare/clef-flash",
"answers": {
"urgent": { "type": "noul", "noul": 0.93 },
"team": { "type": "choice", "choice": "shipping", "probabilities": { "billing": 0.01, "shipping": 0.97, "technical": 0.02 }, "confidence": 0.96 },
"severity": { "type": "score", "score": 2.1, "legend": { "0": "No impact", "1": "Minor", "2": "Major", "3": "Critical" },
"probabilities": { "0": 0.01, "1": 0.12, "2": 0.63, "3": 0.24 }, "confidence": 0.58 }
},
"usage": { "input_tokens": 118, "output_tokens": 0 },
"payperwork": { "scheme": "upto", "quoted_usd": 0.001, "settled_usd": 0.001 } }MCP, for agents you build
The client must be wrapped with an x402 payment layer (@x402/mcp or the agents package). Off-the-shelf clients connect but cannot pay; an unpaid call returns the price and the HTTP route above.
{ "mcpServers": { "payperwork-decisions": { "type": "streamable-http", "url": "https://payperwork.app/decide/mcp" } } }Full route details in openapi.json and llms.txt. Images are not accepted yet; put the relevant text in state.
What holds for every decision.
Guaranteed
- The price is quoted from your request size before the model runs, and with the upto scheme the call settles on the input tokens actually counted; that quote is the most you pay.
- If the model call fails you are not charged.
- The answer shape is fixed: one entry per question id, with the probabilities the model assigned to the answers you allowed, and nothing else.
- PayperWork does not store states, questions or answers.
Not guaranteed
- Correctness: a decision is the model's probability over your options, not a verified fact. Calibrate thresholds on your own data before acting on one.
- Privacy at the provider: the state and questions go to the model's host and its retention applies.
- Images: not accepted yet; text only.
Let your agent decide for a tenth of a cent.
Probabilities in, actions out. Same wallet as everything else.