# x402 API Directory — Paid Agent Endpoints & Usage Stats (`yadroo/x402-endpoints`) Actor

Directory of live x402 (HTTP 402 stablecoin micropayment) API endpoints that AI agents pay for, from Coinbase CDP discovery: search by keyword, tag, category or domain; filter by network, asset, price, 30-day usage and liveness; optional HTTP probe and per-domain rollups.

- **URL**: https://apify.com/yadroo/x402-endpoints.md
- **Developed by:** [Samat Makatov](https://apify.com/yadroo) (community)
- **Categories:** Agents, AI, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 endpoint returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## x402 API Directory — paid agent endpoints with real usage stats

Every x402 endpoint (APIs that charge per call in USDC over HTTP 402) listed in Coinbase's CDP discovery / Bazaar — ~15,000 listings from ~2,000 sellers — flattened into clean JSON with the price in USD, payment networks and assets, method and example input, and the **real 30-day usage** (paid calls, unique payers, last call). Search by keyword, tag, category or domain; filter by network, asset, price and traction; optionally probe each endpoint to confirm it still answers `402`. Aggregate by seller domain for market research. No API key, no browser, no proxy.

### Use cases

- **Tool discovery for agents** — "find a web-search / Twitter / SEC-filings endpoint under $0.01 on Base with ≥5 real payers", then feed `inputExample` / `inputSchema` straight into a tool definition.
- **Competitive pricing** — pull every endpoint in a category (`query: "sentiment"`), compare `priceUsd`, `calls30d`, `payers30d`.
- **Seller lead-gen** — `mode: "domains"` gives the seller list with endpoint counts, 30-day calls and price range; sort by `calls30d` to find who is actually earning.
- **Market sizing / research** — how many endpoints per network, share of Solana vs Base, median price, curated share (see `SUMMARY`).
- **Uptime & liveness monitoring** — schedule `checkLive: true` on your own domain(s) and alert when `isLive` flips to false.
- **New-listing watch** — `updatedWithinDays: 1`, `sortBy: "updated"` on a daily schedule.

### Input

| Field | Type | Default | Notes |
|---|---|---|---|
| `mode` | `endpoints` | `domains` | `endpoints` | `domains` aggregates matching endpoints per host. |
| `query` | string | — | All words must appear in description/tags/service name/category/URL (case-insensitive substring). |
| `category` | string | — | Substring match on the seller-declared category (free-form). |
| `tags` | string\[] | `[]` | Any-of match on seller tags (lower-cased). |
| `domains` / `domain` | string\[] / string | — | Only these hosts (subdomains included). |
| `excludeDomains` | string\[] | `[]` | Drop these hosts. |
| `curatedOnly` | boolean | `false` | Only Coinbase-curated listings (~80). |
| `networks` / `network` | string\[] / string | — | Aliases (`base`, `solana`, `polygon`…), CAIP-2 (`eip155:8453`) or bare chain id (`8453`). See Reference. |
| `excludeTestnets` | boolean | `false` | Drop listings that only accept Base Sepolia / Solana Devnet / Polygon Amoy. |
| `assets` | string\[] | `[]` | Symbols: `USDC`, `USDT`, `USDT0`, `USD1`, `USDG`, `EURC`, `RLUSD`… |
| `minPriceUsd`, `maxPriceUsd` | string/number | — | Per-call price bounds. Endpoints with unknown/non-USD price are excluded when a bound is set. |
| `minPayers` | integer | `1` | Unique payers in the last 30 days. **2+** removes ~73 % of the directory (self-tested listings). |
| `minCalls` | integer | `1` | Paid calls in the last 30 days. |
| `calledWithinDays` | integer | — | Last paid call at most N days ago. |
| `updatedWithinDays` | integer | — | Listing (re)published at most N days ago. |
| `checkLive` | boolean | `false` | HTTP-probe the returned endpoints; adds `liveStatus`, `isLive`, `liveLatencyMs`, `liveNote`. |
| `methods` | string\[] | `[]` | `GET` / `POST` … |
| `sortBy` | enum | `payers` | `payers`, `calls`, `price`, `price_desc`, `recent`, `updated`, `domain`. |
| `limit` | integer 1–5000 | `50` | Endpoints or domains returned. |
| `includeExamples` | boolean | `true` | Keep `inputExample` / `outputExample`. |
| `includeSchemas` | boolean | `false` | Add `inputSchema` / `outputSchema` (JSON Schema from the seller). |
| `includeAccepts` | boolean | `false` | Add `accepts[]` with every payment option. |
| `maxScan` | integer | `20000` | Max listings read (500 per request). |
| `fields` | string\[] | `[]` | Output only these fields (`id` always kept). |

The original inputs `query`, `domain`, `network`, `minPayers`, `minCalls`, `maxPriceUsd`, `sortBy`, `limit` are unchanged.

### Reference

#### Networks (CAIP-2 ids seen in the directory, share of payment options)

| Alias | CAIP-2 | Share | Alias | CAIP-2 | Share |
|---|---|---|---|---|---|
| `base` | `eip155:8453` | 49 % | `worldchain` | `eip155:480` | 3.5 % |
| `solana` | `solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp` | 15 % | `bsc` | `eip155:56` | 3 % |
| `polygon` | `eip155:137` | 8 % | `xlayer` | `eip155:196` | 3 % |
| `arbitrum` | `eip155:42161` | 7 % | `algorand` | `algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=` | 4.5 % |
| `xrpl` | `xrpl:0` | 5 % | `hyperevm` | `eip155:999` | 2.6 % |
| `monad` | `eip155:143` | 5 % | `optimism` | `eip155:10` | 2 % |
| `avalanche` | `eip155:43114` | 2 % | `sei` | `eip155:1329` | 2 % |
| `celo` | `eip155:42220` | 2 % | `stellar` | `stellar:pubnet` | 2 % |
| `base-sepolia` (testnet) | `eip155:84532` | 1.5 % | `ethereum` | `eip155:1` | <1 % |
| `hedera` | `hedera:mainnet` | <1 % | `hyperliquid` | `hyperliquid:mainnet` | <1 % |
| `noble` | `cosmos:noble-1` | <1 % | `lightning` | `lightning:mainnet` | <1 % |

Also recognised: `unichain` (eip155:130), `sonic` (146), `xdc` (50), `etherlink` (42793), `peaq` (3338), `megaeth` (4326), `xrpl-evm` (1440000), `solana-devnet`, `polygon-amoy`, `animica`, `zeroclick`, `alipay`. Legacy names some sellers still publish (`base`, `solana`, `polygon`) are normalised to CAIP-2 in the output.

#### Assets (resolved from the on-chain address; decimals used for `priceUsd`)

USDC on all EVM chains + Solana + Algorand ASA 31566704 + Noble `uusdc` + Stellar + Hedera + Hyperliquid (6–7 dec) · USDT (Base, Polygon, Solana 6 dec; BSC 18 dec) · USDT0 (X Layer) · USD1 (World Liberty, BSC, 18 dec) · USDG (Global Dollar) · USDU (United Stables) · USDm · RLUSD and USDC on XRPL · EURC (Base) · JPYC (Polygon) · XRP, XLM, SOL, ANM (non-USD → `priceUsd: null`). When a seller publishes `extra.totalUsd` that value wins.

#### Categories & tags (seller-declared, free-form)

Top categories: `AI`, `finance`, `agent-ops-math`, `chain-primitives-local`, `utility`, `Infra`, `trading-signals`, `search`, `signal-normalize`, `sports`, `api`, `data-provider`, `marketing`, `financial-data`, `defi`, `domain-intelligence`, `security`, `social`, `news`, `prediction-markets`, `sec-filings`, `weather`. Only ~1,200 of 15k listings declare a category — prefer `query` for recall.

Top tags: `crypto`, `base`, `defi`, `x402`, `search`, `twitter`, `market-data`, `web`, `data`, `research`, `usdc`, `sec`, `hyperliquid`, `analytics`, `oracle`, `reddit`, `github`, `x`, `agents`, `smart-money`, `ai`, `on-chain`, `price`, `gas`, `compliance`, `company`, `derivatives`, `llm`, `trading`, `ethereum`, `social`, `risk`, `bitcoin`, `sanctions`, `enrichment`, `edgar`, `weather`, `travel`, `funding-rate`, `wallet`, `ofac`.

#### Directory shape (snapshot, Sept 2026)

14,632 listings · 1,972 hosts · 81 curated · unique payers (30d): 1 → 73 %, 2–4 → 20 %, 5–19 → 5.5 %, 20–99 → 0.7 %, 100+ → 32 endpoints · methods: GET 54 %, POST 46 %.

### Examples

**Cheap, proven web-search / Twitter tools for an agent (Base or Solana)**

```json
{ "query": "twitter", "networks": ["base", "solana"], "minPayers": 3, "maxPriceUsd": "0.05", "checkLive": true, "sortBy": "calls", "limit": 12, "includeExamples": false }
```

**Seller landscape — who actually earns**

```json
{ "mode": "domains", "minPayers": 5, "excludeTestnets": true, "limit": 100 }
```

**Compliance / sanctions endpoints with tool schemas**

```json
{ "tags": ["sanctions", "ofac", "compliance"], "minPayers": 2, "includeSchemas": true }
```

**Curated only, most expensive first**

```json
{ "curatedOnly": true, "sortBy": "price_desc", "minPayers": 0, "minCalls": 0 }
```

**Monitor my own listings**

```json
{ "domains": ["api.mycompany.com"], "minPayers": 0, "minCalls": 0, "checkLive": true, "fields": ["url", "priceUsd", "payers30d", "calls30d", "lastCalledAt", "isLive", "liveStatus", "liveLatencyMs"] }
```

**New listings in the last 24 h**

```json
{ "updatedWithinDays": 1, "sortBy": "updated", "minPayers": 0, "minCalls": 0, "limit": 200 }
```

### Output

`mode: "endpoints"` — one item per endpoint (trimmed):

```json
{
  "id": "b9a43b48",
  "url": "https://api.onesource.io/api/chain/erc20-balance",
  "domain": "api.onesource.io",
  "path": "/api/chain/erc20-balance",
  "serviceName": null,
  "description": "ERC20 token balance for any Ethereum wallet ... via balanceOf (eth_call)",
  "category": null,
  "tags": [],
  "type": "http",
  "method": "GET",
  "inputExample": { "method": "GET", "queryParams": { "address": "0xd8da...", "contract": "0xdac1...", "network": "ethereum" }, "type": "http" },
  "outputExample": { "data": { "balance": "1234567890", "symbol": "USDT" } },
  "priceUsd": 0.003, "priceMinUsd": 0.003, "priceMaxUsd": 0.003,
  "asset": "USDC", "network": "eip155:8453", "networkName": "Base",
  "networks": ["eip155:8453"], "networkNames": ["Base"], "assets": ["USDC"], "schemes": ["exact", "batch-settlement"],
  "payTo": "0x52E29e0d2Aa49bfBfC548C0A9F2196F4aa51f3ea",
  "calls30d": 1077, "payers30d": 1070, "lastCalledAt": "2026-09-12T18:37:41.411Z", "daysSinceLastCall": 0.2,
  "curated": false, "bundleSlugs": [], "iconUrl": null, "x402Version": 1,
  "lastUpdated": "2026-09-12T20:01:11.000Z",
  "discoveryUrl": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
  "fetchedAt": "2026-09-12T23:40:02.041Z"
}
```

| Field | Meaning |
|---|---|
| `id` | Stable hash of the URL. |
| `url`, `domain`, `path` | Endpoint address split for grouping. |
| `serviceName`, `description`, `category`, `tags` | Seller metadata (tags lower-cased). |
| `method`, `inputExample`, `outputExample` | From the Bazaar extension; `inputSchema` / `outputSchema` with `includeSchemas`. |
| `priceUsd` | Price of the primary USD-stablecoin option; `priceMinUsd` / `priceMaxUsd` across all options; `null` if unknown or non-USD. |
| `asset`, `network`, `networkName`, `payTo` | Primary payment option; `networks`, `networkNames`, `assets`, `schemes` list every option; `accepts[]` with `includeAccepts`. |
| `calls30d`, `payers30d`, `lastCalledAt`, `daysSinceLastCall` | Facilitator usage stats. |
| `curated`, `bundleSlugs`, `iconUrl`, `x402Version`, `lastUpdated` | Listing metadata. |
| `liveStatus`, `isLive`, `liveLatencyMs`, `liveNote` | Only with `checkLive`. `isLive` = answered HTTP 402. |

`mode: "domains"` — one item per host: `domain`, `endpoints`, `serviceNames`, `categories`, `topTags`, `calls30d` (sum), `payers30dMax`, `payers30dSum`, `priceMinUsd`/`priceMaxUsd`/`priceMedianUsd`, `networks`, `assets`, `curatedEndpoints`, `lastCalledAt`, `lastUpdated`, `sampleUrls` (top-3 by payers), `fetchedAt`.

Key-value store `SUMMARY`: directory total, listings scanned, matched, criteria used.

### Use it from code / agents

```bash
curl -X POST "https://api.apify.com/v2/acts/yadroo~x402-endpoints/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' -d '{"query":"web search","minPayers":3,"maxPriceUsd":"0.02"}'
```

```js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('yadroo/x402-endpoints').call({ mode: 'domains', minPayers: 5, limit: 100 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

```python
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("yadroo/x402-endpoints").call(run_input={"tags": ["sec", "edgar"], "includeSchemas": True})
items = client.dataset(run["defaultDatasetId"]).list_items().items
```

MCP: connect `https://mcp.apify.com` and call the `yadroo/x402-endpoints` tool with the same JSON — an agent can discover a paid tool, read `inputSchema`, and pay for it in one loop.

### Pricing

Pay per event: **$0.001 per run start + $0.001 per item returned** (endpoint or domain row). The default run (50 endpoints) costs $0.051; a 500-row market scan $0.501. The whole directory is read on every run regardless of `limit` (30 requests, ~40–60 s) — cost only depends on rows returned, so use `limit` and filters.

### Limits & FAQ

- **Freshness** — read live from Coinbase CDP discovery on every run; usage stats are the facilitator's rolling 30-day counters.
- **Coverage** — only endpoints registered with the Coinbase facilitator / Bazaar. x402 servers using other facilitators are not listed.
- **Price accuracy** — computed from the raw token amount and the asset's decimals (dictionary above). Unknown assets → `priceUsd: null`; set `includeAccepts` to see the raw amount.
- **Liveness probe** — one unpaid request per returned endpoint (GET, or POST with `{}`), 10 s timeout, 6 in parallel. A healthy endpoint answers 402; `200` means it served without payment; `404`/`5xx`/timeout means dead or moved. Nothing is paid.
- **Rate limits / errors** — the discovery API is retried 4× with backoff on 429/5xx; the run fails with a clear error if it stays unavailable.
- **Memory** — pages are shaped and filtered as they stream, so the full 15k scan fits the 512 MB default.
- **Roadmap** — historical snapshots (price/usage deltas between runs), facilitator-agnostic sources, category normalisation.

***

Made by **Yadroo** — more data actors for agents: [wallet-intel](https://apify.com/yadroo/wallet-intel) · [base-token-intel](https://apify.com/yadroo/base-token-intel) · [dexscreener-tokens](https://apify.com/yadroo/dexscreener-tokens) · [coingecko-markets](https://apify.com/yadroo/coingecko-markets) · [defillama-protocols](https://apify.com/yadroo/defillama-protocols) · [crypto-news](https://apify.com/yadroo/crypto-news)

# Actor input Schema

## `mode` (type: `string`):

endpoints = one item per x402 resource. domains = group matching endpoints by host with totals (calls, payers, price range) — the seller list for lead-gen and market sizing.

## `query` (type: `string`):

Keywords matched against description, tags, service name, category and URL (all words must match, case-insensitive substring). Empty = no text filter.

## `category` (type: `string`):

Seller-declared Bazaar category, substring match (free-form; common values: AI, finance, search, trading-signals, defi, data-provider, utility, Infra, sports, marketing, security, social). See README.

## `tags` (type: `array`):

Keep endpoints carrying at least one of these tags, e.g. \["twitter","x"] or \["sec","edgar"]. Tags are lower-cased seller strings; see README for the most common ones.

## `domains` (type: `array`):

Only endpoints on these hosts (subdomains included), e.g. \["api.nansen.ai","stableenrich.dev"].

## `excludeDomains` (type: `array`):

Drop endpoints on these hosts (subdomains included). Handy to remove noisy self-listed sellers.

## `domain` (type: `string`):

Same as domains with one value; kept for backward compatibility.

## `curatedOnly` (type: `boolean`):

Only listings Coinbase marked as curated (~80 in the directory).

## `networks` (type: `array`):

Payment networks accepted. Use aliases (base, solana, polygon, arbitrum, optimism, ethereum, bsc, avalanche, celo, worldchain, monad, xlayer, hyperevm, sei, xrpl, stellar, algorand, hedera, hyperliquid, noble, lightning) or CAIP-2 ids (eip155:8453) or a bare EVM chain id (8453).

## `network` (type: `string`):

Same as networks with one value, e.g. eip155:8453. Kept for backward compatibility.

## `excludeTestnets` (type: `boolean`):

Drop endpoints that only accept Base Sepolia / Solana Devnet / Polygon Amoy payments.

## `assets` (type: `array`):

Asset symbols, e.g. \["USDC"], \["USDT","USDT0"], \["EURC"]. Resolved from the on-chain address via the built-in dictionary (see README).

## `minPriceUsd` (type: `string`):

Only endpoints priced at or above this amount per call, e.g. "0.01". Empty = no floor.

## `maxPriceUsd` (type: `string`):

Only endpoints priced at or below this amount per call, e.g. "0.05". Endpoints with unknown/non-USD price are excluded when set. Empty = no cap.

## `minPayers` (type: `integer`):

Only endpoints with at least this many unique payers in the last 30 days. Use 2+ to skip self-tested listings, 5+ for real traction.

## `minCalls` (type: `integer`):

Only endpoints with at least this many paid calls in the last 30 days.

## `calledWithinDays` (type: `integer`):

Liveness by usage: keep endpoints whose last paid call is at most N days old (e.g. 7). Empty/0 = no filter.

## `updatedWithinDays` (type: `integer`):

Keep listings whose metadata was (re)published at most N days ago. Empty/0 = no filter.

## `checkLive` (type: `boolean`):

After filtering, send one unpaid request to each returned endpoint and record liveStatus / isLive (true when it answers 402 Payment Required) / liveLatencyMs / liveNote. Adds ~1-10 s per 50 endpoints; only the returned rows are probed.

## `methods` (type: `array`):

Keep endpoints whose declared method is one of these (GET, POST). Empty = all.

## `sortBy` (type: `string`):

Ordering of results.

## `limit` (type: `integer`):

Maximum endpoints (or domains) to return.

## `includeExamples` (type: `boolean`):

Keep inputExample (method, query/body example) and outputExample from the seller Bazaar metadata. Turn off for a compact catalog.

## `includeSchemas` (type: `boolean`):

Add inputSchema / outputSchema (seller-declared JSON Schema) — useful to auto-generate tool definitions for agents. Can be large.

## `includeAccepts` (type: `boolean`):

Add accepts\[] with every payment option (scheme, network, asset, raw amount, USD price, payTo). Default output keeps only the primary USD option.

## `maxScan` (type: `integer`):

Upper bound on directory listings read (500 per request). The whole directory is ~15k; with minPayers >= 2 the scan stops early automatically.

## `fields` (type: `array`):

Return only these fields (id always kept). See README Output table for names.

## Actor input object example

```json
{
  "mode": "endpoints",
  "query": "web search",
  "tags": [],
  "domains": [],
  "excludeDomains": [],
  "curatedOnly": false,
  "networks": [],
  "excludeTestnets": false,
  "assets": [],
  "minPayers": 1,
  "minCalls": 1,
  "checkLive": false,
  "methods": [],
  "sortBy": "payers",
  "limit": 50,
  "includeExamples": true,
  "includeSchemas": false,
  "includeAccepts": false,
  "maxScan": 20000,
  "fields": []
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "query": "web search",
    "tags": [],
    "domains": [],
    "excludeDomains": [],
    "networks": [],
    "assets": [],
    "methods": [],
    "fields": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("yadroo/x402-endpoints").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "query": "web search",
    "tags": [],
    "domains": [],
    "excludeDomains": [],
    "networks": [],
    "assets": [],
    "methods": [],
    "fields": [],
}

# Run the Actor and wait for it to finish
run = client.actor("yadroo/x402-endpoints").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "query": "web search",
  "tags": [],
  "domains": [],
  "excludeDomains": [],
  "networks": [],
  "assets": [],
  "methods": [],
  "fields": []
}' |
apify call yadroo/x402-endpoints --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,yadroo/x402-endpoints"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Y141OPqb8y6uCmMGg/builds/a1GjmSP4AGchfNBZM/openapi.json
