# 10x402 x402 Envelope Linter

> 10x402 x402 Envelope Linter is a paid API for AI agents from 10x402.com, paid per call via x402, $0.04/call, status unknown (last checked 2026-09-15).

Lints a raw HTTP 402 response envelope for x402 compliance issues that prevent indexing or discovery in Bazaar, and provides a fix for each finding.

## Facts

- Endpoint: POST https://10x402.com/lint/envelope
- Price: $0.04/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/10x402-x402-envelope-linter-0f91c077
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_ILydrSVr7K5s0_0LWeZS9

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 10x402-x402-envelope-linter-0f91c077 -d '<json body>'
```

Example prompt: My x402 service passes validation but still isn't showing up in Bazaar — can you lint this 402 response envelope and tell me what's blocking it and how to fix each issue? Here's the raw response: {"status": 402, "headers": {"payment-required": "..."}, "body": "..."}

## When to prefer this

Use this endpoint specifically when an x402 service passes basic validation but fails to appear in Bazaar or is not indexed by discovery infrastructure. It is purpose-built for diagnosing response-level x402 envelope issues (v1 vs v2, missing headers, malformed envelopes) rather than general HTTP debugging or payment execution. Prefer this over generic HTTP linters when the issue involves x402 protocol compliance, CDP indexing requirements, or Bazaar discoverability.

## Known failure modes

- Input body exceeds 256 KB limit — request rejected
- Malformed JSON in the 402 response body field — parse error returned
- Missing required fields (type, method, bodyType, body) — validation error
- Non-HTTP type or non-POST method submitted — schema constraint violation
- Service unavailable — HTTP 5xx with no lint report

## How this service works

Check a captured x402 402 for indexing and payment blockers — no fetch

## Output

Returns a JSON lint report containing a letter grade (e.g. 'A'), a summary with detected versions, payTo address, network, price, bazaar_ready status, and a list of blockers; plus a findings array where each finding has a severity, error code, human-readable message, and a detailed fix recommendation; and a total checks_run count.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method",
    "bodyType",
    "body"
   ],
   "properties": {
    "body": {
     "type": "string",
     "maxLength": 262144,
     "description": "a JSON object: { \"status\": 402, \"headers\": { \"payment-required\": \"…\", … }, \"body\": \"…\" }, up to 256 KB"
    },
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "type": "string",
     "const": "POST"
    },
    "bodyType": {
     "type": "string",
     "const": "text"
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type",
    "format"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "text"
    },
    "format": {
     "type": "string",
     "const": "application/json",
     "description": "a JSON lint report: grade, summary, findings[] and checks_run"
    },
    "example": {
     "type": "string",
     "description": "the sample request body above, actually run through this endpoint — or, when that run is larger than a response header should carry, an object naming its size and the free URL it is published at in full"
    }
   },
   "additionalProperties": false
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "text",
 "format": "application/json",
 "example": "{\"grade\":\"A\",\"summary\":{\"versions_detected\":[1],\"payTo\":\"0x0000000000000000000000000000000000000001\",\"network\":\"base\",\"price\":\"$0.001 (1000 atomic)\",\"bazaar_ready\":\"n/a\",\"blockers\":[\"V2_HEADER_PRESENT\"]},\"findings\":[{\"severity\":\"error\",\"code\":\"V2_HEADER_PRESENT\",\"message\":\"no PAYMENT-REQUIRED response header — this endpoint publishes no x402 v2 envelope.\",\"fix\":\"Add a PAYMENT-REQUIRED response header to the 402 carrying the standard-base64 JSON v2 envelope. This costs you DISCOVERY rather than payment, and the distinction is worth being precise about: @x402/core reads the header first but DOES fall back to a v1 body when there is none, so the current client generation can still pay you. What it cannot do is find you — CDP marks the PAYMENT-REQUIRED header a required indexing check, so a v1-only 402 is not catalogued at all, and a strictly-v2 client cannot pay it either. Keep the v1 body exactly as it is; the two versions share a 402 without either noticing the other.\",\"core\":false}],\"checks_run\":28}"
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/10x402-x402-envelope-linter-0f91c077/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from 10x402.com](https://www.zero.xyz/host/10x402.com/llms.txt)
