{"openapi":"3.1.0","info":{"title":"Sentinel — pre-payment address screening for agents","description":"Screen an EVM address BEFORE you pay it. OFAC sanctions match, known-bad labels (mixers, drainers, exploits, ransomware, phishing), lookalike / address-poisoning detection and live on-chain hygiene — in one call, no account, no API key, paid per call in USDC over x402.","version":"1.0.0","x-guidance":"Pay-per-call API. Every paid route is priced in USDC and settles over x402 with no account, API key or signup. Call the endpoint without payment and it returns 402 with a base64 JSON challenge in the Payment-Required response header; the body carries the same challenge. Sign an exact-amount USDC transfer for the accepts[0] network and payTo, then retry the identical request with that payload in the PAYMENT-SIGNATURE header. Request and response shapes are in each operation's requestBody and x-payment-info, and the full price list is at GET /v1/pricing.","contact":{"url":"https://sentinel.pentest.i.ng/docs"}},"paths":{"/v1/lookup":{"get":{"summary":"Screen Get","operationId":"screen_get_v1_lookup_get","parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string","description":"0x-prefixed 20-byte EVM address","title":"Address"},"description":"0x-prefixed 20-byte EVM address"},{"name":"chain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"base|ethereum","title":"Chain"},"description":"base|ethereum"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required. Challenge delivered in the Payment-Required header (base64 JSON) and in the body for non-json clients.","headers":{"Payment-Required":{"description":"base64-encoded x402 v2 payment challenge","schema":{"type":"string"}}}}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.02"},"network":"eip155:8453","asset":"USDC","payTo":"0xA2b36c0B392a6bef0Bf73f95EF00c46E004b6B0b","scheme":"exact","maxTimeoutSeconds":300,"resource":"https://sentinel.pentest.i.ng/v1/lookup"}}},"/v1/screen":{"post":{"summary":"Screen Post","operationId":"screen_post_v1_screen_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required. Challenge delivered in the Payment-Required header (base64 JSON) and in the body for non-json clients.","headers":{"Payment-Required":{"description":"base64-encoded x402 v2 payment challenge","schema":{"type":"string"}}}}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.02"},"network":"eip155:8453","asset":"USDC","payTo":"0xA2b36c0B392a6bef0Bf73f95EF00c46E004b6B0b","scheme":"exact","maxTimeoutSeconds":300,"resource":"https://sentinel.pentest.i.ng/v1/screen"}}},"/v1/screen/batch":{"post":{"summary":"Screen Batch","operationId":"screen_batch_v1_screen_batch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required. Challenge delivered in the Payment-Required header (base64 JSON) and in the body for non-json clients.","headers":{"Payment-Required":{"description":"base64-encoded x402 v2 payment challenge","schema":{"type":"string"}}}}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.10"},"network":"eip155:8453","asset":"USDC","payTo":"0xA2b36c0B392a6bef0Bf73f95EF00c46E004b6B0b","scheme":"exact","maxTimeoutSeconds":300,"resource":"https://sentinel.pentest.i.ng/v1/screen/batch"}}}},"components":{"schemas":{"BatchRequest":{"properties":{"addresses":{"items":{"type":"string"},"type":"array","maxItems":25,"minItems":1,"title":"Addresses","description":"1-25 EVM addresses to screen in one paid call","examples":[["0x0330070FD38Ec3bB94F58FA55D40368271E9e54A"]]},"chain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chain","description":"Chain to read","examples":["base"]}},"type":"object","required":["addresses"],"title":"BatchRequest","description":"Body for POST /v1/screen/batch."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ScreenRequest":{"properties":{"address":{"type":"string","title":"Address","description":"0x-prefixed 20-byte EVM address to screen","examples":["0x0330070FD38Ec3bB94F58FA55D40368271E9e54A"]},"chain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chain","description":"Chain to read live on-chain facts from","examples":["base"]}},"type":"object","required":["address"],"title":"ScreenRequest","description":"Body for POST /v1/screen. Declared as a model so the OpenAPI document\ncarries a real input schema — without it a catalogue auditor reports\nL3_INPUT_SCHEMA_MISSING and an agent can see the price but not build the call."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"x-discovery":{"ownershipProofs":["0xA2b36c0B392a6bef0Bf73f95EF00c46E004b6B0b"]}}