MCP reference
The market-intelligence layer for the commercial agent economy. It tracks public AI agents, MCP servers and APIs — capabilities, integrations, observed pricing and how the market moves. Humans use the directory; agents and orchestrators use the MCP below. Reads are keyless and rate-limited; the one write is correlated, not gated.
quickstart
Claude Code — one command:
claude mcp add --transport http agentery https://agentery.com/api/mcp
Or in JSON config (.mcp.json in your project root, or ~/.claude.json) — "type" accepts "http" or its alias "streamable-http":
{
"mcpServers": {
"agentery": {
"type": "http",
"url": "https://agentery.com/api/mcp"
}
}
}Claude Desktop / claude.ai — remote servers are added as connectors: Settings → Connectors → Add custom connector, then paste the endpoint URL above. No authentication needed.
Cursor — .cursor/mcp.json in your project (or ~/.cursor/mcp.json globally):
{
"mcpServers": {
"agentery": {
"url": "https://agentery.com/api/mcp"
}
}
}Anything else — it’s plain streamable-HTTP JSON-RPC; verify from any shell:
curl -X POST https://agentery.com/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'A machine-readable server card is at https://agentery.com/.well-known/mcp.json.
the 10-tool MCP reference
Ten public tools, no auth. One partner-only engine gated by a Bearer key (request access).
Partner-only — rank_agents_for_workflow: ranked agent candidates for each step of a business workflow, scored with reasons and cautions. Same request shape, with an Authorization: Bearer <key> header.
Public tools are rate-limited to 30 tool calls per minute per IP. Reciprocity: callers with 5+ correlated report_outcome reports in the last 30 days get 60 calls per minute instead. Requests with a valid partner key are never rate-limited.
examples
List the tools:
curl -X POST https://agentery.com/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Search by capability under a price ceiling, cheapest first (public):
curl -X POST https://agentery.com/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"search_agents","arguments":{
"query":"customer support agent with Zendesk integration",
"max_monthly_usd":50,"billing":["freemium","subscription"],
"sort":"price_asc","limit":10}}}'Benchmark what a niche normally costs (public):
curl -X POST https://agentery.com/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"price_benchmark","arguments":{"sector":"legal"}}}'Compare a shortlist side by side, with upvotes (public):
curl -X POST https://agentery.com/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"compare_agents","arguments":{
"agent_ids":["openhands","devin"]}}}'Find under-served niches in a sector (public):
curl -X POST https://agentery.com/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"market_gaps","arguments":{"sector":"finance","limit":10}}}'Fetch one agent’s directory card (public):
curl -X POST https://agentery.com/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"get_agent","arguments":{"handle":"openhands"}}}'Full evidence-scored profile for one agent (public):
curl -X POST https://agentery.com/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"get_agent_profile","arguments":{"agent_id":"openhands"}}}'Cheaper substitutes for an agent you’re already looking at (public):
curl -X POST https://agentery.com/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"suggest_alternatives","arguments":{
"agent_id":"openhands","cheaper_only":true,"limit":5}}}'Deep-dive one niche — founder card, pricing snapshot, top agents (public):
curl -X POST https://agentery.com/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"niche_report","arguments":{"niche":"ai-phishing-detection"}}}'What is being searched for that doesn’t exist yet (public):
curl -X POST https://agentery.com/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"demand_signals","arguments":{"limit":20}}}'Report how a listing worked out after you used it (public):
curl -X POST https://agentery.com/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"report_outcome","arguments":{
"agent_id":"openhands","outcome":"worked",
"task_type":"code-review","latency_ms":8200}}}'liveness
Agents in search_agents results, get_agent_profile, compare_agents and suggest_alternatives carry a liveness object: is the agent’s endpoint actually up? Endpoints (MCP / A2A preferred, else the site) are probed daily; probed: false means we have not probed that agent yet.
"liveness": {
"probed": true,
"alive": true, // latest check on the best endpoint
"endpoint_kind": "mcp", // mcp | a2a | site
"latency_ms": 412,
"uptime_7d": 0.98, // share of successful checks, last 7 days
"checked_at": "2026-07-01T04:30:00Z"
}how_to_connect
Every card carries how_to_connect — the endpoint/config needed to actually use the listing, not just read about it. get_agent_profile and compare_agents return the full object; search_agents and suggest_alternatives return a compact one (website, docs, mcp.endpoint). Every URL comes from the vendor’s own published data — fields are null when unknown, never guessed.
"how_to_connect": {
"website": "https://example-agent.com",
"docs": "https://docs.example-agent.com",
"mcp": { // only when the vendor publishes an MCP endpoint
"endpoint": "https://mcp.example-agent.com/mcp",
"transport": "http",
"config_snippet": "{\n \"mcpServers\": {\n \"example-agent\": {\n \"url\": \"https://mcp.example-agent.com/mcp\"\n }\n }\n}"
},
"a2a": { "card_url": "https://example-agent.com/.well-known/agent.json" },
"api": { "docs_url": "https://docs.example-agent.com/api", "endpoint": null },
"protocols": ["MCP", "A2A"],
"note": null // set when protocols are declared but no endpoint is published
}config_snippet is the copy-paste JSON for MCP clients (Claude, Cursor, …), serialized as a string.
observed pricing
Where a public price was readable on the vendor’s site, agents carry a price object. This is observed public pricing — what we could read, evidence-scored — not a definitive vendor quote.
"price": {
"observed": true,
"billing": "freemium", // subscription | freemium | usage | one-time | contact_sales | free
"currency": "USD",
"lowest_monthly_usd": 19, // lowest paid monthly tier, normalized
"summary": "Free tier; paid plans from $19/mo.",
"confidence": "high", // high | medium | low
"source_url": "https://example.com/pricing",
"checked_at": "2026-06-29T04:10:00Z"
}When we checked and found no public price, observed is false with a billing of not_found / login_gated. A null price means we have not checked. Prices are re-scanned daily and a history is kept, so movement is trackable.
Profile and comparison cards also carry price_extras: a parsed free-tier quota (e.g. 100 calls/month) and a metered unit cost (e.g. $0.002 per request) where the plan copy states one — both null when the text isn’t explicit.
price_benchmark also returns an index object — the Agent Economy Price Index: a chained, like-for-like daily price index (base 100 = first scan, 28 Jun 2026) computed only from agents priced on consecutive scan days, so composition changes can’t move it. niche_report adds movement, a 7-day decomposition of which agents repriced vs entered/left the priced set, and an index_series for the niche. At whole-economy scope price_benchmark also returns index_by_tier — the same index tracked separately for the Individual / Pro / Team & SME / Enterprise tiers (null when a niche or sector filter is given: per-tier slices of a filtered sample would be fake precision at current sample sizes). Each is null when the data is too thin.
report_outcome is correlated against your own recent retrievals — only matched reports count, and reported_success surfaces only once 5+ distinct correlated reporters exist in the 90-day window. Below that it’s null, never a thin guess. Identity is a sha256 hash of your IP (or an x-agentery-key header).
Prices are recorded daily; endpoints probed daily; the index rebased from consecutive-day scans. Every response carries a checked_at / observed_at timestamp so answers are citable and dated.
what we track per agent
Inputs, outputs, capabilities, vector support, integration type (MCP / API / SDK / web / …), observed pricing & price history, niche & category, evidence type and a confidence score, plus a source URL and last-checked date. Every field is evidence-scored, never invented.
list your agent
Building a commercial agent, MCP server or agent tool? Add it to the index at /submit. We list public, commercial agent products — not individual private instances.