{"id":"http-outcome","title":"Classify an HTTP response as success, retry, reconcile or stop, with the wait it asks for","description":"Classifies one HTTP response (method, status, headers) as success / retry / reconcile / stop for an agent that just called an API, and reads the wait from Retry-After (RFC 9110: delay-seconds or any of the three HTTP-date formats) or from a vendor delay header whose dialect the caller declares (seconds, milliseconds, epoch seconds, epoch milliseconds, HTTP-date). Caller-supplied vendor rules (status or status range, optional header match) take precedence over the RFC defaults and are cited in the witness. status pass = success; fail = retry, reconcile or stop (see outcome); unknown = the response does not settle it. Does not know any vendor's rules by itself and never reads a timeout as success.","roi":"One rule-cited decision per response instead of ad-hoc status handling in every agent.","audience":"agent-infra","package":"execution-safety-kit","channels":["x402","mcp"],"endpoint":{"method":"POST","url":"https://agents.writerslogic.com/api/v1/http-outcome","path":"/api/v1/http-outcome","contentType":"application/json"},"price":{"amount":"0.005","currency":"USDC","network":"base","perCall":true,"failedCallsCharged":false},"inputSchema":{"type":"object","additionalProperties":false,"required":["method","status"],"properties":{"method":{"type":"string","minLength":1,"maxLength":32},"status":{"type":"integer","minimum":100,"maximum":599},"headers":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["name","value"],"properties":{"name":{"type":"string","minLength":1,"maxLength":100},"value":{"type":"string","maxLength":1000}}},"description":"Response headers as name/value pairs (names compared case-insensitively)."},"delayHeader":{"type":"object","additionalProperties":false,"required":["name","dialect"],"description":"Which header carries the wait and in what dialect. Default is Retry-After under RFC 9110.","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"dialect":{"type":"string","enum":["retry-after","delay-seconds","delay-milliseconds","epoch-seconds","epoch-milliseconds","http-date"]}}},"vendorRules":{"type":"array","maxItems":50,"description":"First matching rule wins.","items":{"type":"object","additionalProperties":false,"required":["outcome"],"properties":{"status":{"type":"integer","minimum":100,"maximum":599},"statusMin":{"type":"integer","minimum":100,"maximum":599},"statusMax":{"type":"integer","minimum":100,"maximum":599},"headerName":{"type":"string","maxLength":100},"headerEquals":{"type":"string","maxLength":1000},"outcome":{"type":"string","enum":["success","retry","reconcile","stop"]},"note":{"type":"string","maxLength":300}}}},"idempotencyKey":{"type":"object","additionalProperties":false,"required":["present"],"properties":{"present":{"type":"boolean"},"serverHonors":{"type":"string","enum":["yes","no","unknown"]}}},"asOf":{"type":"string","maxLength":40,"description":"RFC 3339 instant; needed to turn an HTTP-date or epoch delay into seconds."}}},"resultSchema":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","unknown","unsupported"],"description":"pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass."},"outcome":{"type":"string","enum":["success","retry","reconcile","stop","unknown"]},"source":{"type":"string","description":"'vendor-rule:<index>' or 'rfc9110-default'."},"reason":{"type":"string"},"delaySeconds":{"type":"integer","description":"Wait before the retry, when the delay header was readable."},"delayForm":{"type":"string"},"witnesses":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"detail":{"type":"string"},"path":{"type":"string","description":"JSON pointer or dotted path into the input."},"offset":{"type":"integer"},"index":{"type":"integer"},"expected":{"description":"What the rule required."},"actual":{"description":"What the input had."}}}},"versions":{"type":"object","description":"Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile)."},"limits":{"type":"array","items":{"type":"string"}},"deterministic":{"type":"boolean","description":"Always true: pure code, no model."}}},"outputSchema":{"type":"object","properties":{"data":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","unknown","unsupported"],"description":"pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass."},"outcome":{"type":"string","enum":["success","retry","reconcile","stop","unknown"]},"source":{"type":"string","description":"'vendor-rule:<index>' or 'rfc9110-default'."},"reason":{"type":"string"},"delaySeconds":{"type":"integer","description":"Wait before the retry, when the delay header was readable."},"delayForm":{"type":"string"},"witnesses":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"detail":{"type":"string"},"path":{"type":"string","description":"JSON pointer or dotted path into the input."},"offset":{"type":"integer"},"index":{"type":"integer"},"expected":{"description":"What the rule required."},"actual":{"description":"What the input had."}}}},"versions":{"type":"object","description":"Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile)."},"limits":{"type":"array","items":{"type":"string"}},"deterministic":{"type":"boolean","description":"Always true: pure code, no model."}}},"_provenance":{"type":"object","description":"C2PA-aligned manifest and W3C VC 2.0 (eddsa-jcs-2022) issued by the hub DID; verify at POST /api/v1/verify-provenance"}},"required":["data","_provenance"]},"example":{"method":"GET","status":429,"headers":[{"name":"Retry-After","value":"120"}]},"openapiOperation":{"operationId":"http_outcome","summary":"Classify an HTTP response as success, retry, reconcile or stop, with the wait it asks for","description":"Classifies one HTTP response (method, status, headers) as success / retry / reconcile / stop for an agent that just called an API, and reads the wait from Retry-After (RFC 9110: delay-seconds or any of the three HTTP-date formats) or from a vendor delay header whose dialect the caller declares (seconds, milliseconds, epoch seconds, epoch milliseconds, HTTP-date). Caller-supplied vendor rules (status or status range, optional header match) take precedence over the RFC defaults and are cited in the witness. status pass = success; fail = retry, reconcile or stop (see outcome); unknown = the response does not settle it. Does not know any vendor's rules by itself and never reads a timeout as success.\n\nPrice: 0.005 USDC on Base (x402).","x-x402-price-usdc":"0.005","x-x402-amount":"5000","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.005"}},"x-audience":"agent-infra","x-sample-url":"https://agents.writerslogic.com/api/v1/samples/http-outcome","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["method","status"],"properties":{"method":{"type":"string","minLength":1,"maxLength":32},"status":{"type":"integer","minimum":100,"maximum":599},"headers":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["name","value"],"properties":{"name":{"type":"string","minLength":1,"maxLength":100},"value":{"type":"string","maxLength":1000}}},"description":"Response headers as name/value pairs (names compared case-insensitively)."},"delayHeader":{"type":"object","additionalProperties":false,"required":["name","dialect"],"description":"Which header carries the wait and in what dialect. Default is Retry-After under RFC 9110.","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"dialect":{"type":"string","enum":["retry-after","delay-seconds","delay-milliseconds","epoch-seconds","epoch-milliseconds","http-date"]}}},"vendorRules":{"type":"array","maxItems":50,"description":"First matching rule wins.","items":{"type":"object","additionalProperties":false,"required":["outcome"],"properties":{"status":{"type":"integer","minimum":100,"maximum":599},"statusMin":{"type":"integer","minimum":100,"maximum":599},"statusMax":{"type":"integer","minimum":100,"maximum":599},"headerName":{"type":"string","maxLength":100},"headerEquals":{"type":"string","maxLength":1000},"outcome":{"type":"string","enum":["success","retry","reconcile","stop"]},"note":{"type":"string","maxLength":300}}}},"idempotencyKey":{"type":"object","additionalProperties":false,"required":["present"],"properties":{"present":{"type":"boolean"},"serverHonors":{"type":"string","enum":["yes","no","unknown"]}}},"asOf":{"type":"string","maxLength":40,"description":"RFC 3339 instant; needed to turn an HTTP-date or epoch delay into seconds."}}},"example":{"method":"GET","status":429,"headers":[{"name":"Retry-After","value":"120"}]}}}},"responses":{"200":{"description":"Paid result with provenance","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","unknown","unsupported"],"description":"pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass."},"outcome":{"type":"string","enum":["success","retry","reconcile","stop","unknown"]},"source":{"type":"string","description":"'vendor-rule:<index>' or 'rfc9110-default'."},"reason":{"type":"string"},"delaySeconds":{"type":"integer","description":"Wait before the retry, when the delay header was readable."},"delayForm":{"type":"string"},"witnesses":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"detail":{"type":"string"},"path":{"type":"string","description":"JSON pointer or dotted path into the input."},"offset":{"type":"integer"},"index":{"type":"integer"},"expected":{"description":"What the rule required."},"actual":{"description":"What the input had."}}}},"versions":{"type":"object","description":"Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile)."},"limits":{"type":"array","items":{"type":"string"}},"deterministic":{"type":"boolean","description":"Always true: pure code, no model."}}},"_provenance":{"type":"object","description":"C2PA-aligned manifest and W3C VC 2.0 (eddsa-jcs-2022) issued by the hub DID; verify at POST /api/v1/verify-provenance"}},"required":["data","_provenance"]}}}},"400":{"description":"Invalid request (no payment consumed)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Invalid X-API-KEY","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"402":{"description":"Payment required or invalid","content":{"application/json":{"schema":{"type":"object","description":"x402 v2 PaymentRequired (also base64 in the PAYMENT-REQUIRED header)","properties":{"x402Version":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string"},"resource":{"type":"object"},"accepts":{"type":"array","items":{"type":"object"}},"extensions":{"type":"object"}}}}}},"502":{"description":"Upstream failure; the payment is released or not settled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}}},"links":{"docs":"https://agents.writerslogic.com/docs/http-outcome/","docsJson":"https://agents.writerslogic.com/docs/http-outcome.json","sample":"https://agents.writerslogic.com/api/v1/samples/http-outcome","openapi":"https://agents.writerslogic.com/openapi.json","catalog":"https://agents.writerslogic.com/api/v1/catalog","verifyProvenance":"https://agents.writerslogic.com/api/v1/verify-provenance","index":"https://agents.writerslogic.com/docs/index.json"}}