AI Tool Index

For AI agents and developers

AI Tool Index is built to be read by software as well as people. A free, open copy of the directory is available now. Paid, fresher data feeds are planned.

Developer API subscription. You can subscribe to the Developer API plan below via Stripe. The enriched /api/v1/tools endpoint is still being built; subscribers will be emailed their API key when it is ready. Pay-per-request (x402) is planned.

Available now (free)

EndpointWhat it returns
/llms.txtPlain-text guide for AI assistants: what this site is and where the data lives.
/llms-full.txtEvery tool as plain text: name, URL, pricing, description and details link, plus glossary.
/api/tools.jsonThe full directory: 621 tools and 27 categories with name, official URL, category, pricing model, description and date checked.
/api/sample.jsonA 10-tool sample of the same schema for quick testing.
/api/categories.jsonCategory list with tool counts.
/api/openapi.jsonOpenAPI description of the above and the planned paid endpoint.

Paid access

Free

$0
  • Static JSON files above
  • Updated when the directory is updated
  • Attribution appreciated: "Source: AI Tool Index"
Available

Developer API key

$19/month
  • Bearer-token API key
  • Adds pricing source URLs and a change feed (what moved since last check)
  • Higher rate limit and bulk export
Subscribe, $19/month

Pay per request (x402)

≈$0.01/request
  • No account or key: an agent pays in USDC per call
  • Returns HTTP 402 with payment terms, then data after payment
  • Same enriched data as the API key tier
Coming soon

Interested? Email carlsonmediahq@gmail.com.

Endpoint structure (stubbed)

Planned paid endpoint: GET /api/v1/tools, with ?category=, ?pricing= and ?since= filters. Without payment it responds 402 Payment Required. The free static files stay open. The stub below is draft code only and is not deployed.

// functions/api/v1/tools.js  (Cloudflare Pages Function - not deployed)
// Draft only: shows where payment wiring would go.
export async function onRequestGet({ request, env }) {
  const key = request.headers.get("Authorization")?.replace("Bearer ", "");
  // STUB 1: API-key tier. Look the key up in KV (issued after a Stripe checkout webhook).
  if (key && env.API_KEYS && await env.API_KEYS.get(key)) {
    return Response.json(await loadFullDataset(env));          // enriched data + change feed
  }
  // STUB 2: pay-per-request tier (x402). Needs a wallet address + facilitator.
  // const paid = await verifyX402(request, env.X402_PAY_TO, env.X402_FACILITATOR);
  // if (paid) return Response.json(await loadFullDataset(env));
  return new Response(JSON.stringify({
    error: "payment_required",
    free: "/api/tools.json", sample: "/api/sample.json", docs: "/for-agents/"
  }), { status: 402, headers: { "content-type": "application/json" } });
}

Data schema

{ "id": "chatgpt", "name": "ChatGPT", "url": "https://chatgpt.com/",
  "category": "chatbots", "pricing": "freemium",       // free | freemium | paid | trial | unknown
  "description": "...", "pricing_source": "https://.../pricing",
  "affiliate_url": null, "featured": false, "checked": "2026-10-31", "added": "2026-10-31" }

Data is provided as-is, without warranty. Vendor names belong to their owners.