# 402utils x402 Endpoint Linter

> 402utils x402 Endpoint Linter is a paid API for AI agents from 402utils.com, paid per call via x402, $0.003/call, status unknown (last checked 2026-09-13).

Probes and audits an x402 payment endpoint for common misconfigurations including description length, schema completeness, host identity, protocol version, and network format issues.

## Facts

- Endpoint: GET https://402utils.com/v1/x402-lint
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/402utils-x402-endpoint-linter-3473e4ad
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_KqSvhrucQV6JZ918C8bSA

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 402utils-x402-endpoint-linter-3473e4ad
```

Example prompt: Before I publish my x402 endpoint at https://myservice.com/v1/query, can you lint it and check for any issues — like whether the description is long enough, the network format is valid, or there are any host mismatches that would cause agents to reject it?

## When to prefer this

Use this endpoint when you need to proactively validate an x402 payment endpoint before deploying or listing it — especially to catch issues like description length (CDP silently rejects short descriptions), missing Bazaar discovery metadata, host identity problems with workers.dev, invalid CAIP-2 network strings, or x402Version mismatches that would cause silent failures at settlement time.

## Known failure modes

- Target URL is not reachable or does not return a 402 response — returns isX402: false with a single info check
- SSRF protection blocks the target URL (private IPs, localhost, internal hostnames)
- Target URL is malformed or not a valid URI — schema validation error
- Network timeout reaching the target x402 endpoint

## How this service works

Micro API utilities for AI agents, priced per call and paid in USDC over the x402 protocol. PDF, screenshot, OG-image and more — no signup, no keys.

## Output

Returns a JSON object with the linted URL, an isX402 boolean, an array of checks each with a rule ID, level (pass/warn/fail/info), and human-readable detail, plus a summary object with total fail and warn counts.

## 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"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "url"
     ],
     "properties": {
      "url": {
       "type": "string",
       "format": "uri",
       "description": "Public http(s) URL of the x402 endpoint to lint (required)."
      }
     },
     "description": "Query string only."
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "url",
      "isX402",
      "checks",
      "summary"
     ],
     "properties": {
      "url": {
       "type": "string",
       "description": "The URL that was linted."
      },
      "checks": {
       "type": "array",
       "items": {
        "type": "object",
        "required": [
         "rule",
         "level",
         "detail"
        ],
        "properties": {
         "rule": {
          "type": "string",
          "description": "Rule id, e.g. description_length, resource_identity, accepts[0].network."
         },
         "level": {
          "enum": [
           "pass",
           "warn",
           "fail",
           "info"
          ],
          "type": "string"
         },
         "detail": {
          "type": "string",
          "description": "Human explanation of the finding."
         }
        }
       }
      },
      "isX402": {
       "type": "boolean",
       "description": "False when the target is not a decodable x402 402 (then a single info check)."
      },
      "summary": {
       "type": "object",
       "required": [
        "fails",
        "warns"
       ],
       "properties": {
        "fails": {
         "type": "integer"
        },
        "warns": {
         "type": "integer"
        }
       }
      }
     }
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "url": "https://402utils.com/v1/rss-to-json",
  "checks": [
   {
    "rule": "x402_version",
    "level": "pass",
    "detail": "x402Version 2."
   },
   {
    "rule": "description_length",
    "level": "pass",
    "detail": "Description 214 chars (< 450)."
   },
   {
    "rule": "resource_identity",
    "level": "pass",
    "detail": "resource.url matches the host you called."
   }
  ],
  "isX402": true,
  "summary": {
   "fails": 0,
   "warns": 0
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/402utils-x402-endpoint-linter-3473e4ad/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from 402utils.com](https://www.zero.xyz/host/402utils.com/llms.txt)
