agentery
Docs

Documentation.

Setup, tools, parameters, responses and errors for MCP, REST and A2A.

Setup

Three interfaces share one set of handlers, so the same question returns the same answer. Public reads need no account or key.

MCP

Server URL https://agentery.com/api/mcp. Streamable HTTP with JSON responses, protocol 2025-03-26. Your client discovers the tools with tools/list.

Claude Code — Run once in your terminal.
claude mcp add --transport http agentery https://agentery.com/api/mcp
Cursor · Windsurf — Add to your MCP settings file (Cursor: ~/.cursor/mcp.json).
{
  "mcpServers": {
    "agentery": {
      "url": "https://agentery.com/api/mcp"
    }
  }
}
Claude Desktop · claude.ai — Settings → Connectors → Add custom connector, then paste the URL.
https://agentery.com/api/mcp
VS Code (Copilot) — Add to .vscode/mcp.json in your workspace, or to your user mcp.json. Format from VS Code's MCP configuration reference.
{
  "servers": {
    "agentery": {
      "type": "http",
      "url": "https://agentery.com/api/mcp"
    }
  }
}
Codex CLI — Run once in your terminal. It writes [mcp_servers.agentery] to ~/.codex/config.toml.
codex mcp add agentery --url https://agentery.com/api/mcp
Gemini CLI — Run once. -s user saves it for all projects; Gemini CLI only starts servers in folders you trust.
gemini mcp add --transport http -s user agentery https://agentery.com/api/mcp
Any MCP client — Streamable HTTP, JSON responses, no account or key.
curl -s https://agentery.com/api/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

REST

Base URL https://agentery.com/api/v1. Plain GET requests returning JSON, with CORS enabled. The OpenAPI description is at /api/v1/openapi.json (version 1.21.0).

1 · Search by task — Free-text description of the job.
curl "https://agentery.com/api/v1/search?q=customer%20support%20chatbot&limit=5"
2 · Inspect a product — Use an agent_id from the search results.
curl "https://agentery.com/api/v1/agent/chat_thing"
3 · Compare the shortlist — Two to six ids, comma-separated.
curl "https://agentery.com/api/v1/compare?ids=chat_thing,chatbase"
OpenAPI — Every path and parameter.
curl "https://agentery.com/api/v1/openapi.json"

A2A

Agent Card at https://agentery.com/.well-known/agent-card.json. JSON-RPC endpoint https://agentery.com/api/a2a, protocol versions 1.0 and 0.3. Messages are plain text such as search: …, profile: … or compare: a, b, or JSON naming a skill and its arguments.

1 · Read the Agent Card — Skills, examples and the JSON-RPC endpoint.
curl "https://agentery.com/.well-known/agent-card.json"
2 · Send a message — JSON-RPC message/send to the advertised endpoint.
curl -s https://agentery.com/api/a2a \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":"1","method":"message/send","params":{"message":{"role":"user","messageId":"docs-example-1","parts":[{"kind":"text","text":"compare: chat_thing, chatbase"}]}}}'

Available tools

24 MCP tools. A typical journey is search_providers → get_provider_profile → compare_providers; add get_group_fair_price when the question is what a service should cost. Four tools write, and only to your own outcome reports or private benchmarks.

Choose a service

Search by task, inspect evidence, compare a shortlist.

  • search_providersUse when someone wants to find or shortlist AI products, AI agents, MCP servers or APIs for a task, e.g.
  • get_provider_profileUse to check one specific listing before recommending or connecting it: plans and prices with billing units, what it does, integrations, deployment (hosted / self_hosted / both / unknown, with evidence), licence (named licence only), liveness and how to connect (website, docs, MCP endpoint with a copy-paste config_snippet, A2A agent card, API, install).
  • compare_providersUse to compare 2–6 shortlisted listings side by side — plan-level prices (e.g.
  • suggest_alternativesFind related alternatives to a known provider, ranked by text-embedding nearness to that provider's OWN profile (NO category lookup), each with observed price, endpoint liveness, community upvotes and how_to_connect (website, docs, mcp endpoint).
  • find_marketUse when someone asks what a kind of product typically costs or who competes in a space, e.g.
  • research_capabilityUse for a quick first overview of a buying task in one call: the closest-matching listings (matched on what they do, no fixed categories), the price range and median for comparable products (with n), and a shortlist with observed prices, market_position (below / in line / above market) and handles in compare_ready for compare_providers.
  • refine_resultswriteUse when an earlier search_providers or research_capability answer missed what was meant: pass its request_ref and the correction in plain words (e.g.
  • get_providerCall this for the public directory card of one provider by handle or registration number: bio, source URLs, X-verification status, entity type, community rating and structured profile when available.

Check a price

Fair market prices and benchmarks for comparable services.

  • get_group_fair_priceUse to check what a product of a given kind typically costs: give a task or product type (or a group_id from the group price league) and get its product group's fair price for each buyer tier (individual, pro, team / small business, enterprise) — the median entry monthly price in that tier with its typical range — plus which payment models the group typically uses (free, subscription, usage, one-time, contact sales), usage and one-time medians where at least 3 listings publish them, and the group's price-index change over 90 days.
  • price_benchmarkUse to judge whether a price is fair or what a capability typically costs, e.g.
  • market_reportDeep-dive ONE market before building or investing — the market is the semantic neighbourhood of your natural-language query (nearest providers by text embedding, NO fixed category).

Follow the market

The Agent Economy Price Index and market signals.

  • get_price_indexUse when asked whether prices of AI agents, tools or MCP servers are rising or falling overall.
  • get_price_index_historyUse to show how AI agent and MCP prices have moved over time: the dated Agent Economy Price Index series, the same chained like-for-like series agentery.com/aepi charts.
  • market_gapsUse when a seller or investor asks which tasks people look for that few paid products serve.
  • demand_signalsInspect eligible zero-result or weak-match capability queries observed on this MCP server, aggregated and ranked by miss count.

Research a question

One specific question about one product, answered with sources.

  • request_researchwriteUse when a buying decision hinges on one specific fact about one listing that its profile does not settle, e.g.
  • get_researchStatus and result of a research job created by request_research.
  • stop_research_updateswriteStop watching a research job (the result stays retrievable with get_research).

Private benchmarks

Your own peer cohort. The cb_ token returned on creation is the only key.

  • create_custom_benchmarkwriteUse when someone wants to keep watching the prices of products they choose (e.g.
  • get_custom_benchmarkGet a private custom benchmark's current report: members, current stats (headline median/quartiles only when ≥3 comparable priced members — monthly, per-seat and per-call prices are never blended), buyer-tier / provider-type / pricing-unit cohorts, historical index, and data coverage.
  • update_custom_benchmarkwriteAdd/remove members or rename a custom benchmark.
  • delete_custom_benchmarkwriteDisable access to a custom benchmark. Keeps only a minimal audit record; no underlying Agentery data is touched.

Feedback

Report how a listed provider worked after you used it.

  • report_outcomewriteReport the result of ACTUALLY USING a listed provider for a task.

Partner only

Needs a Bearer key; public callers receive an error naming the public alternatives.

  • rank_providers_for_workflowPARTNER-ONLY (Bearer key required). Given a business context and its workflow steps, return ranked provider candidates for EACH step — structured, scored (match_score 0-100) matches with match_reasons and cautions.

REST endpoints

  • GET /searchFind providers for a described job (same as MCP search_providers)
  • GET /agent/{handle}Full evidence profile for one provider (same as MCP get_provider_profile)
  • GET /compareCompare 2–6 providers side by side (same as MCP compare_providers)
  • GET /alternativesRelated alternatives to a known provider (same as MCP suggest_alternatives)
  • GET /priceObserved price benchmark for a task or market (same as MCP price_benchmark)
  • GET /price-indexCurrent AEPI level and 1d/7d/30d change (same as MCP get_price_index)
  • GET /price-index/historyDated AEPI series (same as MCP get_price_index_history)
  • GET /moversDay/week/month index change per niche and tier
  • GET /gapsDemand clusters with weak paid supply
  • GET /niche/{slug}Measured report for one market
  • GET /demandZero-result capability queries seen here (honest insufficient_evidence when none)
  • GET /indicesAEPI plus companion and sector indices

A2A skills

  • search_providersFind providers for a job. Free-text search over indexed AI agents, MCP servers, APIs and platforms with observed prices, evidenced deployment model (hosted / self-run / both / unknown) and connection details.
  • get_provider_profileInspect a provider. Full evidence profile for one provider: plans and observed price (null when unobserved, never zero), liveness, deployment and licence evidence with source URL and age, how_to_connect (website, docs, MCP endpoint, install line, repository).
  • compare_providersCompare a shortlist. 2–6 providers side by side with plan-level prices.
  • suggest_alternativesFind alternatives. Related alternatives to a known provider ranked by nearness to its own profile, each with observed price, liveness, deployment and connection details; optional cheaper_only.
  • price_benchmarkBenchmark prices for a task. Observed price distribution (median, quartiles, counts, reliability) for a task or market, per buyer tier.
  • get_price_indexAgent Economy Price Index (AEPI). Current AEPI level with 1d/7d/30d change for the whole economy, a buyer tier or a market, plus the dated history on request (skill get_price_index_history).

Parameters

Inputs as published in tools/list and the OpenAPI description. Open a tool to see its parameters.

MCP tools

search_providers

Use when someone wants to find or shortlist AI products, AI agents, MCP servers or APIs for a task, e.g. 'AI tool that transcribes sales calls' or 'MCP server to reply to Zendesk tickets'. Returns ranked candidates with what each does, a fit label (match / partial / weak, naming any mismatch), delivery type, price status (known / free / contact_sales / unknown; unknown is never free) and links. Requirements in the wording are checked per result; unverified ones are marked unknown. Results are candidates to check: open strong ones with get_provider_profile and compare finalists with compare_providers. Thin coverage returns no_match, never padding.

ParameterTypeDescription
queryrequiredstringREQUIRED. Free-text description of the product job you are buying, e.g. 'customer support provider with Zendesk integration' or 'supplier invoice reconciliation'. Not for questions about Agentery itself (upvotes, endpoints): those return status unsupported_request.
filtersobjectOptional: industry_fit[], integrations_available[], entity_type[] (agent|tool|infrastructure|service|marketplace|content-community), autonomy_level[] (assistant|workflow automation|agentic|infrastructure), minimum_evidence_quality (low|medium|high)
max_monthly_usdnumberDrop providers whose observed lowest paid tier exceeds this (USD/month). Providers with no observed public price still pass unless require_public_price is true.
require_public_pricebooleanOnly return providers with an observed public price (default false)
billingarrayOnly providers with one of these observed billing models, e.g. ["free","freemium","subscription","usage"]
sortstringmatch (default) or price_asc (cheapest observed price first; unpriced providers last)
One of: match price_asc
provider_typestringFilter to one provider type — the audited classification dimension (same as the website type chips and AEPI facets); result labels always match this filter. Omit for all types.
One of: agent mcp api platform infrastructure
deploymentstringOptional (1.10.0). Keep only providers whose EVIDENCED deployment model matches: hosted = a vendor-published MCP endpoint exists (connect, nothing to install); self_hosted = a published install line (npx/uvx/docker/pip/git clone) and no vendor endpoint; both = both are documented; unknown = no evidence held. 'both' listings satisfy hosted and self_hosted. Evidence comes from the vendor's own pages and source directories (Glama/MCP registry attributes) — never guessed from a repository's existence.
One of: hosted self_hosted both unknown
limitnumberMax results (1-50, default 20)
request_refstringOptional task reference (rq_ + 12 hex) from an earlier answer. Continues that task: its remembered facts (quantities, budget, requirements, benchmark selection) apply to this call, and the answer keeps the same request_ref.
get_provider_profile

Use to check one specific listing before recommending or connecting it: plans and prices with billing units, what it does, integrations, deployment (hosted / self_hosted / both / unknown, with evidence), licence (named licence only), liveness and how to connect (website, docs, MCP endpoint with a copy-paste config_snippet, A2A agent card, API, install). Fields are null when the vendor publishes nothing; nothing is guessed. price_applies_to flags a stored price that belongs to the vendor's platform rather than this connector. product_group names the listing's product group with its fair price per buyer tier and 90-day price-index change. reported_success stays null until 5+ distinct reporters in 90 days; after actually using a listing, call report_outcome.

ParameterTypeDescription
provider_idrequiredstringThe provider_id/handle returned by search_providers or compare_providers
compare_providers

Use to compare 2–6 shortlisted listings side by side — plan-level prices (e.g. the Pro tier), capabilities, deployment, licence and how to connect — or to check a quote against alternatives. Inputs resolve to real listings by exact handle, then exact name, never a silent fuzzy swap: unknown inputs come back in unresolved_inputs with suggested_matches and a corrected_call; if only one input is real it is compared with its nearest market peers (comparison_status says so); if none resolve, comparison_status is insufficient_valid_providers. Mixed delivery types are flagged: a hosted agent and an MCP server are not directly equivalent, so compare hosted prices with hosted prices. Over-budget or weak matches get suggested_alternatives. Returns a concise decision view by default (fit, observed plans and prices with source and date, job cost, requirement verdicts, unknowns); pass detail:"full" for every field. Accepts `provider_ids` (aliases: handles, ids, or a comma-separated string).

ParameterTypeDescription
requirementsarrayOptional. Mandatory requirements as plain phrases (e.g. "sanctions screening", "documented MCP interface"). Adds an ADDITIVE service_view: per-provider evidence matrix from stored first-party page text — supported / not_supported / unknown with the excerpt and observation date; unknown never means unsupported.
servicestringOptional. A service recipe whose fixed requirements and evidence fields are applied (see service_view.requirements).
One of: supplier-verification contract-review developer-capabilities cheaper-alternatives
taskstringOptional. The buyer's job in plain words; used as the service_view heading.
optionalarrayOptional preferences: reported in service_view but never gating.
detailstringOptional. concise (default): the decision view. full: the complete comparison (all plan lines, evidence checks, deployment, licence, how to connect, requirement evidence excerpts).
One of: concise full
provider_idsrequiredarray2-6 provider handles from search_providers/market_gaps, e.g. ["openhands","lexaclaw"]
request_refstringOptional task reference (rq_ + 12 hex) from an earlier answer. Continues that task: its remembered facts (quantities, budget, requirements, benchmark selection) apply to this call, and the answer keeps the same request_ref.
suggest_alternatives

Find related alternatives to a known provider, ranked by text-embedding nearness to that provider's OWN profile (NO category lookup), each with observed price, endpoint liveness, community upvotes and how_to_connect (website, docs, mcp endpoint). For cheaper_only, inspect whether the reference price and candidate prices support a valid comparison: an empty response may reflect a missing or incompatible reference price rather than the absence of alternatives (the response says which). Accepts `agent_id` (aliases: handle, id). These substitutes are also surfaced inside research_capability and compare_providers. Each alternative also carries `deployment` (evidenced model) and how_to_connect.install / repository (1.10.0).

ParameterTypeDescription
agent_idrequiredstringHandle of the provider to find substitutes for, e.g. 'openhands'
cheaper_onlybooleanOnly keep alternatives priced below the subject's lowest monthly price. Free/freemium providers always qualify; providers with no observed price are excluded. Default false.
limitnumberMax alternatives (1-10, default 5)
find_market

Use when someone asks what a kind of product typically costs or who competes in a space, e.g. 'what should I charge for lead-generation automation' or 'tools that monitor competitor pricing'. Maps the task to its market (the nearest providers by meaning, no fixed categories) and returns the market label, provider and priced counts, the nearest providers with observed prices, and pricing_by_tier (median, p25/p75, range and n per buyer tier). When nothing is close it returns no_match or thin_coverage and withholds pricing rather than invent a market. For market plus shortlist in one call use research_capability.

ParameterTypeDescription
taskrequiredstringREQUIRED. A natural-language task, capability or service in plain words, e.g. 'reconcile supplier invoices'. Call as {"task": "…"}; an empty call returns status needs_input with an example and searches nothing.
querystringAlias for task (back-compat only) — prefer task
research_capability

Use for a quick first overview of a buying task in one call: the closest-matching listings (matched on what they do, no fixed categories), the price range and median for comparable products (with n), and a shortlist with observed prices, market_position (below / in line / above market) and handles in compare_ready for compare_providers. Also returns suggested_alternatives. It does not run the comparison. For careful selection prefer search_providers → get_provider_profile → compare_providers. Accepts `task` (aliases: query, q).

ParameterTypeDescription
cohort_refstringOptional (1.17.0): reuse the exact set of comparable providers selected by an earlier price_benchmark / market_report / research_capability call.
taskrequiredstringRequired — the natural-language capability/task, e.g. 'reconcile supplier invoices' or 'litigation-analysis provider'. Aliases: query, q.
buyer_tierstringOptional buyer tier to price against ('team' = Team/SME).
One of: individual pro team enterprise
max_monthly_usdnumberOptional budget ceiling in USD/month — filters the shortlist and drives suggested_alternatives.
integrationsarrayOptional required integrations, e.g. ["zendesk","slack"] — soft preference; integration status is reported per provider.
sortstringShortlist ordering. Default 'match'.
One of: match price_asc
limitnumberShortlist size (1-12, default 5).
provider_typestringPreferred delivery type. 'auto' (default) infers from the task; note 'AI agent' phrasing is treated as generic (neutral), not an agent-only filter. When a type is explicit (mcp/api/agent) matching providers are SOFT-RANKED to the top and the rest are kept as clearly-labelled cross_type_alternative entries — never hard-filtered (no zero-result cliff), and the functional match is never changed. Every provider is labelled with provider_type (public values: agent | mcp | api | unknown) + type_match_score; provider_type{type_rank_boost_applied, boosted_provider_type, result_counts_by_type} is returned.
One of: auto agent mcp api any
response_modestring'summary' (default) or 'full' (adds tier cohorts, coverage and raw results).
One of: summary full
request_refstringOptional task reference (rq_ + 12 hex) from an earlier answer. Continues that task: its remembered facts (quantities, budget, requirements, benchmark selection) apply to this call, and the answer keeps the same request_ref.
refine_results

Use when an earlier search_providers or research_capability answer missed what was meant: pass its request_ref and the correction in plain words (e.g. 'must integrate with Slack', 'budget is $20/month', 'data must stay in the EU'). Agentery re-runs the search with the changed constraints (the others are kept) and returns the new answer plus what changed. source: 'human' (the user's words), 'agent' (your assessment, default) or 'follow_up'. Agentery sees only the request and correction you send, never your wider conversation. Task answers (search_providers, compare_providers, research_capability, price_benchmark, market_report) carry ONE request_ref plus a 'conversation' block: the facts remembered for the task, any optional clarification questions (at most two, one round) and the exact refine_results call to continue. Answer with plain words, 'unknown' or 'skip'; source is one of human, agent, follow_up. Pass the same request_ref to another task tool to continue the task there. References expire 24 h after the last turn.

ParameterTypeDescription
request_refrequiredstringThe request_ref from the earlier answer (rq_ + 12 hex characters).
correctionrequiredstringWhat was missing or wrong, in plain words.
sourcestringWhere the correction came from. Default 'agent'.
One of: human agent follow_up
get_provider

Call this for the public directory card of one provider by handle or registration number: bio, source URLs, X-verification status, entity type, community rating and structured profile when available.

ParameterTypeDescription
handlestringProvider handle, e.g. 'openhands'
regNumnumberRegistration number, e.g. 2432
get_group_fair_price

Use to check what a product of a given kind typically costs: give a task or product type (or a group_id from the group price league) and get its product group's fair price for each buyer tier (individual, pro, team / small business, enterprise) — the median entry monthly price in that tier with its typical range — plus which payment models the group typically uses (free, subscription, usage, one-time, contact sales), usage and one-time medians where at least 3 listings publish them, and the group's price-index change over 90 days. Groups are built from what products do, not from price. Medians of current published prices only; individual listings are not returned — use search_providers for candidates.

ParameterTypeDescription
querystringThe task or product type, e.g. 'AI meeting notes for sales teams'.
group_idnumberOptional: a group id from agentery.com/aepi/groups or from get_provider_profile's product_group.
price_benchmark

Use to judge whether a price is fair or what a capability typically costs, e.g. 'Is $49/month reasonable for an AI SDR for a small team?'. Pass the capability as `query` (aliases: task, niche). Returns observed prices of comparable products — median, p25/p75, range, mean, stdev and n — split by delivery type (agent | mcp) and buyer tier (individual / pro / team_sme / enterprise), never blended across incompatible pricing units. Comparables are the products closest in what they do (no fixed categories). A benchmark describes an observed sample; it is not a quote and not evidence of willingness to pay. Set provider_type and buyer_tier when known. If nothing priced is close it returns resolved:false with a note, never an invented figure.

ParameterTypeDescription
querystringThe capability to benchmark, in natural language, e.g. 'AI code review' or 'supplier invoice reconciliation'. Preferred input.
taskstringAlias of `query` (same text).
nichestringLegacy alias of `query`, kept for older clients — prefer `query`.
sectorstringSector name, e.g. 'legal' (ignored if a query is given)
provider_typestringDelivery type being priced. Set when the user says provider, MCP or API. Omit (or 'all') to get the per-type matrix instead of a blended figure. 'api' is recognised but not yet a separate commercial cohort (folded into provider).
One of: agent mcp api all
buyer_tierstringBuyer tier being priced. Set when the user describes who is buying (an individual, a professional, a team/SME, or an enterprise). An individual licence must never be represented by the SME or enterprise price.
One of: individual pro team_sme enterprise all
pricing_unitstringBilling unit the benchmark is FOR (1.17.0: honoured). Selects the comparable observations; units are never converted into one another, and a thin unit returns its observations and the gap — never a flat-monthly substitute. A query such as 'cost per support ticket' sets it when omitted.
One of: flat per_seat per_agent per_call per_ticket per_conversation per_resolution per_transaction per_invoice per_document per_page per_minute per_message per_email per_credit per_token percent_of_spend
cohort_refstringOptional (1.17.0): reuse the exact set of comparable providers selected by an earlier price_benchmark / market_report / research_capability call (its cohort_ref), instead of re-selecting the market from new wording.
proposed_pricenumberOptional (sellers): a proposed price to position against the selected comparable offers (same unit; currency below). Returns where it sits in the observed range; a percentile only with ≥5 comparable providers. A market reference, not an optimal price.
currencystringCurrency of proposed_price (ISO code, default USD).
commitmentstringBilling commitment of proposed_price (default monthly).
One of: monthly annual
offsetnumberPaging offset over the selected observations in full mode.
limitnumberObservations per page in full mode (1–100, default 50).
response_modestring'summary' (default): the selected benchmark with its top observations. 'full': every included observation (paged), with plan, native price, unit, commitment, source and observed date.
One of: summary full
request_refstringOptional task reference (rq_ + 12 hex) from an earlier answer. Continues that task: its remembered facts (quantities, budget, requirements, benchmark selection) apply to this call, and the answer keeps the same request_ref.
market_report

Deep-dive ONE market before building or investing — the market is the semantic neighbourhood of your natural-language query (nearest providers by text embedding, NO fixed category). Every field is MEASURED: the observed-pricing benchmark separated by provider type and buyer tier (median, mean, stdev, p25/p75, min–max range and n via the canonical pricing engine), how many providers are in the neighbourhood and how many are priced, and the top providers already competing there with their observed price and relevance. Pass `query` (a natural-language capability or market, e.g. 'customer support chatbot'). For market + pricing + a ready shortlist in one call, use research_capability.

ParameterTypeDescription
queryrequiredstringNatural-language capability or market, e.g. 'customer support chatbot' or 'ai phishing detection'.
response_modestring'summary' (DEFAULT): neighbourhood counts, per-type/per-tier price cohorts and the top 12 providers. 'full' (1.17.0): EVERY member of the neighbourhood, paged with offset / limit, each with its price reading (plan, unit, currency, source, observed date).
One of: summary full
cohort_refstringOptional (1.17.0): reuse the exact set of comparable providers selected by an earlier price_benchmark / market_report / research_capability call (its cohort_ref), instead of re-selecting the market from new wording.
offsetnumberfull mode: paging offset over members (default 0).
limitnumberfull mode: members per page (1–150, default 50).
request_refstringOptional task reference (rq_ + 12 hex) from an earlier answer. Continues that task: its remembered facts (quantities, budget, requirements, benchmark selection) apply to this call, and the answer keeps the same request_ref.
get_price_index

Use when asked whether prices of AI agents, tools or MCP servers are rising or falling overall. Returns the current Agent Economy Price Index (AEPI), a like-for-like index of observed agent and MCP pricing (base 100 = 29 Jun 2026; an index level, not a price), with 1-, 7- and 30-day change, plus the same for the four buyer tiers (Individual, Pro, Team/SME, Enterprise). provider_type=agent|mcp gives the standalone index for that delivery type; tier narrows to one tier. For the trend over time use get_price_index_history; for what a particular kind of product costs use get_group_fair_price or price_benchmark.

ParameterTypeDescription
benchmark_idstringOptional: a private custom benchmark token (cb_…) from create_custom_benchmark — returns that cohort's current index instead of the economy index. Cannot be combined with niche.
provider_typestring'all' (default) = the combined whole-economy index; 'agent' or 'mcp' = the standalone index over just that delivery type (own base 100); 'payg' = the standalone pay-as-you-go sub-index (usage rates purchasable without a subscription, engine v2). Agents and MCPs price and move differently, so an MCP buyer should read the 'mcp' index and an agent buyer the 'agent' index.
One of: all agent mcp subscription hybrid one_off payg
tierstringFilter to one buyer tier ('team' = Team/SME). Default 'all'.
One of: all individual pro team enterprise
response_modestring'summary' (default) or 'full' (adds exact sub-0.01% moves and repricing counts).
One of: summary full
get_price_index_history

Use to show how AI agent and MCP prices have moved over time: the dated Agent Economy Price Index series, the same chained like-for-like series agentery.com/aepi charts. Points are index levels (base 100), never prices. Whole-economy series by default; `tier` for one buyer tier; provider_type agent|mcp for one delivery type (own base 100); `period` 30d (default) / 90d / all; response_mode summary (default) or full (adds gap flags). Thin data returns insufficient_history, never an invented series. For what one capability costs use price_benchmark or market_report. Also reads a private custom benchmark's history via benchmark_id.

ParameterTypeDescription
benchmark_idstringOptional: a private custom benchmark token (cb_…) — returns that cohort's dated series instead of the economy series. Cannot be combined with niche.
provider_typestring'all' (default) = the combined whole-economy series, or the standalone 'agent' / 'mcp' / 'subscription' / 'hybrid' / 'one_off' / 'payg' = the billing-LENS series (they cut across provider/mcp; a rate sits in one delivery type AND one lens; own base 100) — 'payg' (pay-as-you-go, engine v2) series (own base 100).
One of: all agent mcp subscription hybrid one_off payg
tierstringReturn one buyer tier's series ('team' = Team/SME). Default 'all' = the headline series.
One of: all individual pro team enterprise
periodstringHistory window. Default '30d'.
One of: 30d 90d all
response_modestring'summary' (default, compact) or 'full'.
One of: summary full
sincestringOptional, for providers that poll: the `cursor` (or `next_cursor`) from your previous call, or an ISO timestamp of your last check. Returns only what changed since then: new_points (newly published days), corrected_points (earlier days whose published level changed, with previous_level) and withdrawn_points, plus next_cursor for the next call. status 'no_changes' when nothing changed. Omit for the full history.
market_gaps

Use when a seller or investor asks which tasks people look for that few paid products serve. Clusters requests seen on this MCP server by meaning and returns those far from any paid provider: the request phrasing, distinct_callers, raw_requests, the nearest paid provider and its similarity (low = under-served). headline = jobs asked by two or more callers; weak_leads = one caller; information_requests = questions about a named product. These are research leads from limited traffic, not buyer counts or proof of a market-wide gap; few or none is normal while volume is low. Marked test traffic is excluded. No arguments needed.

ParameterTypeDescription
sectorstringOptional sector filter, e.g. 'legal', 'healthcare'
rankstringgaps (default): whitespace with money, crowded excluded. hot: most active by market pulse, crowding ignored.
One of: gaps hot
limitnumberMax gaps (1-50, default 15)
demand_signals

Inspect eligible zero-result or weak-match capability queries observed on this MCP server, aggregated and ranked by miss count. These are limited coverage signals from Agentery's own callers — not proof that a product does not exist, and not proof that a market has paying demand. Not a prerequisite for choosing a product. Empty args ({}) return the current list; an empty response means there is insufficient qualifying evidence (status insufficient_evidence + next_step) — it is never filled from search popularity, page views or trending queries.

ParameterTypeDescription
limitnumberMax signals (1-50, default 20)
request_research

Use when a buying decision hinges on one specific fact about one listing that its profile does not settle, e.g. {"provider_id":"flux_operator","requirement":"Is there a Helm chart for Kubernetes?"} or 'Does the Business plan go to checkout or to contact sales?'. Agentery reads the vendor's own pages, its code repository (read, never run) and the pricing page's buttons, and answers yes / no / partly / unknown with quotes, URLs and observation dates. Usually answered in this response within about 15 s; otherwise call get_research with the job_id after poll_after_seconds. Identical questions share one job. A found statement is the vendor's own claim, not independent verification.

ParameterTypeDescription
provider_idrequiredstringThe listing (provider_id from search_providers).
requirementrequiredstringThe requirement in plain words, e.g. 'EU data residency', 'integrates with Slack', 'SOC 2 Type II', 'commercial use permitted'.
request_refstringOptional: the request_ref of the answer that raised the question.
get_research

Status and result of a research job created by request_research. status: queued / running / answered / partly_answered / still_unknown / failed; phase: queued | running | retry_scheduled | completed_answer | completed_unknown | failed. Poll no more often than poll_after_seconds — polling is free and never repeats the work. result: answer (yes/no/partly/unknown), short_answer, evidence per claim (quote, URL, observed date; file path and revision for repositories; element for pricing-page buttons), facts assessed separately (e.g. Dockerfile vs published image vs Helm chart), conflicts and what remains unresolved.

ParameterTypeDescription
job_idrequiredstringThe job_id from request_research (rj_ + 12 hex).
stop_research_updates

Stop watching a research job (the result stays retrievable with get_research).

ParameterTypeDescription
job_idrequiredstring
create_custom_benchmark

Use when someone wants to keep watching the prices of products they choose (e.g. five named writing tools). Creates a PRIVATE custom benchmark (a saved, calculated peer cohort) over Agentery's data — no account needed. Two modes: (A) explicit members: pass `members` (a list of exact handles; product names/domains resolve where unambiguous). (B) fork a market: pass `base_niche` (its slug) plus optional `remove`/`add`. Returns a one-time secret `benchmark_id` (cb_… token) — store it; it's your only key. Use it later in get/update/delete and in market_report/get_price_index/get_price_index_history. Ambiguous names are returned as candidates, never silently resolved; unresolved inputs block creation unless allow_partial:true. All prices/history are computed from Agentery's immutable observations; canonical market data is never changed.

ParameterTypeDescription
namestringOptional private label
membersarrayMode A: exact handles (preferred), product names or domains
base_nichestringMode B: slug of the canonical market to fork
removearrayMode B: members to drop from the forked market
addarraymembers to add
allow_partialbooleanCreate with only the resolved members when some inputs don't resolve (default false)
get_custom_benchmark

Get a private custom benchmark's current report: members, current stats (headline median/quartiles only when ≥3 comparable priced members — monthly, per-seat and per-call prices are never blended), buyer-tier / provider-type / pricing-unit cohorts, historical index, and data coverage. Pass `benchmark_id` (your cb_ token) as an ARGUMENT.

ParameterTypeDescription
benchmark_idrequiredstringYour cb_ token (bearer secret; passed as an argument, never a URL)
versionnumberOptional benchmark version (default latest)
as_ofstringOptional YYYY-MM-DD — reproduce the exact stats + index as they were on that date, using this version's fixed membership
response_modestringfull includes the index series
One of: summary full
update_custom_benchmark

Add/remove members or rename a custom benchmark. Creates a NEW immutable version (the previous version stays fully reproducible) and returns the exact change-impact on the median/quartiles/index. Pass `benchmark_id`.

ParameterTypeDescription
benchmark_idrequiredstringYour cb_ token
addarray
removearray
renamestring
delete_custom_benchmark

Disable access to a custom benchmark. Keeps only a minimal audit record; no underlying Agentery data is touched. Pass `benchmark_id`.

ParameterTypeDescription
benchmark_idrequiredstringYour cb_ token
report_outcome

Report the result of ACTUALLY USING a listed provider for a task. Testing Agentery's connection or retrieval does not establish that the listed provider worked — do not report those. Reports are self-reported evidence subject to eligibility checks: they are correlated with your recent retrievals, improve ranking accuracy, and unlock higher rate limits for contributors. Only reports we can match to one of YOUR retrievals (search_providers / get_provider_profile / compare_providers / suggest_alternatives naming that provider, last 48h) carry weight; unmatched reports are stored but unweighted. Aggregates surface as `reported_success` on profile/comparison cards once 5+ distinct reporters exist (90-day window). Callers with 5+ correlated reports in 30 days get a doubled per-minute rate limit. Send an x-agentery-key header to keep one reporter identity across IPs (it is stored only as a hash).

ParameterTypeDescription
agent_idrequiredstringHandle of the provider you used, as returned by search_providers/get_provider_profile/compare_providers
outcomerequiredstringDid the provider accomplish the task you hired it for?
One of: worked failed partial
task_typestringOptional short task label, e.g. 'code-review', 'lead-enrichment'
error_classstringOptional failure class, e.g. 'timeout', 'auth', 'wrong-output', 'endpoint-down'
latency_msnumberOptional end-to-end latency of the provider in milliseconds
notestringOptional free-text detail (capped at 300 chars)
rank_providers_for_workflow

PARTNER-ONLY (Bearer key required). Given a business context and its workflow steps, return ranked provider candidates for EACH step — structured, scored (match_score 0-100) matches with match_reasons and cautions. Built for app builders (e.g. Builtery) assembling automations. Reads each provider's analysed site profile; never invents capabilities; returns 'unclear' where evidence is missing.

ParameterTypeDescription
business_contextobjectcompany_description, industry, region, existing_tools[], automation_posture (cautious|balanced|agent_native), regulated_data (none|personal|health|financial|legal|children|unknown)
workflow_stepsrequiredarrayEach: step_id, step_name, step_description, inputs[], desired_outputs[], required_integrations[], human_approval_preference (always|sometimes|not_needed|unknown)
limit_per_stepnumberMax candidates per step (1-25, default 8)

REST endpoints

GET /api/v1/agent/{handle}

Full evidence profile for one provider (same as MCP get_provider_profile)

ParameterTypeDescription
handle (path)requiredstringProvider handle from /search (agent_id)
GET /api/v1/compare

Compare 2–6 providers side by side (same as MCP compare_providers)

ParameterTypeDescription
idsrequiredstring2–6 comma-separated handles taken verbatim from /search
servicestringOptional evidence view: supplier-verification | contract-review | developer-capabilities | cheaper-alternatives
taskstringOptional task text for the evidence matrix
requirementsstringOptional comma-separated requirements
GET /api/v1/alternatives

Related alternatives to a known provider (same as MCP suggest_alternatives)

ParameterTypeDescription
idrequiredstringProvider handle
cheaper_onlybooleantrue = only alternatives with a lower observed price
limitinteger1–10, default 5
GET /api/v1/price

Observed price benchmark for a task or market (same as MCP price_benchmark)

ParameterTypeDescription
querystringTask or market description, e.g. 'AI customer support agent'
nichestringLegacy niche slug (alias)
provider_typestringagent | mcp | all
buyer_tierstringindividual | pro | team_sme | enterprise
GET /api/v1/price-index

Current AEPI level and 1d/7d/30d change (same as MCP get_price_index)

ParameterTypeDescription
scopestringaepi | niche
nichestringNiche slug when scope=niche
provider_typestringall | agent | mcp
tierstringindividual | pro | team_sme | enterprise
GET /api/v1/price-index/history

Dated AEPI series (same as MCP get_price_index_history)

ParameterTypeDescription
scopestringaepi | niche
nichestringNiche slug
tierstringBuyer tier
periodstring30d | 90d | all
GET /api/v1/movers

Day/week/month index change per niche and tier

ParameterTypeDescription
tierstringcomposite | individual | pro | team_sme | enterprise
GET /api/v1/gaps

Demand clusters with weak paid supply

ParameterTypeDescription
sectorstringScope text
limitinteger1–50
GET /api/v1/niche/{slug}

Measured report for one market

ParameterTypeDescription
slug (path)requiredstring
GET /api/v1/demand

Zero-result capability queries seen here (honest insufficient_evidence when none)

ParameterTypeDescription
limitinteger1–50
GET /api/v1/indices

AEPI plus companion and sector indices

No parameters.

A2A skills

search_providers

Free-text search over indexed AI agents, MCP servers, APIs and platforms with observed prices, evidenced deployment model (hosted / self-run / both / unknown) and connection details. Same handler as the MCP tool search_providers and GET /api/v1/search.

Examples

  • search: supplier invoice reconciliation
  • search: AI customer support agent under $50/month
  • {"skill":"search_providers","arguments":{"query":"web scraping","provider_type":"mcp","deployment":"hosted"}}
get_provider_profile

Full evidence profile for one provider: plans and observed price (null when unobserved, never zero), liveness, deployment and licence evidence with source URL and age, how_to_connect (website, docs, MCP endpoint, install line, repository).

Examples

  • profile: zendesk
  • {"skill":"get_provider_profile","arguments":{"provider_id":"foiagras_mcp"}}
compare_providers

2–6 providers side by side with plan-level prices. Inputs are never silently swapped for fuzzy matches; pricing_summary says when billing units are not comparable; price_applies_to flags prices that belong to a vendor platform rather than the connector.

Examples

  • compare: zendesk, intercom, gorgias
  • {"skill":"compare_providers","arguments":{"provider_ids":["zendesk","intercom"]}}
suggest_alternatives

Related alternatives to a known provider ranked by nearness to its own profile, each with observed price, liveness, deployment and connection details; optional cheaper_only.

Examples

  • alternatives: zendesk
  • {"skill":"suggest_alternatives","arguments":{"provider_id":"zendesk","cheaper_only":true}}
price_benchmark

Observed price distribution (median, quartiles, counts, reliability) for a task or market, per buyer tier. States market_uncertain or ambiguous_name explicitly instead of inventing a number.

Examples

  • benchmark: AI customer support agent
  • {"skill":"price_benchmark","arguments":{"query":"helpdesk software"}}
get_price_index

Current AEPI level with 1d/7d/30d change for the whole economy, a buyer tier or a market, plus the dated history on request (skill get_price_index_history). Same data as aepi.ai.

Examples

  • aepi
  • {"skill":"get_price_index","arguments":{"scope":"aepi"}}
  • {"skill":"get_price_index_history","arguments":{"period":"30d"}}

Responses

Every interface returns the same JSON. MCP wraps it as a string in result.content[0].text; A2A returns it as the data part of a completed task, with a one-line text summary.

  • Missing is not zero. An unobserved price is null with priced: false; aggregates leave it out.
  • Check comparability. compare_providers returns pricing_summary.numeric_comparison_possible and says when billing units differ.
  • Empty answers explain themselves. No result carries status (for example no_match or thin_coverage), an explanation and a next_step.
  • Dates. Prices carry the date they were checked; fair prices carry as_of.

MCP · get_group_fair_price for a customer-support chatbot

Tested on 10 October 2026: HTTP 200 in 585 ms.

Request
curl -s https://agentery.com/api/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_group_fair_price","arguments":{"query":"customer support chatbot"}}}'
Response (excerpt)
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "<JSON below, as a string>"
      }
    ]
  }
}

// result.content[0].text, parsed (excerpt):
{
  "status": "ok",
  "group_id": 54,
  "group": "Customer support automation",
  "listings": 44,
  "priced_listings": 42,
  "fair_price_by_tier": {
    "individual": {
      "median_monthly_usd": 21.35,
      "typical_range_usd": [
        10,
        40
      ],
      "listings": 17
    },
    "pro": {
      "median_monthly_usd": 59,
      "typical_range_usd": [
        29,
        139
      ],
      "listings": 25
    },
    "team / small business": {
      "median_monthly_usd": 199.5,
      "typical_range_usd": [
        90.71,
        321.76
      ],
      "listings": 20
    },
    "enterprise": {
      "median_monthly_usd": 999.5,
      "typical_range_usd": [
        535.29,
        1092.2
      ],
      "listings": 8
    }
  },
  "typical_payment_model": "subscription",
  "method": "Fair price is given per buyer tier: the median of the group's listings' entry monthly price within that tier (individual, pro, team / small business, enterprise), with the typical range (middle half), from current published plans converted to USD. A tier's median is shown only when at least 3 listings price that tier.",
  "as_of": "2026-10-10",
  "currency": "USD (converted from published currencies)",
  "note": "Medians of current published prices in the group. Missing prices are unknown, not zero; contact-sales plans have no numeric price."
}

REST · Compare two products (excerpt: entry offers and pricing summary)

Tested on 10 October 2026: HTTP 200 in 315 ms.

Request
curl "https://agentery.com/api/v1/compare?ids=chat_thing,chatbase"
Response (excerpt)
{
  "comparison_status": "ok",
  "count": 2,
  "agents": [
    {
      "agent_id": "chat_thing",
      "name": "Chat Thing",
      "provider_type": "platform",
      "entry_offer": {
        "line": "Basic",
        "monthly_native": 14,
        "monthly_usd": 14,
        "commitment": "monthly",
        "basis": "$14/month"
      },
      "currency": "USD",
      "last_checked": "2026-06-16"
    },
    {
      "agent_id": "chatbase",
      "name": "Chatbase",
      "provider_type": "platform",
      "entry_offer": {
        "line": "Hobby",
        "monthly_native": 40,
        "monthly_usd": 40,
        "commitment": "monthly",
        "basis": "$40/month"
      },
      "currency": "USD",
      "last_checked": null
    }
  ],
  "pricing_summary": {
    "providers": 2,
    "priced_numeric": 2,
    "priced_by_rate": 0,
    "contact_sales": 0,
    "unpriced": 0,
    "code_host_withheld": 0,
    "numeric_comparison_possible": true,
    "note": "2 of 2 providers carry an observed monthly price; the numeric price comparison covers those 2."
  }
}

A2A · Compare two products over A2A (excerpt of the completed task)

Tested on 10 October 2026: HTTP 200 in 293 ms.

Request
curl -s https://agentery.com/api/a2a \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":"1","method":"message/send","params":{"message":{"role":"user","messageId":"docs-example-1","parts":[{"kind":"text","text":"compare: chat_thing, chatbase"}]}}}'
Response (excerpt)
{
  "jsonrpc": "2.0",
  "id": "1",
  "result": {
    "kind": "task",
    "status": {
      "state": "completed",
      "message": {
        "role": "agent",
        "parts": [
          {
            "kind": "text",
            "text": "comparison_status ok; 2 of 2 providers carry an observed monthly price; the numeric price comparison covers those 2."
          },
          {
            "kind": "data",
            "data": {
              "comparison_status": "ok",
              "count": 2,
              "pricing_summary": {
                "providers": 2,
                "priced_numeric": 2,
                "priced_by_rate": 0,
                "contact_sales": 0,
                "unpriced": 0,
                "code_host_withheld": 0,
                "numeric_comparison_possible": true,
                "note": "2 of 2 providers carry an observed monthly price; the numeric price comparison covers those 2."
              }
            }
          }
        ]
      }
    }
  }
}

Fair market price

The fair market price is the median monthly price of comparable services: the products in one group, for one buyer tier. Groups are formed from what products do, never from their prices.

Buyer tier

Individual, Pro, Team / small business and Enterprise are calculated separately. A plan is placed by its name first: enterprise, on-premises or dedicated plans are Enterprise; team or business plans are Team; pro, premium or plus plans are Pro; starter, basic or personal plans are Individual. Unnamed plans go by monthly price: under $25 Individual, under $100 Pro, under $500 Team, otherwise Enterprise.

Currency

US dollars. Prices published in other currencies are converted at daily exchange rates. Crypto and unrecognised currencies are left out.

Billing basis

Monthly. Annual prices are divided by 12; when a plan shows both, the month-to-month price is used. Per-seat prices count one seat. Usage prices are reported separately for each unit and never mixed into the monthly median.

Sample size

Each product counts once per tier, at its cheapest plan in that tier. listings gives the number behind each median. A tier needs at least three priced products; below that the median is null with a note.

Typical range

The middle half of prices: the 25th to 75th percentile. It is not a minimum and maximum, and not a confidence interval.

Exclusions

Free plans, contact-sales plans without a price, optional add-ons and components (from 11 October 2026), one-time fees and usage-only prices. They still appear in payment_models_pct, and usage medians appear in usage_prices.

Where to get it

MCP: get_group_fair_price with a task as query, or a group_id. It returns fair_price_by_tier (each tier has median_monthly_usd, typical_range_usd and listings), with method, currency, as_of and note. See the MCP example under Responses.

Profiles: get_provider_profile and GET /api/v1/agent/{handle} include product_group with the group’s tier medians.

Website: sector pages under Indices show the same benchmark and a quote check.

Fair price or price benchmark?

get_group_fair_price describes the whole group. price_benchmark (REST GET /api/v1/price) compares only the closest comparable products and can place a quoted price against them. To judge a specific quote, use the benchmark with the same task and buyer tier; the group median shows what entry plans across the wider group cost.

What a fair price is not

It describes published list prices, not negotiated discounts, sales volumes or product quality. A low price is not a recommendation, and products in one group can differ in scope and limits.

Errors

MCP tool errors are returned as a normal result with isError: true and a message saying what to change. Protocol errors use JSON-RPC error. REST uses HTTP status codes with an error message.

InterfaceCaseHTTPBody (tested 10 October 2026)
MCPMissing required argument200{"jsonrpc":"2.0","id":3,"result":{"content":[{"type":"text","text":"Error: provider_id is required"}],"isError":true}}
MCPUnknown tool200{"jsonrpc":"2.0","id":4,"result":{"content":[{"type":"text","text":"Error: unknown tool: no_such_tool. Call tools/list to see the available tools."}],"isError":true}}
MCPMalformed JSON-RPC body400{"jsonrpc":"2.0","id":null,"error":{"code":-32600,"message":"expected a single JSON-RPC request object"}}
RESTMissing required query parameter400{"error":"q is required (a free-text description of the job, e.g. ?q=supplier+invoice+reconciliation)"}
A2AUnsupported method200{"jsonrpc":"2.0","id":"2","error":{"code":-32602,"message":"Invalid method parameters.","data":[{"@type":"type.googleapis.com/google.rpc.ErrorInfo","reason":"INVALID_PARAMS","domain":"a2a-protocol.org"}]}}
MCPUnknown product200found: false with a message. The name is queued for research and is usually listed within about 15 minutes if it is a real product.
RESTUnknown product404{"error": "… isn't in the index yet …"}
MCPRate limited200isError: true, “rate limited: max 30 tool calls per minute … Retry in Ns.”
RESTRate limited429Retry-After header and “rate limited: max 60 requests/min per IP …”
A2ARate limited429JSON-RPC error -32029 with Retry-After.
MCPPartner-only tool without a key200isError: true, naming search_providers and suggest_alternatives as public alternatives.

Limits

  • MCP: 30 tool calls per minute per session (mcp-session-id) or IP; 60 once a caller has five or more correlated report_outcome reports in 30 days; 300 per minute per origin IP across sessions.
  • REST: 60 requests per minute per IP.
  • A2A: 60 requests per minute per IP.
  • Access: public reads need no account. rank_providers_for_workflow needs a partner Bearer key.
  • Freshness: prices are read from vendors’ published pricing pages in a daily scan.

This page is checked against the live service; the live tools/list, OpenAPI and Agent Card are authoritative. Method details: Data & methodology.