# Tanod Agentscan x402 Preflight

> Tanod Agentscan x402 Preflight is a paid API for AI agents from tanod.dev, paid per call via x402, $0.001/call, status unknown (last checked 2026-10-19).

Checks whether an x402 endpoint is safe to pay by returning a pay/caution/avoid verdict based on live 402 response, payTo address changes, price outliers, listing age, and farm score.

## Facts

- Endpoint: POST https://tanod.dev/v1/agents/preflight?utm_source=zero.xyz
- Price: $0.001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-19
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tanod-agentscan-x402-preflight-9db01f4f
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_tm3WIeiZfClImPc4NIGcD

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 tanod-agentscan-x402-preflight-9db01f4f -d '<json body>'
```

Example prompt: Before we pay that x402 endpoint at https://api.example.com/v1/weather, run a preflight check on it — flag any payTo address changes or price outliers, and tell me if we should pay, proceed with caution, or avoid it entirely.

## When to prefer this

Use this endpoint whenever an AI agent needs to decide whether to pay an x402 endpoint — especially before a first payment, when encountering an unfamiliar payTo address, when price anomalies are a concern, or when operating under a strict payment policy. It combines live 402 probing with index-based trust signals in a single call, making it more reliable than manually inspecting the 402 response alone.

## Known failure modes

- 422 if the URL is not public HTTPS or resolves to a private/IP address — not charged
- Timeout or unreachable endpoint returns an error verdict
- Unknown or unlisted endpoint may return a caution verdict when require_listed is true
- Non-USDC price options reported as unknown in price assessment

## How this service works

agentscan (Tanod) x402 endpoint preflight: a pay, caution or avoid verdict from the live 402 and the agent index (payTo change, price outlier, listing age, farm score). Use when an agent must decide whether to pay an x402 endpoint: live 402, payTo change, price outlier, listing age.

## Output

Returns a verdict of 'pay', 'caution', or 'avoid' along with flags indicating payTo address changes, whether the price is an outlier compared to the category median, how long the endpoint has been listed, a farm score, and the live 402 response status.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "maxLength": 2048,
   "minLength": 9,
   "description": "The public https URL of the x402 endpoint an agent is about to pay, such as https://api.example.com/v1/weather. Host name only (no IP address), port 443, no user info. It is requested once without payment (GET, or POST when GET answers 404 or 405). A URL that is not public https, or a host that resolves to a private address, is a 422 and is not charged."
  },
  "policy": {
   "anyOf": [
    {
     "type": "object",
     "properties": {
      "strict": {
       "type": "boolean",
       "default": false,
       "description": "Default false; true fails clauses that cannot be judged."
      },
      "networks": {
       "anyOf": [
        {
         "type": "array",
         "items": {
          "type": "string"
         },
         "maxItems": 20,
         "minItems": 1
        },
        {
         "type": "null"
        }
       ],
       "default": null,
       "description": "Allowed networks: CAIP-2 ids or names (base, polygon, solana, bsc, arbitrum, ethereum, optimism, avalanche)."
      },
      "pay_to_deny": {
       "anyOf": [
        {
         "type": "array",
         "items": {
          "type": "string"
         },
         "maxItems": 50,
         "minItems": 1
        },
        {
         "type": "null"
        }
       ],
       "default": null,
       "description": "Denied payTo addresses (at most 50)."
      },
      "pay_to_allow": {
       "anyOf": [
        {
         "type": "array",
         "items": {
          "type": "string"
         },
         "maxItems": 50,
         "minItems": 1
        },
        {
         "type": "null"
        }
       ],
       "default": null,
       "description": "Allowed payTo addresses (EVM or Solana, at most 50)."
      },
      "allow_caution": {
       "type": "boolean",
       "default": true,
       "description": "Default true; false fails a caution verdict. avoid always fails."
      },
      "max_price_usd": {
       "anyOf": [
        {
         "type": "number"
        },
        {
         "type": "string"
        },
        {
         "type": "null"
        }
       ],
       "default": null,
       "description": "Most you will pay per call in USD (\"0.05\"), at most 100. Non-USDC options are unknown."
      },
      "require_listed": {
       "anyOf": [
        {
         "type": "boolean"
        },
        {
         "type": "null"
        }
       ],

… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-agentscan-x402-preflight-9db01f4f/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from tanod.dev](https://www.zero.xyz/host/tanod.dev/llms.txt)
