DEV Community

OrbitalDesk
OrbitalDesk

Posted on Originally published at agent-directory-api.pages.dev

We indexed 39,654 agent listings and put a free API on it

We indexed 39,654 agent listings and put a free API on it

If you want to find an MCP server for a job, you go hunting. There is the official registry. There are two or three community directories that overlap it by half. There are awesome-lists on GitHub that stopped being edited months ago. Skills live somewhere else. Bot templates live somewhere else again. None of them share an ID scheme, and none of them answer a simple question: how many of these things are there, and what kinds?

We counted. On October 1, 2026, we collected the public listings we could find across the main sources and froze them into one snapshot: 39,654 listings. Then we put a key-gated API on it, because a CSV on a disk answers a question once and an API keeps answering it.

What is in the snapshot

The mix is the interesting part:

  • 37,021 MCP servers
  • 1,169 Grok bot templates
  • 948 OpenClaw skills
  • 377 agent projects
  • 139 Hugging Face Spaces

Sources: the official MCP Registry (that portion is dated September 29, 2026), ClawHub, two Grok bot directories, Hugging Face, and two curated awesome-lists. Every record carries 13 fields, including kind, source, category, and collection date. Fields a source could not support are left empty. We did not guess at them.

The API shape

Three routes do most of the work:

  • GET /v1/search takes a full-text query (q) plus filters: kind, source, category, collector, platform. Results page with limit and offset.
  • GET /v1/listings/:id returns one listing by its census ID.
  • GET /v1/stats returns counts by kind, source, collector, and category. It is public. No key needed.

Search and lookup need a key. A free key takes an email address and comes back instantly: 100 requests a day, pages of 25, one key per email. Paid is $19 a month and raises that to 10,000 requests a day with pages of 100.

A real example. This search:

curl "https://agent-directory-api.mrdavesemailaddress.workers.dev/v1/search?q=postgres&kind=MCP%20server&limit=3" \
  -H "Authorization: Bearer <your key>"
Enter fullscreen mode Exit fullscreen mode

returns 81 matching listings. One of the rows:

{
  "id": "ac-03841",
  "name": "ai.getvda/postgres-grafana-stack-generator",
  "kind": "MCP server",
  "category": "MCP server",
  "source": "registry.modelcontextprotocol.io",
  "date_collected": "2026-10-01"
}
Enter fullscreen mode Exit fullscreen mode

That is enough to answer coverage questions ("who lists a Postgres server?"), build a comparison page, or check whether a tool you are about to write already exists under six different names.

The lookup route is the plain version of the same idea. Every listing has a stable census ID, so GET /v1/listings/ac-00101 returns one record (a skill called "Code Autopilot"), and an ID that does not exist returns a 404 instead of an empty object. If you cite a listing in a page or a report, the ID keeps pointing at the same row.

The limits, stated plainly

This is one snapshot from one day. Listings are not live agents. A listing can be stale, moved, or gone, and the snapshot will not tell you which. We merged nothing and deleted nothing: 677 groups of listings share a URL across sources and stay as separate records, because they are separate listings. There are no growth numbers in any of this. A second collection cycle has to exist before anyone gets to draw a trend line, and we will not draw one early.

If you build on it, treat it as a map from October 1, not as a live feed.

Try it

Docs and the free-key form are at https://agent-directory-api.pages.dev. The /v1/stats route is open, so you can check the counts yourself before you hand over an email address. If a number on that page disagrees with a number in this post, the page wins and we want to hear about it.

Top comments (0)