Judge
POST /v1/judge takes a task, one agent output, and optional evidence and criteria. The verdict is for your framework to branch on: keep the result, discard it, or run the agent again.
Judge Agent as a Service
Send Screwtape a task and an agent’s output. It returns pass, fail, or retry, a confidence score, and the reasons. Give it several answers to the same task and it scores agreement, including the risk that the agents only agree with each other.
Screwtape.ai is this API. An unrelated arXiv paper is also called Screwtape.
POST /v1/judge takes a task, one agent output, and optional evidence and criteria. The verdict is for your framework to branch on: keep the result, discard it, or run the agent again.
POST /v1/consensus takes several agents’ answers to the same task. You get a consensus answer, an agreement score, and a false-consensus risk when the agreement looks copied or thin.
There is no special SDK. When a step finishes, POST the output the same way any HTTP client would. The curl below is the real request shape.
curl -s https://screwtape.ai/v1/judge \
-H "Authorization: Bearer $SCREWTAPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"task":"State the crew size and launch site.","agent_output":"The crew size was 4. The mission launched from Cape Canaveral.","evidence":["The mission launched on 2024-03-01 from Cape Canaveral.","The crew size was 4."],"criteria":["crew size","Cape Canaveral"]}'
{
"verdict": "pass",
"score": 0.9,
"reasons": [
"2 of 2 claims are grounded in the supplied evidence.",
"2 of 2 criteria matched the output.",
"Deterministic string checks only. No model was called."
],
"engine": "deterministic",
"retention": {
"retained": false
},
"request_id": "8d0c2f1e-6b4a-4e3a-9c1d-2f6a0b7e5d44"
}
curl -s https://screwtape.ai/v1/consensus \
-H "Authorization: Bearer $SCREWTAPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"task":"State the crew size.","answers":[{"agent_id":"alpha","output":"The crew size was 4."},{"agent_id":"beta","output":"The crew size was 4."},{"agent_id":"gamma","output":"The crew size was 4."}]}'
{
"consensus_answer": "The crew size was 4.",
"agreement_score": 1,
"false_consensus_risk": "high",
"reasons": [
"Answers are nearly verbatim. High agreement may be copied rather than independent.",
"Agreement is token overlap, not a model judgment."
],
"clusters": [
{
"size": 3,
"agent_ids": [
"alpha",
"beta",
"gamma"
],
"representative": "The crew size was 4."
}
],
"engine": "deterministic",
"retention": {
"retained": false
},
"request_id": "8d0c2f1e-6b4a-4e3a-9c1d-2f6a0b7e5d44"
}
$0
100 calls per day, per key. Resets at midnight UTC.
$30
10,000 prepaid calls, used after the daily free calls.
$100
50,000 prepaid calls, used after the daily free calls.
$0.005
Per call, no API key. USDC on Base, paid to 0x028Bb9A57B8C27c22f6B39dd00e7eFF1FB60344B.
Card checkout is Stripe test mode only in this version. Live keys are refused. The free key does not need Stripe.
If LLM_API_KEY is unset, Screwtape stays inside the worker: schema checks, claim-versus-evidence token grounding, criteria matching, and agreement scoring. Set a key for Groq, Gemini’s OpenAI-compatible endpoint, or any other no-card free tier, and the same routes call that model instead.
Streamable HTTP at /mcp exposes judge and consensus as tools. The server card is at /.well-known/mcp/server-card.json.
Judged text is not stored unless you set retain to true with an API key. See the privacy policy.