DOCS · API REFERENCE

API reference

Every skill Agenstry exposes, with curl examples for all three transports. Auto-generated from app.skill_catalog — when we add, rename, or reprice a skill, this page reflects it on the next request. View this page as Markdown for AI consumption.

15 free skills 8 paid skills Pricing →
REST
GET /api/v1/skills/<id>?arg=value
A2A JSON-RPC
POST /a2a — method: message/send
MCP
POST /mcp — method: tools/call

Free skills

Anonymous + rate-limited (60 req/min per IP, 600 with a Pro key). Use these as the discovery + acquisition layer in your router.

match_skill

Match canonical skill
FREE

NL description → canonical skill bucket.

Match a natural-language description to canonical skills in our taxonomy. Multilingual (Dutch / Korean / 100+ langs via E5). Lighter than `compose` — use when you only need the right skill bucket, not the picked agent. Free with rate limit.

A2A intent aliases: skill, match, match_skill
REST arg: query
Example queries
  • skill: convert PDF invoices to structured JSON
  • match: een agent vinden die facturen leest
REST
curl 'https://agenstry.com/api/v1/skills/match_skill?query=convert+PDF+invoices+to+structured+JSON'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "skill: convert PDF invoices to structured JSON"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "match_skill","arguments": {"query": "skill: convert PDF invoices to structured JSON"}}}'

find_agent

Find A2A agent
FREE

Hybrid BM25 + semantic + quality search.

Hybrid BM25 + semantic + quality search across A2A agents. Multilingual queries supported. Free with rate limit; for intelligence on a returned agent, call agent_stats / get_agent_full.

A2A intent aliases: search, find, find_agent
REST arg: query
Example queries
  • find: hotel reservation agent
  • search: blockchain analytics
REST
curl 'https://agenstry.com/api/v1/skills/find_agent?query=hotel+reservation+agent'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "find: hotel reservation agent"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "find_agent","arguments": {"query": "find: hotel reservation agent"}}}'

find_mcp

Find MCP server
FREE

Search MCP servers by freeform query.

Search MCP servers by freeform query — matches name, title, description and exposed tools. Free with rate limit.

A2A intent aliases: mcp, find_mcp
REST arg: query
Example queries
  • mcp: github code search
  • find mcp: postgres database
REST
curl 'https://agenstry.com/api/v1/skills/find_mcp?query=github+code+search'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "mcp: github code search"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "find_mcp","arguments": {"query": "mcp: github code search"}}}'

get_agent

Get agent details
FREE

Free summary card for one agent.

Free summary card: name, description, skills, quality. For audit-grade history + drift + revenue, use the paid `get_agent_full`.

A2A intent aliases: get, agent
REST arg: domain
Example queries
  • get: silas.sylex.ai
REST
curl 'https://agenstry.com/api/v1/skills/get_agent?domain=silas.sylex.ai'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "get: silas.sylex.ai"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "get_agent","arguments": {"domain": "get: silas.sylex.ai"}}}'

validate_agent

Validate agent card
FREE

Probe a candidate URL.

Probe a candidate URL and return validation + live-response check. Mutates the index by upserting the probe result — that's why this skill is JSON-RPC-only (no REST path).

A2A intent aliases: validate
Example queries
  • validate: https://example.com
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "validate: https://example.com"}]}}}'

index_stats

Index stats
FREE

A2A + MCP funnel breakdowns.

Aggregate statistics about the Agenstry index — A2A + MCP funnel breakdowns. Free.

A2A intent aliases: stats, status
Example queries
  • stats
  • status
REST
curl 'https://agenstry.com/api/v1/skills/index_stats?q=stats'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "stats"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "index_stats","arguments": {"input": "stats"}}}'

flows_summary

Money flows — free summary
FREE

Top-line money-flow numbers + 3-name teaser.

Compact top-line numbers for the agent-economy money flow: total gross USDC across all indexed agents (30d), tx count, count of earning agents, and a 3-name teaser of the leaderboard. Identical shape to what powered the /flows hero cards before commit 619fd47 — kept for callers that want the smallest possible response. For the full top-25 + per-category + per-chain + windows, use the also-free `money_flows`. For time-series + weekly cohorts + per-protocol split, use the paid `flow_trends`.

A2A intent aliases: flows_summary, flows_basic, money_flows_summary
Example queries
  • flows_summary
  • flows_basic
REST
curl 'https://agenstry.com/api/v1/skills/flows_summary?q=flows_summary'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "flows_summary"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "flows_summary","arguments": {"input": "flows_summary"}}}'

money_flows

Money flows — full snapshot
FREE

Top-25 ranking + per-category + per-chain + 7/30/90d windows.

Comprehensive on-chain x402 USDC flow snapshot — the data behind the public /flows dashboard. Top-25 ranking by 30d revenue with amounts + tx counts, per-category breakdown, per-chain breakdown, 7/30/90 day side-by-side windowed totals, and a 30-day new-earner growth signal. Sources: every agent we've linked to its public payment wallet on Base + (soon) Solana. Moved from PAID to FREE in this commit — the snapshot itself isn't complex market intelligence, it's a leaderboard. We charge for the *analytical* layer (`flow_trends` = daily series + weekly cohorts + protocol split; `wallet_intel` = per-wallet portfolio) where the data synthesis adds value beyond what /agents/{domain} already publishes per-agent.

A2A intent aliases: money_flows, flows
Example queries
  • money_flows
  • flows
REST
curl 'https://agenstry.com/api/v1/skills/money_flows?q=money_flows'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "money_flows"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "money_flows","arguments": {"input": "money_flows"}}}'

get_agent_full

Agent details — full audit record
FREE

Full snapshot for one agent.

Rich detail snapshot for one agent: card, drift history (last 20 hashes), full verification timeline, current LEI status, capability vector, on-chain payment metadata. Free — same data the public /agents/{domain} page already exposes, so charging for the API wrapper would be paywall theatre. Rate-limited.

A2A intent aliases: get_agent_full, agent_full
REST arg: domain
Example queries
  • agent_full: silas.sylex.ai
  • get_agent_full: tavily.com
REST
curl 'https://agenstry.com/api/v1/skills/get_agent_full?domain=silas.sylex.ai'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "agent_full: silas.sylex.ai"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "get_agent_full","arguments": {"domain": "agent_full: silas.sylex.ai"}}}'

agent_stats

Agent stats
FREE

Uptime + p50 latency + on-chain revenue.

Per-agent observability: uptime over the last 30 days, p50/p95 response time, on-chain x402 USDC revenue across 7/30/90 day windows, drift snapshot count, verification timeline. Free — same data the public /agents/{domain} sparkline + leaderboard already shows. Rate-limited.

A2A intent aliases: agent_stats, stats_for
REST arg: domain
Example queries
  • agent_stats: tavily.com
  • stats_for: api.deepbluebase.xyz
REST
curl 'https://agenstry.com/api/v1/skills/agent_stats?domain=tavily.com'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "agent_stats: tavily.com"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "agent_stats","arguments": {"domain": "agent_stats: tavily.com"}}}'

similar_agents

Similar agents
FREE

Embedding-nearest agents for one domain.

Given an agent domain, returns the top-N agents nearest to it in the embedding space (cosine over unit-norm vectors). Powered by the same `similar_agents_with_scores` repo helper as the public agent-detail page. Each result carries a `similarity` score in [0, 1] and a `via` flag (`embedding` vs `skill_cohort` fallback for agents that haven't been embedded yet). Free, rate-limited.

A2A intent aliases: similar_agents, similar
REST arg: domain
Example queries
  • similar_agents: bitcoinsapi.com
  • similar: api.deepbluebase.xyz
REST
curl 'https://agenstry.com/api/v1/skills/similar_agents?domain=bitcoinsapi.com'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "similar_agents: bitcoinsapi.com"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "similar_agents","arguments": {"domain": "similar_agents: bitcoinsapi.com"}}}'

similar_mcps

Similar MCP servers
FREE

Embedding-nearest MCPs for one server name.

Given an MCP qualified name, returns the top-N MCP servers nearest to it in the embedding space, with a `via` flag so the caller can tell whether the result came from vec0 cosine or the token-overlap fallback. Mirrors the `/api/mcp-servers/{name}/similar` REST endpoint and the in-page section on the MCP detail page. Free, rate-limited.

A2A intent aliases: similar_mcps, similar_mcp
REST arg: name
Example queries
  • similar_mcps: com.stayker/1stay
  • similar_mcp: ai.smithery/flight-search-mcp
REST
curl 'https://agenstry.com/api/v1/skills/similar_mcps?name=com.stayker%2F1stay'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "similar_mcps: com.stayker/1stay"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "similar_mcps","arguments": {"name": "similar_mcps: com.stayker/1stay"}}}'

similar_skills

Related canonical skills
FREE

Embedding-nearest skills for a canonical id.

Given a canonical-skill id, returns the top-N related canonical skills with cosine similarity scores. Useful for skill-graph exploration — if you care about `hospitality.hotel.reservations`, the related list will surface `Lodging and Stays`, `Restaurant and F&B Service`, `Flight Search and Booking` etc. Free, rate-limited.

A2A intent aliases: similar_skills, related_skills
REST arg: skill_id
Example queries
  • similar_skills: hospitality.hotel.reservations
  • related_skills: payments.bitcoin.fee_estimation
REST
curl 'https://agenstry.com/api/v1/skills/similar_skills?skill_id=hospitality.hotel.reservations'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "similar_skills: hospitality.hotel.reservations"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "similar_skills","arguments": {"skill_id": "similar_skills: hospitality.hotel.reservations"}}}'

Paid skills

Per-call USDC pricing — settled via Stripe prepaid balance (top up here) or bundled at $0/call on an Enterprise seat. Anonymous calls return HTTP 200 with a payment_required body listing the available payment rails. x402 USDC-on-Base settlement is launching — until then Stripe prepaid + Enterprise covers all paid calls.

compose

Compose plan
PAID · $0.10/call

Natural-language task → ranked multi-step plan.

Turn a natural-language task into a structured multi-step plan. Decomposes into canonical skills, picks the best A2A agent OR MCP server per step from our index, and returns per-candidate metadata (conformance, verified-owner, uptime, latency, risk, HITL). LLM tool-use loop driven by gpt-5.4-nano.

A2A intent aliases: compose, plan, route
REST arg: task
Example queries
  • compose: schedule an onboarding call with Acme BV and send a prep email
  • compose: estimate bitcoin fee and accept a USDC micropayment
  • plan: quote a hotel room for two in Amsterdam next weekend
REST
curl 'https://agenstry.com/api/v1/skills/compose?task=schedule+an+onboarding+call+with+Acme+BV+and+send+a+prep+email'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "compose: schedule an onboarding call with Acme BV and send a prep email"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "compose","arguments": {"task": "compose: schedule an onboarding call with Acme BV and send a prep email"}}}'

compose_and_execute

Compose plan AND execute it
PAID · $0.10/call

Plan + run the steps end-to-end — managed orchestration.

Like compose, but Agenstry also fans out the plan and calls each step's selected agent for you. Free downstream steps run to completion and their results are merged into the response. Paid downstream steps surface their x402 paymentRequirements per step with a 10% margin marker so the caller can settle directly today (self-pay-and-bill via our platform wallet ships next). Bounded at 5 steps per call; per-step timeout 25s. Returns the plan, per-step execution status, aggregated results, and a total caller cost.

A2A intent aliases: compose_and_execute, execute, run
REST arg: task
Example queries
  • execute: find an A2A agent for invoice extraction and pull its agent card
  • compose_and_execute: search blockchain analytics agents and rank them
  • run: list MCP servers that expose hotel search tools
REST
curl 'https://agenstry.com/api/v1/skills/compose_and_execute?task=find+an+A2A+agent+for+invoice+extraction+and+pull+its+agent+card'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "execute: find an A2A agent for invoice extraction and pull its agent card"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "compose_and_execute","arguments": {"task": "execute: find an A2A agent for invoice extraction and pull its agent card"}}}'

skill_market

Skill market data
PAID · $0.05/call

Per-canonical-skill market shape.

Per-canonical-skill market shape: number of agents serving it, price distribution (min/median/max), quality distribution, growth 30d, top providers ranked by quality.

A2A intent aliases: skill_market, market
REST arg: skill
Example queries
  • skill_market: pdf_extract
  • market: blockchain_analytics
REST
curl 'https://agenstry.com/api/v1/skills/skill_market?skill=pdf_extract'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "skill_market: pdf_extract"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "skill_market","arguments": {"skill": "skill_market: pdf_extract"}}}'

provider_intel

Provider intelligence
PAID · $0.10/call

Per-LEI portfolio + composite trust signal.

Per-provider portfolio + composite trust signal: every agent under one LEI / provider_org, avg quality, verified-card count, signed-card count, jurisdictional metadata, aggregate on-chain revenue across the portfolio.

A2A intent aliases: provider_intel, provider
REST arg: provider
Example queries
  • provider_intel: 549300U4SK7P5XWFXX08
  • provider: tavily
REST
curl 'https://agenstry.com/api/v1/skills/provider_intel?provider=549300U4SK7P5XWFXX08'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "provider_intel: 549300U4SK7P5XWFXX08"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "provider_intel","arguments": {"provider": "provider_intel: 549300U4SK7P5XWFXX08"}}}'

wallet_intel

Wallet intelligence
PAID · $0.10/call

Per-wallet portfolio across the index.

Per-wallet portfolio of every indexed agent that settles into this address. Returns the linked-agent list, 7/30/90 day aggregate inflow, cross-chain presence, and the providers behind the wallet. Pairs with `provider_intel` for the full identity ↔ economics view.

A2A intent aliases: wallet_intel, wallet
REST arg: address
Example queries
  • wallet_intel: 0x0FF5A6ecef783BBA35463ec2F8403B9B5e9e7C86
  • wallet: 0x47ffc880cfF2e8F18fD9567faB5a1fBD217B5552
REST
curl 'https://agenstry.com/api/v1/skills/wallet_intel?address=0x0FF5A6ecef783BBA35463ec2F8403B9B5e9e7C86'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "wallet_intel: 0x0FF5A6ecef783BBA35463ec2F8403B9B5e9e7C86"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "wallet_intel","arguments": {"address": "wallet_intel: 0x0FF5A6ecef783BBA35463ec2F8403B9B5e9e7C86"}}}'

agent_callers

Agent callers — who's calling this agent
PAID · $0.05/call

Per-agent caller breakdown (host / peer / country / surface).

For one agent domain, return the full 30-day caller-attribution breakdown captured by our universal call log: which AI hosts called it (Claude Desktop / Cursor / OpenAI Responses / ChatGPT / n8n / curl / browser), which A2A peer agents called it, caller geography (ISO-2 country), surface mix (a2a / mcp / rest / web / managed_runtime), and the top search intents that surfaced it. The data we uniquely collect — no other registry tracks caller host classification. Designed for one-off competitor research; for cross-platform shift analysis + watchlists + alerts, see the Enterprise tier.

A2A intent aliases: agent_callers, callers
REST arg: domain
Example queries
  • agent_callers: silas.sylex.ai
  • agent_callers: api.deepbluebase.xyz
REST
curl 'https://agenstry.com/api/v1/skills/agent_callers?domain=silas.sylex.ai'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "message/send","params": {"message": {"messageId": "m1","role": "user","parts": [{"kind": "text","text": "agent_callers: silas.sylex.ai"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "agent_callers","arguments": {"domain": "agent_callers: silas.sylex.ai"}}}'

Add a skill

Skills are defined in app/skill_catalog.py — a single Python dataclass per skill. Add an entry there and it appears on this page, in /pricing's paid tile, in /api/v1/skills/<id>, in /a2a's intent grammar, and in /mcp's tools list automatically. Single source of truth, zero template edits.