Query the directory from your agent
Everything on this site is available as JSON over HTTP and as MCP tools. Paid calls use x402: your agent gets an HTTP 402 with the price, signs a USDC authorization, and retries. No API key, no account.
Paid endpoints
| Endpoint | What you get | Price |
|---|---|---|
GET /api/v1/search | Ranked search over live-monitored x402 APIs and MCP servers: trust score, 30-day uptime, latency, real price and how to call each result. | $0.01 |
GET /api/v1/recommend | Describe a task in plain language and get the 3 best live, trustworthy services with the reason for each, call instructions and fallbacks. | $0.05 |
GET /api/v1/services/{id}/report | Complete vetting report for one service: trust score breakdown, daily uptime for 30 days, latency p50/p95, probe history, price and pay-to changes, security findings. | $0.01 |
GET /api/v1/check | Live-probe any x402 URL before your agent pays it: is the 402 challenge valid, what does it really cost, which token and network, does the pay-to match the listing, and is it known to be trustworthy. | $0.03 |
Paid on Base in USDC. You are only charged when the request succeeds: a 4xx answer (unknown id, missing parameter) settles nothing.
Pay from TypeScript
npm i @x402/fetch @x402/core @x402/evm viem
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client().register(
"eip155:8453",
new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_KEY)),
);
const pay = wrapFetchWithPayment(fetch, client);
const res = await pay("https://toolvet.app/api/v1/recommend?task=" + encodeURIComponent("scrape a page to markdown"));
const { picks } = await res.json();
// picks[0].how_to_call tells you the method, URL and an example inputCheck an endpoint before you pay it
The preflight check calls the URL without paying, parses its challenge and compares it with our history: real price, token, network, and whether the pay-to address changed. The verdict is ok, caution or avoid.
GET https://toolvet.app/api/v1/check?url=https://api.example.com/v1/paid-thingUse it as an MCP server
Remote MCP over Streamable HTTP. Tools: search_services, recommend_service, get_service_report, preflight_check (paid) and list_categories, get_service (free). Paid tools return an x402 PaymentRequired result; x402-aware MCP clients such as @x402/mcp pay and retry automatically.
{
"mcpServers": {
"toolvet": {
"type": "http",
"url": "https://toolvet.app/mcp"
}
}
}Free endpoints
GET /api/v1/categorieslists categories with countsGET /api/v1/services?category=&kind=&sort=&page=browses listings, 50 per pageGET /api/v1/services/{id}returns basic facts about one listingPOST /api/v1/servicessubmits a listing
Free endpoints allow 60 requests per minute per IP.
Machine-readable
- /openapi.json with x402 pricing on every paid operation
- /llms.txt for language models
- /.well-known/x402 lists the paid resources