{"server":"com.agentery/agentery","count":50,"changes":[{"tool":"demand_signals","kind":"changed","observed_at":"2026-10-18T09:02:50.677Z","fields":["description"],"description_before":"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.","description_after":"Inspect searches by external callers in the last 90 days that found no provider or only weak matches (best relevance below 0.62), shown as generalised job labels and ranked by distinct callers. Most entries come from a single caller: treat those as leads. 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.","description_similarity":0.566,"before_hash":"5cfab055249f7e3c95c422de9fa726c6","after_hash":"be041cc71beeddcd44ffcb1b13c9463f"},{"tool":"get_provider","kind":"changed","observed_at":"2026-10-17T15:33:24.187Z","fields":["description"],"description_before":"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.","description_after":"For buying decisions prefer get_provider_profile (prices, deployment, evidence); use this only for the short 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.","description_similarity":0.725,"before_hash":"cbedc492dd39eabd9d7c3f0f257b9a02","after_hash":"ed17fc6781d22f9b875c7c77e89ce15a"},{"tool":"rank_providers_for_workflow","kind":"removed","observed_at":"2026-10-11T22:36:39.349Z","fields":[],"description_before":"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.","description_after":null,"description_similarity":null,"before_hash":"8ed79a44d2fc26ac36f19bc378c9a936","after_hash":null},{"tool":"delete_custom_benchmark","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"07b2501b318358c45fa194a1acef4ccb","after_hash":"ee7bb9650ffa8ebac2210fdf43d81b38"},{"tool":"update_custom_benchmark","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"81662a8f6246f4cf6e1b81feb176d581","after_hash":"2c915561cca0b9311f1cddd2558ddee0"},{"tool":"get_custom_benchmark","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"7b1136aed655f59eb9ff24a2c3601b8c","after_hash":"5f61a04b74409642acd00c741c051450"},{"tool":"create_custom_benchmark","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"3a1be3cfa7a4b53db9cae35e00078ec4","after_hash":"c9b4836a85870f1361ab8df5d07bd594"},{"tool":"market_report","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"2b11a219de99d974e784f4b52b905dbd","after_hash":"3822dd73d69c8232d80b43789b1ec534"},{"tool":"get_provider","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"1ad9e4a676bcebc17a996424d36540ec","after_hash":"cbedc492dd39eabd9d7c3f0f257b9a02"},{"tool":"get_provider_profile","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"4ab6ccb8ef21504e2716249103f2b578","after_hash":"95bbe830545153bd5648a187cc16ad6b"},{"tool":"report_outcome","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"992301aca2a228a9d73404c3c611d6e5","after_hash":"11521aaf4776cb575caddfb465fb2773"},{"tool":"demand_signals","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"031662130f4c83811d1450a6b5a1a331","after_hash":"5cfab055249f7e3c95c422de9fa726c6"},{"tool":"suggest_alternatives","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"e19ccf305c1fc43d21630403eb5c33d6","after_hash":"3a43a933a5a85b0abab24883e6210915"},{"tool":"market_gaps","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"fc9afde383785b530c328caf13c7378a","after_hash":"012885ec87c17037ecd86ab5187b516b"},{"tool":"get_price_index_history","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"f3a366676f2ccd02752f49b9f6a43400","after_hash":"6d834586311f95468a98ccff8d80149c"},{"tool":"get_group_fair_price","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"5f717097a01c3ec8d02f2ad301e03e78","after_hash":"2dca7578fb43d583add2c191782cd280"},{"tool":"refine_results","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"62932089321cb61ecb4433842452fe5b","after_hash":"6b03cd2db3676725dc0322ba2b9531fd"},{"tool":"stop_research_updates","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"b4a83881b739f790062db08c76a00079","after_hash":"5166af37f36bf44ce7f4b370b7100c8e"},{"tool":"get_research","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"a7c1dfa4b12e7cf6667ea7a9838512d6","after_hash":"12a5b5a0fb85c5e89621f0e0ed259ad2"},{"tool":"request_research","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"b7d406c99ebefc82f07e4617ed853f57","after_hash":"e198bce613072a9b329a3adfa0438cce"},{"tool":"price_benchmark","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"830b907d22beb9520e89a71eb045c342","after_hash":"d5b98cd4e5a2ed5bc1296e5e5c8ad280"},{"tool":"get_price_index","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"f63f9e02d262ba11c1ce60b360a1b573","after_hash":"8275cdc11716a200523f52b5506dbd7a"},{"tool":"compare_providers","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"bb9a957ef8a7a75e9916fad5c8904e70","after_hash":"f8fa4ebc8aaef95115848f1b21942b56"},{"tool":"find_market","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"a8a03dc747dd819707b1913eba86ef7c","after_hash":"c74c250166f974ca9d899eea69933770"},{"tool":"search_providers","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"f8f30cf6c9f99d9d5d5968945bd427e6","after_hash":"4db9c2b028c6ae1a5b1ca580dd3b06c5"},{"tool":"research_capability","kind":"changed","observed_at":"2026-10-11T22:36:39.349Z","fields":["title","annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"e7aabf51eaf8b722fede38dc40a6a355","after_hash":"77ee41d823c7be6ea2a004df3005f335"},{"tool":"compare_providers","kind":"changed","observed_at":"2026-10-10T04:56:25.156Z","fields":["description","inputSchema"],"description_before":"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. Accepts `provider_ids` (aliases: handles, ids, or a comma-separated string).","description_after":"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).","description_similarity":0.817,"before_hash":"001bc9647fcd5dc453bc83395d8773a3","after_hash":"bb9a957ef8a7a75e9916fad5c8904e70"},{"tool":"create_custom_benchmark","kind":"changed","observed_at":"2026-10-09T22:38:58.612Z","fields":["description"],"description_before":"Create 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.","description_after":"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.","description_similarity":0.832,"before_hash":"02c616e78bf8d05e89dfe5097c0b554a","after_hash":"3a1be3cfa7a4b53db9cae35e00078ec4"},{"tool":"market_gaps","kind":"changed","observed_at":"2026-10-09T22:38:58.612Z","fields":["description"],"description_before":"Inspect query clusters with weak coverage among indexed paid providers — research leads, not buyer counts: request counts are not buyer counts, and a gap in this index does not establish a gap in the wider market. Computed demand-first in the raw text-embedding space (NO fixed categories). A gap = a cluster of user requests seen on this MCP server that sits FAR from any PAID provider. For each gap it returns: the demand phrasing, demand_mass (how many similar requests cluster with it), nearest_paid_similarity (cosine to the closest paid provider — low = under-served) and that closest paid provider. Also returns demand_queries and paid_supply counts. Honestly returns few or no gaps while query volume is still low — it sharpens as usage grows. No arguments needed ({}); `limit` caps the list. Since 1.20.0: equivalent phrasings are merged into one job; headline = jobs asked by two or more observed callers, weak_leads = one observed caller (research leads, not demand), information_requests = questions about a named existing product (e.g. its price), not unmet capabilities. Each job shows distinct_callers (hashed caller identity — an imperfect proxy for people), caller_workload_pairs, raw_requests and its observation window; repeated requests by one caller never raise its rank. Explicitly marked test traffic is excluded.","description_after":"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.","description_similarity":0.409,"before_hash":"c73e944f781dda56fead6ac18b0bcb85","after_hash":"fc9afde383785b530c328caf13c7378a"},{"tool":"refine_results","kind":"changed","observed_at":"2026-10-09T22:38:58.612Z","fields":["description"],"description_before":"Refine an earlier search_providers or research_capability answer with a correction, and get a better answer back in the same call. Pass the request_ref returned with that answer and the correction in plain words: what was missing or wrong (e.g. 'I meant apps that reduce business costs', 'must integrate with Slack', 'budget is $20/month', 'data must stay in the EU'). Agentery re-reads the request with the correction (changed constraints change, the others are kept), runs the search again and returns the new answer plus a short explanation of what changed. Optional: source = 'human' (the user's own words), 'agent' (your own assessment) or 'follow_up' (an ordinary narrowing, not a complaint). A message with nothing actionable (e.g. 'thanks') is just acknowledged. Agentery only sees 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.","description_after":"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.","description_similarity":0.756,"before_hash":"e8695dce536be7952c2816a837c43552","after_hash":"62932089321cb61ecb4433842452fe5b"},{"tool":"request_research","kind":"changed","observed_at":"2026-10-09T22:38:58.612Z","fields":["description"],"description_before":"Ask one specific question about one listing — e.g. {\"provider_id\":\"singchat\",\"requirement\":\"Does the Business plan's Subscribe button lead to checkout or a contact-sales form?\"} or {\"provider_id\":\"flux_operator\",\"requirement\":\"Is there a Helm chart for Kubernetes deployment?\"}. Agentery reads the vendor's own pages, its verified code repository (README, file list, Dockerfile/chart/licence files, releases — read, never run) and, for buying questions, the pricing page's buttons and where they lead, and answers that exact question: answer yes / no / partly / unknown with quotes, URLs, observation dates (and file path + revision for repositories). Usually the answer is in this same response within about 15 s (fields result and phase); otherwise call get_research with the job_id after poll_after_seconds. Identical questions join one job and reuse its answer at no cost. 'unknown' is a valid outcome; a found statement is the vendor's own claim, not independent verification. This server does not push notifications.","description_after":"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.","description_similarity":0.621,"before_hash":"c4d3decbb4d83f54dd06a9774bbb819e","after_hash":"b7d406c99ebefc82f07e4617ed853f57"},{"tool":"get_price_index","kind":"changed","observed_at":"2026-10-09T22:38:58.612Z","fields":["description"],"description_before":"Call this for the CURRENT level of the Agent Economy Price Index (AEPI) — a chained like-for-like index over observed provider/MCP pricing (base 100 = 29 Jun 2026). It is an INDEX LEVEL, not a market price or tradeable asset. Returns the whole-economy headline index level with change_1d/change_7d/change_30d, as_of, like_for_like_pair_count, status and the methodology version, PLUS the same fields for the four buyer tiers (Individual, Pro, Team/SME, Enterprise). `provider_type` returns the standalone index for one delivery type (provider or mcp, own base 100) — agents and MCPs price and move differently. `tier` filters to one buyer tier; response_mode 'full' adds exact sub-0.01% moves and repricing counts. Reads the SAME canonical series as the /aepi page, so the MCP and website agree for a given timestamp. (Also accepts a `benchmark_id` to read a private custom benchmark's current index.) The economy index is whole-market by design — for pricing on a specific capability use market_report or price_benchmark.","description_after":"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.","description_similarity":0.356,"before_hash":"7a5e341791d46d329639abe29fbfed93","after_hash":"f63f9e02d262ba11c1ce60b360a1b573"},{"tool":"find_market","kind":"changed","observed_at":"2026-10-09T22:38:58.612Z","fields":["description"],"description_before":"Map a natural-language task, capability or service to its live MARKET — the semantic neighbourhood of the closest-matching providers, found by text-embedding nearness (NO fixed category). For buyers ('a provider that monitors competitor pricing'), sellers ('what should I charge for lead-generation automation') or sizing a space. Pricing-intent boilerplate is stripped before matching. Returns the market label, how many providers are in the neighbourhood and how many are priced, `nearest` (the closest providers with observed price and relevance/cosine), and `pricing_by_tier` — median, mean, stdev, p25/p75, min–max range and n per buyer tier (individual/pro/team_sme/enterprise), computed by the canonical pricing engine over the priced neighbourhood. match_certainty is 'confident' when real neighbours exist and 'uncertain' when nothing is close (pricing WITHHELD). Accepts `task` (aliases: query, q). For the full market read + shortlist in ONE call, use research_capability instead. Read-only. When there is no strong market the response says so: status no_match or thin_coverage (nearest neighbourhood labelled partial_match) with a plain explanation and a next_step — it never invents a market.","description_after":"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.","description_similarity":0.374,"before_hash":"315db79e573c855e21b65e874635b026","after_hash":"a8a03dc747dd819707b1913eba86ef7c"},{"tool":"search_providers","kind":"changed","observed_at":"2026-10-09T22:38:58.612Z","fields":["description"],"description_before":"Use when someone needs to choose an AI product, AI agent, MCP server or API for a task, e.g. 'MCP server to read and reply to Zendesk tickets' or 'AI tool that transcribes sales calls'. Returns ranked candidates, each with what it does, a fit label (match / partial / weak, naming any mismatch such as another job, industry or country), delivery type, price status (known / free / contact_sales / unknown; unknown is never free) and links. Requirements in the wording (countries, integrations, audience, deployment) are checked per result and unverified ones are marked unknown. A result is a candidate to check, not proof it meets every requirement: inspect strong matches with get_provider_profile and compare finalists with compare_providers. Filters: require_public_price, max_monthly_usd, deployment; sort price_asc. Thin coverage returns an honest no_match, never padding. Accepts `query` (aliases: q, text).","description_after":"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.","description_similarity":0.592,"before_hash":"32c2ac6d7d014546c853f01978d2ef80","after_hash":"f8f30cf6c9f99d9d5d5968945bd427e6"},{"tool":"get_provider_profile","kind":"changed","observed_at":"2026-10-08T16:41:41.542Z","fields":["description","inputSchema"],"description_before":"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. Optional price_history returns dated plan prices. reported_success stays null until 5+ distinct reporters in 90 days; after actually using a listing, call report_outcome.","description_after":"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.","description_similarity":0.84,"before_hash":"2c80b94690dd9decfb79e0d10dcb4cee","after_hash":"4ab6ccb8ef21504e2716249103f2b578"},{"tool":"get_group_fair_price","kind":"added","observed_at":"2026-10-08T16:41:41.542Z","fields":[],"description_before":null,"description_after":"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.","description_similarity":null,"before_hash":null,"after_hash":"5f717097a01c3ec8d02f2ad301e03e78"},{"tool":"get_provider_profile","kind":"changed","observed_at":"2026-10-08T10:39:03.681Z","fields":["description"],"description_before":"Step 2 of the buyer path. Full profile for ONE provider — plans, pricing model, liveness, evidence — use after search_providers returns handles. Evidence-scored profile: task_performed, inputs/outputs, integrations, protocols, industry_fit, autonomy_level, human_approval_needed, observed price, trust signals, evidence_quality, entity_type, regulated_data_suitability, evidence_urls, last_checked. Includes the full how_to_connect object — website, docs, any vendor-published MCP endpoint (with a copy-paste client config_snippet), A2A agent card and API surface — the info needed to actually use the listing; fields are null when the vendor publishes no endpoint (never guessed). Also carries `reported_success` — machine-reported outcome rate from report_outcome (null until 5+ distinct correlated reporters in 90 days). If you use the listing, call report_outcome afterwards. Also (1.10.0) `deployment` — hosted / self_hosted / both / unknown with the evidence (excerpt, source URL, observation day, age) — `licence` (named licence only; a public repository is not a licence), `how_to_connect.install` and `how_to_connect.repository`, and `price_applies_to` when the price page is the vendor platform, not this connector.","description_after":"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. Optional price_history returns dated plan prices. reported_success stays null until 5+ distinct reporters in 90 days; after actually using a listing, call report_outcome.","description_similarity":0.396,"before_hash":"9543211a837dacd02cd978110d1d13c3","after_hash":"2c80b94690dd9decfb79e0d10dcb4cee"},{"tool":"get_price_index_history","kind":"changed","observed_at":"2026-10-08T10:39:03.681Z","fields":["description"],"description_before":"Call this for the canonical DATED index SERIES (to chart or analyse movement) of the AEPI — the same chained like-for-like series the /aepi page plots. Every point is an index level (base 100), never a price. Returns the whole-economy headline series, or a single buyer tier's series when `tier` is set. `provider_type` returns the standalone 'agent' / 'mcp' series (own base 100). `period` selects '30d' (default), '90d' or 'all'. response_mode 'summary' (default) returns date + index_level points plus the window change; 'full' adds gap flags. Returns an honest status (insufficient_history) rather than a fabricated series when data is too thin. (Also accepts a `benchmark_id` to read a private custom benchmark's history.) The economy index is whole-market by design — for pricing on a specific capability use market_report or price_benchmark.","description_after":"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.","description_similarity":0.495,"before_hash":"a785d115250aafa5763cebd22559b7fe","after_hash":"f3a366676f2ccd02752f49b9f6a43400"},{"tool":"price_benchmark","kind":"changed","observed_at":"2026-10-08T10:39:03.681Z","fields":["description"],"description_before":"Summarise observed prices for products related to a capability, separated by delivery type (provider / mcp) and buyer tier (individual / pro / team_sme / enterprise) and never blended across incompatible pricing units. Supply the capability with `query` (natural language, e.g. 'AI code review'); `task` and the legacy `niche` are accepted aliases. The market is the semantic neighbourhood of the query (nearest providers by text embedding, no fixed category). Each cohort reports median, mean, stdev, p25/p75, min–max and n. A benchmark describes the observed comparable sample — it is not a quote and not evidence of willingness to pay. Supply provider_type and buyer_tier when the user makes them known; otherwise the populated per-type/per-tier matrix is returned. When nothing priced is semantically close it returns resolved:false with a note, never a fabricated figure.","description_after":"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.","description_similarity":0.516,"before_hash":"68827f7198eb0ebd342740ff4c54c55f","after_hash":"830b907d22beb9520e89a71eb045c342"},{"tool":"compare_providers","kind":"changed","observed_at":"2026-10-08T10:39:03.681Z","fields":["description"],"description_before":"Step 3 of the buyer path. Side-by-side capability + plan-level prices for 2–6 providers (e.g. the Pro tier). Inputs are resolved to REAL providers — exact handle, then exact display name — and are NEVER silently swapped for a fuzzy match: unknown inputs come back in `unresolved_inputs` with `suggested_matches` and a ready-to-retry `corrected_call`, and if EXACTLY ONE input is real (the other was invented/mistyped) it does NOT dead-end — it returns `comparison_status: compared_with_market_peers`, comparing the real provider against its actual in-market competitors — its nearest providers by text-embedding — (listed in `compared_against_peers`, with a `recovery_note`); only when ZERO inputs resolve does it return `comparison_status: insufficient_valid_providers`. When the compared providers are different delivery types it sets `provider_types_present` + a `mixed_provider_types_note` (a hosted agent and an MCP server are not directly equivalent). Full evidence-scored cards for 2-6 handles side by side, each with observed price, all-time community upvotes and provider type. Each card carries the full how_to_connect object (website, docs, MCP endpoint + config_snippet, A2A card, API) so you can act on the winner directly. Each card also carries `reported_success` — the machine-reported outcome rate from report_outcome (null until 5+ distinct correlated reporters in 90 days). Report your own outcome after using the winner. Accepts `provider_ids` (aliases: handles, ids; a comma-separated string is also accepted). Use after search_providers or research_capability; when a compared provider is over budget or weakly matched, inline `suggested_alternatives` are returned. Each card also carries `deployment` (hosted / self_hosted / both / unknown, with evidence excerpt, URL and age), `licence` (named licence only) and `price_applies_to` when the stored price belongs to the vendor platform rather than the compared connector — compare hosted prices with hosted prices.","description_after":"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. Accepts `provider_ids` (aliases: handles, ids, or a comma-separated string).","description_similarity":0.412,"before_hash":"7beebbe70690e4319c00c92b2d26cc81","after_hash":"001bc9647fcd5dc453bc83395d8773a3"},{"tool":"search_providers","kind":"changed","observed_at":"2026-10-08T10:39:03.681Z","fields":["description"],"description_before":"Find candidates for a described task — example: 'supplier invoice reconciliation'. Check the strongest matches with get_provider_profile before recommending them, then use compare_providers for the shortlist. Results may include different delivery types (provider / MCP server / API / platform) and products without a numeric price: inspect the returned `priced`, `observed_price` and `provider_type` fields before treating a result as a recommendation. Set require_public_price to keep only products with an observed public price (then every returned result has one; if nothing priced is close you get an honest thin_coverage/no_match answer with the unpriced candidates labelled, never padding). max_monthly_usd drops products whose observed lowest paid tier exceeds it; sort price_asc lists cheapest observed price first. Each result carries the website URL (and pricing page URL when observed); get_provider_profile has the full evidence, plans and how_to_connect. Accepts `query` (aliases: q, text). research_capability is the optional combined route (market + pricing context + shortlist in one call). Each result also carries `deployment` (hosted | self_hosted | both | unknown — evidenced, never guessed), `mcp_endpoint` / `install` when held, and `price_note` when the observed price belongs to the vendor platform page rather than this connector; filter with `deployment`. Since 1.20.0 every result also carries: what_it_does (one sentence from the listing's saved description, or description_status 'unavailable'), fit {label match|partial|weak, does_job, summary} (why it fits and any mismatch: other job, other industry, other country), price_status known|free|contact_sales|unknown with price_checked (unknown is never free or contact-sales), and per-requirement statuses in constraints (deployment, geography, audience; constraint_notes give the source). job_constraints shows the job used for retrieval, the requirements read from your wording (required / preferred / context), exclusions, confirmed_matches or no_confirmed_match. next_steps offers at most two optional follow-ups (refine_results to name countries, request_research for one open requirement, market_report for observed prices) — nothing runs automatically.","description_after":"Use when someone needs to choose an AI product, AI agent, MCP server or API for a task, e.g. 'MCP server to read and reply to Zendesk tickets' or 'AI tool that transcribes sales calls'. Returns ranked candidates, each with what it does, a fit label (match / partial / weak, naming any mismatch such as another job, industry or country), delivery type, price status (known / free / contact_sales / unknown; unknown is never free) and links. Requirements in the wording (countries, integrations, audience, deployment) are checked per result and unverified ones are marked unknown. A result is a candidate to check, not proof it meets every requirement: inspect strong matches with get_provider_profile and compare finalists with compare_providers. Filters: require_public_price, max_monthly_usd, deployment; sort price_asc. Thin coverage returns an honest no_match, never padding. Accepts `query` (aliases: q, text).","description_similarity":0.325,"before_hash":"43bb51cfad8602eea0944fbbf7fd2d84","after_hash":"32c2ac6d7d014546c853f01978d2ef80"},{"tool":"research_capability","kind":"changed","observed_at":"2026-10-08T10:39:03.681Z","fields":["description"],"description_before":"Optional combined research route: ONE call turns a task into: (1) its live MARKET — the semantic neighbourhood of the closest-matching providers, found purely by text-embedding nearness (NO fixed category), with the relevance floor and how many providers cleared it; (2) current pricing context — comparable price range and median with mean, stdev and n, plus provider/priced counts; and (3) a ready-to-compare provider shortlist — each with observed price, market_position (below/in-line/above market), integration status, match score, and handles collected in `compare_ready`. Retrieval is 100% nearest-neighbour by text embedding: providers are matched on what they actually DO, never on an assigned label. REUSES the canonical pricing/search engines (no new pricing logic). Also returns `suggested_alternatives` (cheaper or stronger options) and a `result_fingerprint` (+ `cached`) so repeat calls are cheap. It does NOT run the comparison — pass `compare_ready` to compare_providers once you have finalists. For detailed inspection prefer the default path: search_providers → get_provider_profile → compare_providers. Aliases: `task` also accepts `query` / `q`.","description_after":"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).","description_similarity":0.379,"before_hash":"9370fd36852a77514590de7138c86f5f","after_hash":"e7aabf51eaf8b722fede38dc40a6a355"},{"tool":"market_gaps","kind":"changed","observed_at":"2026-10-06T10:30:17.093Z","fields":["description"],"description_before":"Inspect query clusters with weak coverage among indexed paid providers — research leads, not buyer counts: request counts are not buyer counts, and a gap in this index does not establish a gap in the wider market. Computed demand-first in the raw text-embedding space (NO fixed categories). A gap = a cluster of user requests seen on this MCP server that sits FAR from any PAID provider. For each gap it returns: the demand phrasing, demand_mass (how many similar requests cluster with it), nearest_paid_similarity (cosine to the closest paid provider — low = under-served) and that closest paid provider. Also returns demand_queries and paid_supply counts. Honestly returns few or no gaps while query volume is still low — it sharpens as usage grows. No arguments needed ({}); `limit` caps the list.","description_after":"Inspect query clusters with weak coverage among indexed paid providers — research leads, not buyer counts: request counts are not buyer counts, and a gap in this index does not establish a gap in the wider market. Computed demand-first in the raw text-embedding space (NO fixed categories). A gap = a cluster of user requests seen on this MCP server that sits FAR from any PAID provider. For each gap it returns: the demand phrasing, demand_mass (how many similar requests cluster with it), nearest_paid_similarity (cosine to the closest paid provider — low = under-served) and that closest paid provider. Also returns demand_queries and paid_supply counts. Honestly returns few or no gaps while query volume is still low — it sharpens as usage grows. No arguments needed ({}); `limit` caps the list. Since 1.20.0: equivalent phrasings are merged into one job; headline = jobs asked by two or more observed callers, weak_leads = one observed caller (research leads, not demand), information_requests = questions about a named existing product (e.g. its price), not unmet capabilities. Each job shows distinct_callers (hashed caller identity — an imperfect proxy for people), caller_workload_pairs, raw_requests and its observation window; repeated requests by one caller never raise its rank. Explicitly marked test traffic is excluded.","description_similarity":0.631,"before_hash":"afcb0932477c9f7fc5f3b8c3928efbd9","after_hash":"c73e944f781dda56fead6ac18b0bcb85"},{"tool":"search_providers","kind":"changed","observed_at":"2026-10-06T10:30:17.093Z","fields":["description"],"description_before":"Find candidates for a described task — example: 'supplier invoice reconciliation'. Check the strongest matches with get_provider_profile before recommending them, then use compare_providers for the shortlist. Results may include different delivery types (provider / MCP server / API / platform) and products without a numeric price: inspect the returned `priced`, `observed_price` and `provider_type` fields before treating a result as a recommendation. Set require_public_price to keep only products with an observed public price (then every returned result has one; if nothing priced is close you get an honest thin_coverage/no_match answer with the unpriced candidates labelled, never padding). max_monthly_usd drops products whose observed lowest paid tier exceeds it; sort price_asc lists cheapest observed price first. Each result carries the website URL (and pricing page URL when observed); get_provider_profile has the full evidence, plans and how_to_connect. Accepts `query` (aliases: q, text). research_capability is the optional combined route (market + pricing context + shortlist in one call). Each result also carries `deployment` (hosted | self_hosted | both | unknown — evidenced, never guessed), `mcp_endpoint` / `install` when held, and `price_note` when the observed price belongs to the vendor platform page rather than this connector; filter with `deployment`.","description_after":"Find candidates for a described task — example: 'supplier invoice reconciliation'. Check the strongest matches with get_provider_profile before recommending them, then use compare_providers for the shortlist. Results may include different delivery types (provider / MCP server / API / platform) and products without a numeric price: inspect the returned `priced`, `observed_price` and `provider_type` fields before treating a result as a recommendation. Set require_public_price to keep only products with an observed public price (then every returned result has one; if nothing priced is close you get an honest thin_coverage/no_match answer with the unpriced candidates labelled, never padding). max_monthly_usd drops products whose observed lowest paid tier exceeds it; sort price_asc lists cheapest observed price first. Each result carries the website URL (and pricing page URL when observed); get_provider_profile has the full evidence, plans and how_to_connect. Accepts `query` (aliases: q, text). research_capability is the optional combined route (market + pricing context + shortlist in one call). Each result also carries `deployment` (hosted | self_hosted | both | unknown — evidenced, never guessed), `mcp_endpoint` / `install` when held, and `price_note` when the observed price belongs to the vendor platform page rather than this connector; filter with `deployment`. Since 1.20.0 every result also carries: what_it_does (one sentence from the listing's saved description, or description_status 'unavailable'), fit {label match|partial|weak, does_job, summary} (why it fits and any mismatch: other job, other industry, other country), price_status known|free|contact_sales|unknown with price_checked (unknown is never free or contact-sales), and per-requirement statuses in constraints (deployment, geography, audience; constraint_notes give the source). job_constraints shows the job used for retrieval, the requirements read from your wording (required / preferred / context), exclusions, confirmed_matches or no_confirmed_match. next_steps offers at most two optional follow-ups (refine_results to name countries, request_research for one open requirement, market_report for observed prices) — nothing runs automatically.","description_similarity":0.657,"before_hash":"d7dedb1d47e036694d26ec8da1849628","after_hash":"43bb51cfad8602eea0944fbbf7fd2d84"},{"tool":"get_research","kind":"changed","observed_at":"2026-10-05T16:21:46.802Z","fields":["description"],"description_before":"Status and result of a research job created by request_research: queued / running / answered (with the vendor's quoted statement, source URL and actual fetch date) / still_unknown (pages checked are listed) / failed. Call it later to pick up the update.","description_after":"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.","description_similarity":0.216,"before_hash":"fe0b6cff7a4511b70aac53b90f0ab5b7","after_hash":"a7c1dfa4b12e7cf6667ea7a9838512d6"},{"tool":"request_research","kind":"changed","observed_at":"2026-10-05T16:21:46.802Z","fields":["description"],"description_before":"Opt in to research on a requirement Agentery could not answer (shown as status 'unknown', often with a research_offer). Creates a saved research job for one listing and one requirement, or joins the identical existing job. Agentery then fetches the vendor's own pages in the background and looks for its statement on the requirement. Retrieve the result later with get_research (this server does not push notifications). The result may remain unknown; a found statement is the vendor's own claim, not independent verification.","description_after":"Ask one specific question about one listing — e.g. {\"provider_id\":\"singchat\",\"requirement\":\"Does the Business plan's Subscribe button lead to checkout or a contact-sales form?\"} or {\"provider_id\":\"flux_operator\",\"requirement\":\"Is there a Helm chart for Kubernetes deployment?\"}. Agentery reads the vendor's own pages, its verified code repository (README, file list, Dockerfile/chart/licence files, releases — read, never run) and, for buying questions, the pricing page's buttons and where they lead, and answers that exact question: answer yes / no / partly / unknown with quotes, URLs, observation dates (and file path + revision for repositories). Usually the answer is in this same response within about 15 s (fields result and phase); otherwise call get_research with the job_id after poll_after_seconds. Identical questions join one job and reuse its answer at no cost. 'unknown' is a valid outcome; a found statement is the vendor's own claim, not independent verification. This server does not push notifications.","description_similarity":0.271,"before_hash":"e6ade9a1fdba91fc23afe6b3b7b178e1","after_hash":"c4d3decbb4d83f54dd06a9774bbb819e"},{"tool":"market_report","kind":"changed","observed_at":"2026-10-04T16:27:02.264Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"32ed437111c55f3bcccfffd53a5b6eda","after_hash":"2b11a219de99d974e784f4b52b905dbd"},{"tool":"refine_results","kind":"changed","observed_at":"2026-10-04T16:27:02.264Z","fields":["description"],"description_before":"Refine an earlier search_providers or research_capability answer with a correction, and get a better answer back in the same call. Pass the request_ref returned with that answer and the correction in plain words: what was missing or wrong (e.g. 'I meant apps that reduce business costs', 'must integrate with Slack', 'budget is $20/month', 'data must stay in the EU'). Agentery re-reads the request with the correction (changed constraints change, the others are kept), runs the search again and returns the new answer plus a short explanation of what changed. Optional: source = 'human' (the user's own words), 'agent' (your own assessment) or 'follow_up' (an ordinary narrowing, not a complaint). A message with nothing actionable (e.g. 'thanks') is just acknowledged. Agentery only sees the request and correction you send, never your wider conversation.","description_after":"Refine an earlier search_providers or research_capability answer with a correction, and get a better answer back in the same call. Pass the request_ref returned with that answer and the correction in plain words: what was missing or wrong (e.g. 'I meant apps that reduce business costs', 'must integrate with Slack', 'budget is $20/month', 'data must stay in the EU'). Agentery re-reads the request with the correction (changed constraints change, the others are kept), runs the search again and returns the new answer plus a short explanation of what changed. Optional: source = 'human' (the user's own words), 'agent' (your own assessment) or 'follow_up' (an ordinary narrowing, not a complaint). A message with nothing actionable (e.g. 'thanks') is just acknowledged. Agentery only sees 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.","description_similarity":0.723,"before_hash":"dd582f42c3d4df7120f6cbebfe2a07eb","after_hash":"e8695dce536be7952c2816a837c43552"},{"tool":"price_benchmark","kind":"changed","observed_at":"2026-10-04T16:27:02.264Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"56b9527a08b2f5a9a42a659277977f38","after_hash":"68827f7198eb0ebd342740ff4c54c55f"},{"tool":"compare_providers","kind":"changed","observed_at":"2026-10-04T16:27:02.264Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"ee0e6204d18b68b25bd6679a64e8201e","after_hash":"7beebbe70690e4319c00c92b2d26cc81"}],"next_before":"353755","next_actions":[{"action":"list_changes","description":"Older changes","href":"/v1/servers/com.agentery%2Fagentery/changes?before=353755&limit=50"}]}