Daily · version 1
Listings and how many pass
Public listings by kind, and how many passed their latest check. Hidden and rejected listings are left out.
One row per day. 1 row so far.
Daily and weekly numbers from ToolVet's checks of paid APIs and MCP servers: listings, how many pass, uptime, paying wallets, security findings and prices. Free to reuse under CC BY 4.0.
Daily history starts on 16 Oct 2026; the chart appears after the second snapshot. Weekly series start with the first published weekly report.
Each series has a stable URL, as CSV and as JSON with the column descriptions. Files are updated within an hour of new data.
Daily · version 1
Public listings by kind, and how many passed their latest check. Hidden and rejected listings are left out.
One row per day. 1 row so far.
Daily · version 1
Public listings by their uptime over 30 days, per kind. Availability is the share of passed checks over 30 days. Listings without a check in 30 days have no uptime and are left out of the bands.
One row per day and kind (x402, mcp). 2 rows so far.
Daily · version 1
Paid x402 APIs by unique paying wallets over 30 days, from the x402 Bazaar's usage data. Shares on /stats are of with_usage_data.
One row per day. 1 row so far.
Daily · version 1
Public listings the security scan flagged. Counts only; the methodology page lists the rules.
One row per day. 1 row so far.
Weekly · version 1
From each published weekly report: the 8 categories with the most paid APIs (ties go to the category id that sorts first; the "other" category is never ranked), with the median price of the cheapest payment option of the paid APIs in each that have a price above zero.
One row per published weekly report and category (at most 8 per week). No rows yet.
Weekly · version 1
From each published weekly report: the 5 networks with the most paid APIs (ties go to the network id that sorts first); each API counted once, on the network of its cheapest payment option; APIs with no network are left out.
One row per published weekly report and network (at most 5 per week). No rows yet.
Weekly · version 1
From each published weekly report: listings checked that week and how many failed their latest check that week, plus MCP server numbers.
One row per published weekly report. No rows yet.
The files need no key and allow requests from any site. In Python with pandas:
import pandas as pd
listings = pd.read_csv("https://toolvet.app/data/listings.csv", parse_dates=["date"])
listings["share_passing"] = listings["passing"] / listings["listings"]File format
What each column means. A column never changes meaning; new ones go at the end.
| Column | Meaning |
|---|---|
date | UTC day the snapshot was taken (the first snapshot that day). |
listings | Public listings: paid x402 APIs plus remote MCP servers. |
x402_apis | Public paid x402 APIs. |
mcp_servers | Public remote MCP servers. |
passing | Listings passing their latest check. "Passing" means the most recent unpaid test call got a valid answer: an x402 payment challenge, or a working MCP handshake. |
| Column | Meaning |
|---|---|
date | UTC day the snapshot was taken (the first snapshot that day). |
kind | x402 (paid APIs) or mcp (remote MCP servers). |
with_uptime | Listings of this kind with an uptime over 30 days. |
at_least_99_9 | Listings with an uptime of 99.9% or more. |
from_99_to_99_9 | Listings with an uptime of 99% to under 99.9%. |
from_95_to_99 | Listings with an uptime of 95% to under 99%. |
below_95 | Listings with an uptime of under 95%. |
| Column | Meaning |
|---|---|
date | UTC day the snapshot was taken (the first snapshot that day). |
x402_apis | Public paid x402 APIs. |
with_usage_data | Paid APIs the Bazaar reports usage for. |
no_wallets | Paid APIs with usage data and no paying wallet in 30 days. |
one_wallet | Exactly one paying wallet: often just the seller trying their own endpoint. |
two_to_nine_wallets | Two to nine paying wallets in 30 days. |
ten_plus_wallets | Ten or more paying wallets in 30 days. |
| Column | Meaning |
|---|---|
date | UTC day the snapshot was taken (the first snapshot that day). |
scanned | Public listings scanned (every public listing). |
flagged | Listings with at least one finding of any kind. |
prompt_injection | Listings with text that tries to steer an agent (prompt injection). |
| Column | Meaning |
|---|---|
week | ISO week of the published weekly report, in the site's lowercase form, e.g. 2026-w42. |
week_start | First day of the week (Monday, UTC). |
last_day | Last day of the week (Sunday, UTC). |
category | Category id, as in /c/<category>. |
category_name | Category name. |
paid_apis | Public paid x402 APIs in the category. |
median_price_usd | Median price per call in USD of each API's cheapest payment option, over those priced above zero; empty when none is. |
| Column | Meaning |
|---|---|
week | ISO week of the published weekly report, in the site's lowercase form, e.g. 2026-w42. |
week_start | First day of the week (Monday, UTC). |
last_day | Last day of the week (Sunday, UTC). |
network | CAIP-2 network id, e.g. eip155:8453. |
network_name | Network name. |
paid_apis | Public paid x402 APIs whose cheapest payment option is on this network. |
| Column | Meaning |
|---|---|
week | ISO week of the published weekly report, in the site's lowercase form, e.g. 2026-w42. |
week_start | First day of the week (Monday, UTC). |
last_day | Last day of the week (Sunday, UTC). |
checked | Public listings checked at least once that week. |
failing | Of those, listings whose latest check that week failed. |
checks_run | Every check made that week. |
mcp_checked | Remote MCP servers checked that week. |
mcp_answering | MCP servers that answered (a login or payment request counts as answering). |
mcp_median_tools | Median number of tools, over answering servers that listed their tools; empty when none did. |
The data is licensed under CC BY 4.0: reuse it freely, crediting ToolVet with a link to this page. Suggested citation:
ToolVet (2026). x402 and MCP directory history [Data set]. https://toolvet.app/data. Licensed under CC BY 4.0.