# Tanod agentscan

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

Queries a daily-refreshed cross-registry index of x402 payment endpoints and MCP servers with filters for source, category, network, price range, and name/URL substring

## Facts

- Endpoint: POST https://tanod.dev/v1/agents/query?utm_source=zero.xyz
- Price: $0.02/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-11
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tanod-agentscan-1f849b9d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_0kQjrABeCXfhmL3pLKLyQ

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-1f849b9d -d '<json body>'
```

Example prompt: Search the Tanod agentscan index for x402 endpoints in the 'data' category on the base network priced between $0.01 and $0.05, show me the first 20 results.

## When to prefer this

Use this endpoint when you need to discover or search x402 payment endpoints and MCP servers across multiple public registries in a single query, especially when filtering by network (e.g. base, solana), category, source, or price range. Prefer this over manual registry browsing when you want structured, paginated, cross-registry results with price metadata in a machine-readable format.

## Known failure modes

- No results returned if filters are too restrictive or no matching records exist in the current snapshot
- Payment failure if USDC balance is insufficient for the $0.02 per-call fee
- Invalid filter values (e.g. unknown source or network strings) may return empty result sets silently
- page or page_size out of allowed bounds returns a validation error
- q substring longer than 128 characters is rejected
- Stale data if the daily index has not yet refreshed

## How this service works

One MCP server and HTTP API with 193 pay-per-call tools for AI agents (security checks, chain data, finance, aviation, documents), plus free uptime and MikroTik monitoring and 130+ free browser tools. No signup; free daily tier. Operated by an AI.

## Output

Returns a paginated snapshot of indexed endpoint records matching the applied filters, including endpoint names, URLs, categories, networks, source registries, and per-call prices in USD. Results reflect the most recent daily cross-registry snapshot.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "q": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 128
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Case-insensitive substring of name or url."
  },
  "page": {
   "type": "integer",
   "default": 1,
   "maximum": 100000,
   "minimum": 1,
   "description": "1-based page number."
  },
  "source": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 64
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Filter: exact source id (e.g. cdp_bazaar, payai)."
  },
  "network": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 64
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Filter: exact network (e.g. base, solana)."
  },
  "category": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 64
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Filter: exact category."
  },
  "page_size": {
   "type": "integer",
   "default": 50,
   "maximum": 100,
   "minimum": 1,
   "description": "Rows per page (hard cap 100)."
  },
  "exclude_farms": {
   "type": "boolean",
   "default": false,
   "description": "Optional, default false: drop listings on hosts flagged as listing farms (>= 100 listings and a score >= 0.5 from templated paths, near-duplicate descriptions and one payTo spread over many hosts). A statistical flag on public listing data, not a judgement about any host."
  },
  "max_price_usd": {
   "anyOf": [
    {
     "type": "number",
     "minimum": 0
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Filter: price_usd <= this."
  },
  "min_price_usd": {
   "anyOf": [
    {
     "type": "number",
     "minimum": 0
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Filter: price_usd >= this."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "note": "Aggregated public-registry data, not an endorsement of any listed endpoint.",
  "page": 1,
  "count": 1,
  "records": [
   {
    "id": "resource-123",
    "url": "https://api.example.com/x402",
    "name": "Example x402 endpoint",
    "source": "cdp_bazaar",
    "network": "base",
    "category": "x402",
    "last_seen": "2026-10-07",
    "price_usd": 0.01,
    "first_seen": "2026-10-05"
   }
  ],
  "has_more": false,
  "page_size": 50
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-agentscan-1f849b9d/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)
