Skip to content
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.

19 free skills 12 paid skills Pricing →
REST
GET /api/v1/skills/<id>?arg=value
A2A JSON-RPC
POST /a2a — A2A v1 method: SendMessage
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.

verify_passport

Verify an Agent Trust Passport
FREE

Hand us a passport document — we tell you whether it is genuine and when it was anchored.

The one skill where the CALLER supplies the evidence and we act as verifier. Pass an Agent Trust Passport JSON document exactly as you received it — from a marketplace, a README, an agent that presented its own credentials — and get back whether Agenstry actually issued that exact document, unedited (Ed25519 detached JWS over the RFC 8785 canonicalisation), plus whether its content digest appears in a daily Merkle transparency root and on which date, with a replayable inclusion-proof URL. One byte of tampering fails the check. Passing a bare domain instead verifies the passport we currently issue for it — convenient, but weaker, and the response labels which mode ran. Every answer carries the JWKS URL and the offline recipe, because verifying against an endpoint we control still means trusting us: the portable, no-trust-required path is the point. Free.

A2A intent aliases: verify_passport, verify
REST arg: document
Example queries
  • verify_passport: tavily.com
  • verify_passport: {"schema_version":"1.1.0","subject":{"domain":"…"},"signature":"…"}
REST
curl 'https://agenstry.com/api/v1/skills/verify_passport?document=tavily.com'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"text": "verify_passport: 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": "verify_passport","arguments": {"document": "verify_passport: tavily.com"}}}'

agent_passport

Agent Trust Passport
FREE

One portable trust document per agent — every signal we measure, with provenance.

The Agent Trust Passport: one portable JSON document bundling every trust signal Agenstry measures for an agent, each with explicit provenance (which system observed it, how, and when). Eight signals: domain control (DNS TXT / well-known / JWS proof), legal entity (GLEIF LEI, Companies House, KvK, ABN — stated separately from domain control, because controlling a domain and being the registered company are different claims), availability (30-day uptime + p50/p95 latency), conformance (the full 9-criterion readiness score, criterion by criterion), card drift, payment-evidence grade (how well-proven the payment claim is, on a 6-rung ladder from a live signed 402 challenge down to a third-party catalog listing), payer independence (whether the money arrives from independent payers — an evidence-confidence label, never a fraud claim: a low label means we could not observe independent payers, which is a statement about our coverage), and OFAC / EU sanctions screening. Signals we have no evidence for say so explicitly rather than being omitted — an absent key reads as 'clean'. Versioned schema; embeddable SVG badge at /badge/{domain}/passport.svg. Free. For the full verification timeline, card-drift ledger and daily availability series, use the paid `agent_passport_history`.

A2A intent aliases: agent_passport, passport
REST arg: domain
Example queries
  • agent_passport: silas.sylex.ai
  • passport: tavily.com
REST
curl 'https://agenstry.com/api/v1/skills/agent_passport?domain=silas.sylex.ai'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"text": "agent_passport: 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_passport","arguments": {"domain": "agent_passport: silas.sylex.ai"}}}'

payment_overview

Payment ecosystem overview
FREE

Free protocols, sources, pricing and measurement coverage map.

Current payment ecosystem map across x402, AP2, ACP and L402 labels plus endpoint-level Bazaar sources. Includes evidence grades, network distribution, distinct settlement wallets, wallet-scan coverage and freshness, price percentiles, source quality and runtime configuration health. Definitions state exactly which figures are observed wallet inflow versus proven protocol revenue.

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

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' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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, 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' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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_agent, validate
Example queries
  • validate: https://example.com
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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: index_stats, 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' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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 wallet-unique USD-stable inflow snapshot — the data behind the public /flows dashboard. Top-25 recipient ranking by 30d observed inflow with amounts + tx counts, per-category attribution, per-chain breakdown, 7/30/90 day windows, and a 30-day new-recipient signal. Current scanners cover Base, Ethereum, Polygon, Arbitrum, Optimism and Solana. Wallet inflow is not presented as receipt-proven x402 revenue. 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' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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"}}}'

keyword_search_summary

Keyword search: free teaser
FREE

Top-3 agents + canonical-skill matches for one query.

Acquisition surface for the paid ``keyword_search``. Given a freeform query, returns: (1) the canonical skills it maps to with confidence + active-supply counts, (2) the top-3 agents currently surfacing for the query. Same ranker the public search box uses — free with rate limit. Does NOT expose the 30-day search volume, quality stats, or the ``opportunity_signal`` — those live behind the paid ``keyword_search`` skill (Pro / Enterprise / per-call prepaid balance).

A2A intent aliases: keyword_search_summary, kw_summary
REST arg: query
Example queries
  • keyword_search_summary: pdf extraction
  • kw_summary: hotel reservation
REST
curl 'https://agenstry.com/api/v1/skills/keyword_search_summary?query=pdf+extraction'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"text": "keyword_search_summary: pdf extraction"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "keyword_search_summary","arguments": {"query": "keyword_search_summary: pdf extraction"}}}'

supply_gaps_summary

Supply gaps: free teaser
FREE

Top-8 underserved canonical skills with demand bucketed.

Acquisition surface for the paid ``supply_gaps``. Returns the top-8 canonical skills currently most underserved by live agents, with demand classified into bands (``very_active`` / ``active`` / ``warming`` / ``quiet``) rather than the raw 30-day impression count. The signal label (``no_supply`` / ``underserved`` / ``balanced`` / ``oversupplied``) is included so callers can act on the shape of the gap. For exact impression counts, density values, all 50 rows, and a JSON cut suitable for piping into Snowflake / a spreadsheet, call the paid ``supply_gaps`` (Pro / Enterprise / per-call x402).

A2A intent aliases: supply_gaps_summary, gaps_summary
Example queries
  • supply_gaps_summary
  • gaps_summary
REST
curl 'https://agenstry.com/api/v1/skills/supply_gaps_summary?q=supply_gaps_summary'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"text": "supply_gaps_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": "supply_gaps_summary","arguments": {"input": "supply_gaps_summary"}}}'

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' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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 first against a paid plan's monthly included credit, then a Stripe prepaid balance (top up here). Anonymous calls return HTTP 200 with a payment_required body listing the available payment rails. x402 USDC-on-Base settlement is launching; until then included credit + Stripe prepaid 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.6 Terra.

A2A intent aliases: compose, plan, route, compose-llm, plan-llm, route-llm, llm
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' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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 either surface their x402 paymentRequirements so you settle directly (no fee), or — when managed payment is on and your prepaid balance covers it — are paid by us and billed as two separate lines: the downstream cost at cost, plus a 10% orchestration fee. Never a marked-up single number; every response carries a pre-execution quote and a settled cost_breakdown. Bounded at 5 steps per call, $1.00 max per paid step; per-step timeout 25s.

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' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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"}}}'

payment_intelligence

Payment market intelligence
PAID · $0.05/call

Source overlap, concentration, rail mix and data-quality diagnostics.

Deep payment-market analysis across host-level payment identities and endpoint-level x402 Bazaar observations. Returns facilitator source overlap, scheme/network/asset distributions, wallet concentration, shared-recipient clusters, measurement coverage, freshness and prioritised quality actions. Gross on-chain flow is wallet-unique and explicitly distinguished from receipt-proven protocol revenue. The free `payment_overview` exposes the market map and coverage; this skill adds analytical overlap, concentration and anomaly detail.

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

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' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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"}}}'

supply_gaps

Supply gaps: full demand-vs-supply ranking
PAID · $0.03/call

Top-50 underserved canonical skills with exact impressions + density.

Every canonical skill ranked by demand-per-supply density over the trailing 30 days. Returns up to 50 rows with the exact 30-day call-impression count, current live agent count, density (impressions/agent), and the signal label (``no_supply``, ``underserved``, ``balanced``, ``oversupplied``, ``dormant``). The skill the /economy/gaps free teaser is a censored cut of — pay this once and get the raw numbers in one JSON blob suitable for piping into Snowflake / a spreadsheet. Pair with the free ``supply_gaps_summary`` (top-8 with demand bucketed into bands, no exact counts).

A2A intent aliases: supply_gaps, gaps
REST arg: window_days
Example queries
  • supply_gaps
  • supply_gaps: 30
  • gaps: 90
REST
curl 'https://agenstry.com/api/v1/skills/supply_gaps?window_days=supply_gaps'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"text": "supply_gaps"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "supply_gaps","arguments": {"window_days": "supply_gaps"}}}'

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' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"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"}}}'

agent_passport_history

Agent Trust Passport: full history
PAID · $0.03/call

Passport snapshot plus the complete audit history.

Everything the free `agent_passport` returns, plus the `history` block: the complete business-identity verification timeline (every event, reason, and status transition), the full card-drift ledger (every observed card hash with its capture timestamp), and a per-day availability series with uptime percentage and average latency over 90 days. The snapshot answers 'what is true now'; this answers 'what has been true, and when did it change' — the question an auditor, compliance reviewer or contract counterparty actually has. Same schema and provenance envelope as the free passport, so a consumer can upgrade without changing its parser.

A2A intent aliases: agent_passport_history, passport_history
REST arg: domain
Example queries
  • agent_passport_history: silas.sylex.ai
  • passport_history: tavily.com
REST
curl 'https://agenstry.com/api/v1/skills/agent_passport_history?domain=silas.sylex.ai'
A2A JSON-RPC
curl -X POST https://agenstry.com/a2a \
  -H 'Content-Type: application/json' \
  -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc": "2.0","id": "1","method": "SendMessage","params": {"message": {"messageId": "m1","role": "ROLE_USER","parts": [{"text": "agent_passport_history: 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_passport_history","arguments": {"domain": "agent_passport_history: 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.