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.

20 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

No key needed to start: anonymous calls get 30 req/min per IP and 200 skill calls a day. A free API key lifts the daily cap (60 req/min); Pro gets 600 req/min. 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": "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": "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'
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": {}}}'

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": {"description": "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": "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": "github code search"}}}'

get_agent

Get agent details
FREE

Free summary card for one agent.

Free summary card: name, description, skills, quality. For the audit-grade record (drift history, verification timeline, LEI status, payment metadata), use `get_agent_full` — also free.

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": "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'
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": {}}}'

flows_summary

Money flows: free summary
FREE

Receipt counts, measurement coverage, wallet distribution and top recipients.

Compact top-line numbers for the agent-economy money flow: total observed wallet inflow (30d), transfer counts, positive versus zero and unmeasured listings by service type, unique recipient wallets, receipt-size distribution and concentration, plus three top recipients. These observations do not establish paid tasks or market-wide success rates. 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'
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": {}}}'

a2a_earnings

A2A earnings: observed wallet inflow
FREE

A2A-linked wallets, coverage and shared-service attribution.

Free 30-day A2A-linked wallet ranking with measurement coverage, zero versus unmeasured listings, receipt-size distribution, concentration, shared-wallet warnings, declared providers and scan dates. Inbound USDC is not audited revenue, profit or proof of paid A2A tasks. A2A labels are not certification. For linked-service portfolios, discovery sources and payer-pattern analysis, use the paid payment_intelligence skill.

A2A intent aliases: a2a_earnings, a2a_income
Example queries
  • a2a_earnings
  • a2a_income
REST
curl 'https://agenstry.com/api/v1/skills/a2a_earnings'
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": "a2a_earnings"}]}}}'
MCP
curl -X POST https://agenstry.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "2.0","id": "1","method": "tools/call","params": {"name": "a2a_earnings","arguments": {}}}'

money_flows

Money flows: full snapshot
FREE

Who receives money, coverage, receipt sizes + rankings and 7/30/90d windows.

Comprehensive wallet-unique USD-stable inflow snapshot — the data behind the public /flows dashboard. Receipt coverage by service type, measured-zero versus unmeasured listings, receipt-size distribution, median and top-10 concentration. 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. For historical trends use `flow_trends`; for one wallet use `wallet_intel`.

A2A intent aliases: money_flows, flows
Example queries
  • money_flows
  • flows
REST
curl 'https://agenstry.com/api/v1/skills/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": {}}}'

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": "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": "tavily.com"}}}'

keyword_search_summary

Keyword search: free overview
FREE

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

Given a query, returns matching canonical skills, active-supply counts and three matching agents. Free with rate limits. For search volume and quality signals, use ``keyword_search``.

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": "pdf extraction"}}}'

supply_gaps_summary

Supply gaps: free overview
FREE

Top-8 underserved canonical skills with demand bucketed.

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 and up to 50 rows, use ``supply_gaps``.

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'
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": {}}}'

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": "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": "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": "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 it into canonical skills by embedding similarity, 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). Deterministic — no LLM is involved. The `compose-llm:` intent (MCP: mode=llm) runs the same task through an OpenAI gpt-6-luna tool-use loop instead, for signed-in callers within a daily quota, where the operator has enabled it; it falls back to the deterministic plan if the model is unavailable. Same per-call price either way.

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": "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 A2A agent for you. MCP steps are returned for manual execution; steps needing human approval or unfinished dependencies are skipped. 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": "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. Pass a canonical skill ID or exact name returned by match_skill; arbitrary search text is not a skill ID.

A2A intent aliases: skill_market, market
REST arg: skill
Example queries
  • skill_market: payments.bitcoin.fee_estimation
  • market: payments.bitcoin.transactions
REST
curl 'https://agenstry.com/api/v1/skills/skill_market?skill=payments.bitcoin.fee_estimation'
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: payments.bitcoin.fee_estimation"}]}}}'
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": "payments.bitcoin.fee_estimation"}}}'

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": "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. Includes A2A-linked wallet portfolios, declared provider/category listing counts, discovery sources, and fresh payer patterns with explicit warnings when evidence snapshots differ.

A2A intent aliases: payment_intelligence, payments_deep
Example queries
  • payment_intelligence
  • payments_deep
REST
curl 'https://agenstry.com/api/v1/skills/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": {}}}'

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": "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``). Returns exact figures as JSON. For a shorter overview with demand bands, use the free ``supply_gaps_summary``.

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=30'
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": "30"}}}'

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. For cross-platform comparisons, watchlists and 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": "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": "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.