x402 and MCP directory history

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.

Public listings74,038on 16 Oct 2026
Passing their latest check91.0%67,346 listings
Daily history1 daysince 16 Oct 2026
Weekly reports0none published yet
On this page
  1. Share passing over time
  2. Downloads
  3. Load it
  4. Columns
  5. How to cite
  6. How these are made

Share passing over time

Daily history starts on 16 Oct 2026; the chart appears after the second snapshot. Weekly series start with the first published weekly report.

Downloads

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

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.

CSVJSONColumns

Daily · version 1

Listings by 30-day uptime

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.

CSVJSONColumns

Daily · version 1

Paid APIs by paying wallets

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.

CSVJSONColumns

Daily · version 1

Security scan findings

Public listings the security scan flagged. Counts only; the methodology page lists the rules.

One row per day. 1 row so far.

CSVJSONColumns

Weekly · version 1

Median price per category

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.

CSVJSONColumns

Weekly · version 1

Paid APIs by network

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.

CSVJSONColumns

Weekly · version 1

Weekly checks

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.

CSVJSONColumns

Load it

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

  • The version in a series' JSON file applies to its CSV too.
  • In the CSV, a text value that starts with =, +, -, @, a tab or a carriage return gets a leading apostrophe, so a spreadsheet won't run it as a formula; a plain negative number such as -5 is left as it is. The JSON has the raw values.
  • Weeks use the site's lowercase form, as in report links: 2026-w42.

Columns

What each column means. A column never changes meaning; new ones go at the end.

Listings and how many pass5 columns · listings.csv
ColumnMeaning
dateUTC day the snapshot was taken (the first snapshot that day).
listingsPublic listings: paid x402 APIs plus remote MCP servers.
x402_apisPublic paid x402 APIs.
mcp_serversPublic remote MCP servers.
passingListings 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.
Listings by 30-day uptime7 columns · uptime.csv
ColumnMeaning
dateUTC day the snapshot was taken (the first snapshot that day).
kindx402 (paid APIs) or mcp (remote MCP servers).
with_uptimeListings of this kind with an uptime over 30 days.
at_least_99_9Listings with an uptime of 99.9% or more.
from_99_to_99_9Listings with an uptime of 99% to under 99.9%.
from_95_to_99Listings with an uptime of 95% to under 99%.
below_95Listings with an uptime of under 95%.
Paid APIs by paying wallets7 columns · payers.csv
ColumnMeaning
dateUTC day the snapshot was taken (the first snapshot that day).
x402_apisPublic paid x402 APIs.
with_usage_dataPaid APIs the Bazaar reports usage for.
no_walletsPaid APIs with usage data and no paying wallet in 30 days.
one_walletExactly one paying wallet: often just the seller trying their own endpoint.
two_to_nine_walletsTwo to nine paying wallets in 30 days.
ten_plus_walletsTen or more paying wallets in 30 days.
Security scan findings4 columns · security.csv
ColumnMeaning
dateUTC day the snapshot was taken (the first snapshot that day).
scannedPublic listings scanned (every public listing).
flaggedListings with at least one finding of any kind.
prompt_injectionListings with text that tries to steer an agent (prompt injection).
Median price per category7 columns · prices.csv
ColumnMeaning
weekISO week of the published weekly report, in the site's lowercase form, e.g. 2026-w42.
week_startFirst day of the week (Monday, UTC).
last_dayLast day of the week (Sunday, UTC).
categoryCategory id, as in /c/<category>.
category_nameCategory name.
paid_apisPublic paid x402 APIs in the category.
median_price_usdMedian price per call in USD of each API's cheapest payment option, over those priced above zero; empty when none is.
Paid APIs by network6 columns · networks.csv
ColumnMeaning
weekISO week of the published weekly report, in the site's lowercase form, e.g. 2026-w42.
week_startFirst day of the week (Monday, UTC).
last_dayLast day of the week (Sunday, UTC).
networkCAIP-2 network id, e.g. eip155:8453.
network_nameNetwork name.
paid_apisPublic paid x402 APIs whose cheapest payment option is on this network.
Weekly checks9 columns · checks.csv
ColumnMeaning
weekISO week of the published weekly report, in the site's lowercase form, e.g. 2026-w42.
week_startFirst day of the week (Monday, UTC).
last_dayLast day of the week (Sunday, UTC).
checkedPublic listings checked at least once that week.
failingOf those, listings whose latest check that week failed.
checks_runEvery check made that week.
mcp_checkedRemote MCP servers checked that week.
mcp_answeringMCP servers that answered (a login or payment request counts as answering).
mcp_median_toolsMedian number of tools, over answering servers that listed their tools; empty when none did.

How to cite

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.

How these are made

  • Daily series come from one aggregate snapshot per UTC day: the first one taken that day. A day the site was down has no row; nothing is filled in.
  • Weekly series come from published weekly reports. A withdrawn report is removed from them.
  • Only counts and medians: no row names a listing or provider.
  • A column never changes meaning. When a definition changes, the series' version goes up and the changelog says when and why.
  • How listings are checked and scored: methodology. Today's numbers: statistics.