# Unveil Prompt Injection Scanner

> Unveil Prompt Injection Scanner is a paid API for AI agents from unveil.x402utils.workers.dev, paid per call via x402, $0.002/call, status unknown (last checked 2026-10-12).

Scans untrusted text for hidden prompt injection attacks including invisible Unicode, tag-character smuggling, bidi overrides, AI-targeted instructions, and secret-exfiltration patterns before an AI agent processes it

## Facts

- Endpoint: POST https://unveil.x402utils.workers.dev/v1/scan?utm_source=zero.xyz
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-12
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/unveil-prompt-injection-scanner-26a36b19
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_TaQlgPK9gRn4Q7ttGiS4U

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability unveil-prompt-injection-scanner-26a36b19 -d '<json body>'
```

Example prompt: Before you process that user-submitted message, scan it for hidden prompt injection — things like invisible Unicode, tag-character smuggling, or any instructions secretly aimed at you — and tell me if it's safe to read.

## When to prefer this

Choose Unveil when your AI agent needs to safely process text or web content from untrusted sources and you need a pre-flight security check specifically for prompt injection vectors. It is uniquely suited for agentic pipelines where untrusted content (emails, web scrapes, user uploads, API responses) must be sanitized before an LLM reads it. Unlike general content moderation APIs, Unveil specifically targets AI-attack vectors: invisible Unicode, tag-character smuggling, bidi overrides, terminal escapes, HTML comment instructions, CSS-hidden text, and secret exfiltration patterns — returning only SHA256 hashes of matched content so the scanner itself cannot be weaponized.

## Known failure modes

- Text payload exceeds 500 KB limit — request rejected
- Malformed JSON body — 400 error
- Payment not attached or insufficient USDC — 402 Payment Required
- Network timeout for very large payloads
- False negatives on novel obfuscation techniques not yet covered by ruleset

## How this service works

Scan untrusted text or URLs for hidden prompt injection before an AI agent reads them: invisible Unicode, tag-character smuggling, bidi overrides, terminal escapes, instructions in HTML comments or CSS-hidden elements, secret-exfiltration requests, text addressed to AI readers. Matched text is never returned (sha256 only). Paid per call via x402, USDC on Base.

## Output

Returns a JSON object with a top-level verdict (e.g. 'safe', 'dangerous', 'suspicious'), per-severity counts (low/medium/high), and an array of findings each containing line number, column, rule ID, title, severity, detail description, evidence length, and a SHA256 hash of the matched text (the actual matched content is never returned for safety).

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "text": {
   "type": "string",
   "description": "Untrusted text to scan (max 500 KB)"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "counts": {
   "low": 0,
   "high": 1,
   "medium": 0
  },
  "verdict": "dangerous",
  "findings": [
   {
    "line": 1,
    "rule": "UNV002",
    "title": "Unicode tag-character smuggling",
    "column": 6,
    "detail": "16 tag characters decode to a withheld payload",
    "severity": "high",
    "evidence_length": 41,
    "evidence_sha256": "3f1c…"
   }
  ]
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/unveil-prompt-injection-scanner-26a36b19/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from unveil.x402utils.workers.dev](https://www.zero.xyz/host/unveil.x402utils.workers.dev/llms.txt)
