{"openapi": "3.0.3", "info": {"title": "Refusal Desk \u2014 pre-execution task-brief tribunal", "version": "1.0.2", "description": "Every product in this sector builds the yes: faster acceptance, better execution, cheaper retries. The Refusal Desk builds the no \u2014 a pre-execution tribunal that screens an incoming task brief before your agent spends a single token on it: underspecification, internal contradiction, conflict with the principal's standing instructions, or semantic duplication of work the fleet already did. The verdict is a binding, priced object, not an opinion: ACCEPT carries the defect classes checked and cleared plus a failure forecast; REPAIR carries a machine-applied brief diff (field / op / from / to / reason \u2014 never a silent rewrite); REFUSE carries a cause code priced against the execution it prevented; and a brief that re-asks work the fleet already finished comes back DUPLICATE-OF with the prior result attached, across requesters. The Desk grades itself in public: every verdict's forecast is settled against the run's attributed outcome, per-class calibration is published to the buyer, and a forecast miss is a priced event ($0.05, capped at $5.00 per principal per period) \u2014 not a silent error. Proven in the lab: 21/21 tests, every verdict state exercised through a real protocol client, at 0.144 ms and ~$5.6e-10 per check. Documented limits: the Desk is deterministic and LLM-free \u2014 it screens structure, contradictions, standing-instruction conflicts, and semantic duplication against the account's own fleet history; it does not judge whether a well-formed brief is wise. Duplicate detection is semantic-similarity based over the account's own completed-work history for the same principal (work settled as successful through this Desk, with or without a result text), is period/number sensitive (Q3 work is not Q4 work), and can miss heavily rewritten duplicates. Standing-instruction conflicts are checked against the account's stored standing rules in the P45 compiled-entry shape and \u2014 for accounts that link a P45 ledger \u2014 against that ledger consulted live on every check (its active compiled prohibitions; other polarities are counted on the verdict, not enforced here); natural-language rules beyond the compiled pattern shape are not interpreted. The share of fleet spend lost to defective briefs is UNMEASURED \u2014 the lab census found the Lab's own internal briefs only 3.5% intake-defective (brief-first discipline), which cannot validate external demand; no defect-rate or savings figure for real fleets is claimed.", "contact": {"email": "support@textforagents.com"}}, "servers": [{"url": "https://textforagents.com/products/refusal-desk-task-brief-tribunal"}], "security": [{"bearerAuth": []}], "components": {"securitySchemes": {"bearerAuth": {"type": "http", "scheme": "bearer"}}, "schemas": {"Brief": {"type": "object", "properties": {"requester": {"type": "string"}, "principal_id": {"type": "string"}, "title": {"type": "string"}, "goal": {"type": "string"}, "deliverable": {"type": "string"}, "acceptance": {"type": "string"}, "constraints": {"type": "array", "items": {"type": "string"}}, "budget_usd": {"type": "number"}, "tools": {"type": "array", "items": {"type": "string"}}, "deadline_epoch": {"type": "number"}, "estimated_execution_usd": {"type": "number"}}, "required": ["principal_id", "goal"]}, "Verdict": {"type": "object", "properties": {"verdict_id": {"type": "string"}, "state": {"type": "string", "enum": ["ACCEPT", "REPAIR", "REFUSE"]}, "defect_classes": {"type": "array", "items": {"type": "string"}}, "forecast": {"type": "object"}, "repair_diff": {"type": ["array", "null"]}, "refusal": {"type": ["object", "null"]}, "duplicate_of": {"type": ["object", "null"]}, "principal_id": {"type": "string"}, "desk_version": {"type": "string"}, "receipt": {"type": "object"}, "billed_as": {"type": "string"}}}}}, "paths": {"/register": {"post": {"summary": "Self-serve registration {operator, wallet?} -> {account_id, claim_token, payment_instructions}. Unauthenticated, rate-limited.", "security": []}}, "/trial": {"post": {"summary": "Claim the one-time trial {claim_token, wallet?} -> {token, trial_checks: 100}. One grant per account AND per wallet, server-enforced.", "security": []}}, "/check_brief": {"post": {"summary": "Screen a brief {brief, standing_rules?} -> Verdict. Billing order: trial grant, then Fleet quota, then x402 $0.01.", "requestBody": {"content": {"application/json": {"schema": {"type": "object", "properties": {"brief": {"$ref": "#/components/schemas/Brief"}, "standing_rules": {"type": "array"}}}}}}, "responses": {"200": {"description": "Verdict", "content": {"application/json": {"schema": {"type": "object", "properties": {"verdict_id": {"type": "string"}, "state": {"type": "string", "enum": ["ACCEPT", "REPAIR", "REFUSE"]}, "defect_classes": {"type": "array", "items": {"type": "string"}}, "forecast": {"type": "object"}, "repair_diff": {"type": ["array", "null"]}, "refusal": {"type": ["object", "null"]}, "duplicate_of": {"type": ["object", "null"]}, "principal_id": {"type": "string"}, "desk_version": {"type": "string"}, "receipt": {"type": "object"}, "billed_as": {"type": "string"}}}}}}, "402": {"description": "x402 payment required (challenge body)"}}}}, "/duplicate_lookup": {"post": {"summary": "Cross-requester semantic duplicate search {brief} -> {duplicate_of}. +$0.02 x402 per lookup (not covered by trial or Fleet).", "responses": {"200": {"description": "Lookup result"}, "402": {"description": "x402 payment required"}}}}, "/settle_outcome": {"post": {"summary": "Settle a verdict against its outcome {verdict_id, outcome: success|failure, failure_class?, result?, cost_usd?}. Idempotent replay. A forecast miss prices exactly $0.05 against the per-principal per-period cap."}}, "/calibration_report": {"get": {"summary": "Own per-class calibration + miss accounting (account-scoped)."}}, "/standing-rules": {"get": {"summary": "Own standing rules (P45 compiled-entry shape)."}, "post": {"summary": "Set own standing rules {rules: [{id, polarity, pattern, scope}]} \u2014 replaces the account's stored set."}}, "/p45-link": {"get": {"summary": "P45 ledger link state + last live consultation (never returns the stored P45 token)."}, "post": {"summary": "Link {ledger_id, p45_token} \u2014 proven by a live read of the deployed P45 surface before anything is stored \u2014 or {unlink: true}. While linked, every check consults that ledger live and enforces its active compiled prohibitions; the verdict's standing_source attests the ledger version or discloses consulted=false."}}, "/subscribe": {"post": {"summary": "Fleet subscription: X-PAYMENT of $19.00 (x402) -> 5,000 checks/mo quota, 30-day term; renewal extends from the later of now / current expiry."}}, "/account": {"get": {"summary": "Account, plan, trial state, meter (Bearer <redacted>)."}}, "/calibration": {"get": {"summary": "Public aggregate calibration shape (no per-account data).", "security": []}}, "/health": {"get": {"summary": "Health + prices", "security": []}}, "/mcp": {"post": {"summary": "MCP JSON-RPC endpoint (initialize, tools/list, tools/call: check_brief, settle_outcome, duplicate_lookup, calibration_report). Same billing as HTTP."}}}}