Skip to main content
Glama

Server Details

Find and compare 41,000+ AI agents, MCP servers and APIs, with daily prices and the AEPI price index

Ownership verified
Status
Healthy
Uptime
100.0% over the last 24 hours
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A4/5.0

Scored across 23 tools

Disambiguation3/5

Several tools overlap heavily around market and pricing research: find_market, market_report, research_capability, price_benchmark, and get_group_fair_price all answer related questions, while demand_signals and market_gaps are close cousins. The descriptions explicitly route agents to the right tool, but there are more than one or two plausible confusions in the set.

Naming Consistency4/5

All names are consistently snake_case and readable. There is a minor mix of verb_noun patterns (search_providers, get_provider_profile, compare_providers) with noun-only names (market_report, price_benchmark, demand_signals) and research job operations, but the convention is mostly predictable.

Tool Count3/5

At 23 tools, the surface is heavy and borderline crowded for a marketplace/research server, though many tools map to genuinely distinct workflows. Each tool has a purpose, but the breadth of specialized pricing, market research, benchmark, and research-job operations makes the set feel large.

Completeness4/5

Coverage is strong across the core lifecycle: search, profile, compare, alternatives, outcome reporting, custom benchmark create/get/update/delete, research request/get/stop, and current/history price indices. Minor gaps exist, such as listing saved custom benchmarks or more research-job management, but agents can work around them.

Available Tools

23 tools
compare_providersCompare providersA
Read-only
Inspect

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).

NameRequiredDescriptionDefault
taskNoOptional. The buyer's job in plain words; used as the service_view heading.
detailNoOptional. concise (default): the decision view. full: the complete comparison (all plan lines, evidence checks, deployment, licence, how to connect, requirement evidence excerpts).
serviceNoOptional. A service recipe whose fixed requirements and evidence fields are applied (see service_view.requirements).
optionalNoOptional preferences: reported in service_view but never gating.
request_refNoOptional 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.
provider_idsYes2-6 provider handles from search_providers/market_gaps, e.g. ["openhands","lexaclaw"]
requirementsNoOptional. 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.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite readOnly/non-destructive annotations already covering the safety profile, the description discloses substantial behavior: resolution order (exact handle, then exact name, never silent fuzzy swap), unresolved_inputs with suggested_matches and corrected_call, single-valid-input peer comparison, insufficient_valid_providers status, mixed delivery-type warning, and the concise-vs-full return modes. This is exactly the edge-case context an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose before behavioral detail, and nearly every clause carries decision-relevant information (resolution rules, statuses, delivery-type warning). It is dense and long for a single paragraph, but trimming would lose substantive edge-case guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a comparison tool with an output schema, the description covers what the schema cannot: input resolution failure modes, peer-comparison fallback, mixed delivery-type caveats, and suggested_alternatives with over-budget matches. An agent can call it correctly and interpret degenerate outcomes without further documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description nevertheless adds real value by documenting that provider_ids accepts aliases (handles, ids, or a comma-separated string) and by clarifying that detail:"full" expands every field. Remaining params (task, service, optional, request_ref) are left to the schema, which already documents them fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('compare 2–6 shortlisted listings side by side') and enumerates exactly what is compared: plan-level prices, capabilities, deployment, licence and how to connect, plus quote-vs-alternatives. It also names the sibling tools that produce its inputs (search_providers/market_gaps), so an agent can place it in the workflow without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear about the intended situation: shortlisted listings (2–6) or checking a quote against alternatives, with the prerequisite that handles come from search_providers/market_gaps. It does not explicitly say when NOT to use it (e.g. for open-ended discovery, where search_providers belongs), which keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_custom_benchmarkCreate custom benchmarkAInspect

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.

NameRequiredDescriptionDefault
addNomembers to add
nameNoOptional private label
removeNoMode B: members to drop from the forked market
membersNoMode A: exact handles (preferred), product names or domains
base_nicheNoMode B: slug of the canonical market to fork
allow_partialNoCreate with only the resolved members when some inputs don't resolve (default false)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-readonly, non-idempotent, non-destructive, closed-world behavior, but the description adds crucial context the agent would otherwise lack: the benchmark is PRIVATE, it returns a one-time secret benchmark_id token that is the sole key for later operations, ambiguous names are returned as candidates rather than auto-resolved, and unresolved inputs block creation unless allow_partial:true. It also reassures that canonical market data is never changed, which matters for a create operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but front-loaded: the primary purpose and trigger condition come first, followed by the two modes and then the return-value/error-handling details. Every sentence carries useful information, though the single-paragraph form is long enough that mode details and secret-token guidance compete for attention; light structuring (e.g., explicit 'Mode A / Mode B' labels, which are present) keeps it readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given six optional parameters, an output schema that covers return values, and rich annotations, the description fills the remaining gaps an agent needs: the two creation modes, ambiguity handling, the one-time secret benchmark_id and its downstream uses, and the allow_partial behavior. Nothing needed to call this tool correctly or interpret its result is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains each parameter. The description nonetheless adds mode-level semantics the schema cannot convey: which parameters belong to Mode A vs Mode B, that product names/domains resolve only when unambiguous, and the precise effect of allow_partial (creating with resolved members only). This cross-parameter logic materially reduces invocation error risk.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (creates a private custom benchmark / saved peer cohort) and immediately distinguishes it from siblings like get_custom_benchmark, update_custom_benchmark, and delete_custom_benchmark by naming where the returned benchmark_id is later used. The framing 'Use when someone wants to keep watching the prices of products they choose' makes the intent unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly defines two modes with the exact parameter that selects each (members for Mode A, base_niche plus optional remove/add for Mode B) and states no account is needed. It also specifies downstream usage (get/update/delete, market_report, get_price_index) and the allow_partial fallback when inputs don't resolve, leaving no ambiguity about when to use this tool versus its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_custom_benchmarkDelete custom benchmarkA
DestructiveIdempotent
Inspect

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

NameRequiredDescriptionDefault
benchmark_idYesYour cb_ token

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered; the description adds genuinely new context by clarifying this is a soft disable that retains only a minimal audit record and touches no underlying Agentery data — a meaningful qualification of 'destructive'. It stops short of stating whether the disable is reversible or what permissions are required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core semantics (disabling, not deleting) before the reassurance about data safety and the parameter note. Nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and annotations carry safety/idempotency, so the description only needs to cover intent and side effects — which it does well. It omits whether the benchmark can be re-enabled and what the audit record entails, minor gaps for a one-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is documented as 'Your cb_ token'. The description's 'Pass `benchmark_id`' merely restates the schema rather than adding format or sourcing guidance, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific operation on a specific resource ('Disable access to a custom benchmark') and immediately resolves the ambiguity of 'delete' by clarifying it is a soft disable that preserves an audit record. It does not explicitly contrast itself with siblings like update_custom_benchmark or get_custom_benchmark, so it falls just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose implies when to call it (when a benchmark should no longer be accessible), but there is no explicit when-to-use/when-not-to-use statement and no alternative named — an agent must infer that update_custom_benchmark is the choice for modification and that this is the terminal removal path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

demand_signalsView demand signalsA
Read-only
Inspect

Lists searches that found nothing good: queries by external callers in the last 90 days that returned no provider or only weak matches (best relevance below 0.62). Use this when you want searches Agentery could not answer well, as generalised job labels 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 insufficient qualifying evidence (status insufficient_evidence + next_step) — it is never filled from search popularity, page views or trending queries. Use market_gaps instead for jobs that few paid products serve.

NameRequiredDescriptionDefault
limitNoMax signals (1-50, default 20)
include_ownNoAlso list signals that come ONLY from your own searches (default false; counted in your_own_only_excluded)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description still adds real context beyond them: the 90-day/0.62 thresholds, the single-caller interpretation warning, and the fact that an empty response returns insufficient_evidence + next_step rather than being backfilled. However, it never explains ordering beyond "ranked by distinct callers" interplay with limit/pagination, and the "generalised job labels" output shape is only loosely described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core definition is front-loaded in the first sentence, and every subsequent clause carries a caveat an agent would otherwise get wrong (single-caller leads, insufficient_evidence, no popularity fallback). It runs long and stacks several parenthetical qualifications, but none is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value structure needn't be described, and the description covers the one output case an agent must handle (empty response meaning insufficient evidence). With annotations, thresholds, sibling routing and the include_own default caveat all present, nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both limit (1-50, default 20) and include_own (default false, counted in your_own_only_excluded) are already documented. The description adds only the empty-args case, which the schema does not state; it says nothing new about limit range or the effect of include_own. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Lists searches that found nothing good" gives a specific verb and resource, then sharpens it with a precise definition (external callers, last 90 days, no provider or best relevance below 0.62). It explicitly contrasts itself with market_gaps, so an agent can separate the two sibling tools without reading either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States when to use it ("when you want searches Agentery could not answer well"), when not to lean on it ("not a prerequisite for choosing a product"), and names the alternative for the adjacent case (market_gaps). It even specifies the empty-args invocation behavior, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_marketFind a marketA
Read-only
Inspect

Maps a task to its market: who competes there, how many are priced, and the price level per buyer tier. Use this when someone asks who competes in a space or what a kind of product costs, e.g. 'tools that monitor competitor pricing'. Returns the market label (nearest providers by meaning, no fixed categories), 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. Use market_report instead for the full measured breakdown; research_capability for market plus shortlist in one call; price_benchmark to judge a specific price.

NameRequiredDescriptionDefault
taskYesREQUIRED. 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.
queryNoAlias for task (back-compat only) — prefer task

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, non-open-world, non-destructive profile, so the description's value is the extra behavior it discloses: matching is semantic with no fixed categories, and when coverage is weak it returns no_match or thin_coverage and withholds pricing rather than fabricating a market. That negative-path behavior is exactly what an agent needs to interpret an empty-looking result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and trigger before the return-value detail, and every sentence is load-bearing. The long enumeration of return fields is slightly redundant given a declared output schema, which is the only real trimming opportunity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers trigger conditions, semantic matching model, fallback states, and sibling routing, which is ample for a two-parameter read tool. The extended return-value narration overlaps with the existing output schema, so it is complete with a little duplication rather than a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents both the required task string, the empty-call behavior, and the query back-compat alias. The description adds only an illustrative example ('tools that monitor competitor pricing'), which the schema already supplies in kind. Baseline 3 applies when the schema carries the parameter burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Maps a task to its market') and immediately enumerates the scope: who competes, how many are priced, price level per buyer tier. The description of the semantic nearest-provider matching ('nearest providers by meaning, no fixed categories') distinguishes it clearly from category-browsing siblings like search_providers or market_report.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('when someone asks who competes in a space or what a kind of product costs') with a concrete example query. It then routes to three named alternatives with the condition that selects each: market_report for the full measured breakdown, research_capability for market plus shortlist, price_benchmark to judge a specific price.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_custom_benchmarkGet custom benchmarkA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
as_ofNoOptional YYYY-MM-DD — reproduce the exact stats + index as they were on that date, using this version's fixed membership
versionNoOptional benchmark version (default latest)
benchmark_idYesYour cb_ token (bearer secret; passed as an argument, never a URL)
response_modeNofull includes the index series

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description goes beyond that with real behavioral constraints: headline medians/quartiles appear only with ≥3 comparable priced members and monthly/per-seat/per-call prices are never blended, which tells the agent what results can look like and why.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The report contents are front-loaded in a single dense sentence, followed by the argument instruction. Efficient overall, though the final sentence largely repeats the benchmark_id guidance already present in the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-structure detail is unnecessary and annotations carry the safety profile. The description supplies the one non-obvious caveat (aggregation threshold) and covers the read path adequately for a 4-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so as_of, version, benchmark_id, and response_mode are already documented, including the enum. The description only reinforces that benchmark_id is a cb_ token passed as an argument, adding little beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a private custom benchmark's current report') and enumerates what the report contains: members, stats, cohorts, historical index, coverage. This clearly separates it from the create/update/delete_custom_benchmark siblings and from market-level tools like get_price_index.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied — read the report for a custom benchmark you already own — but there is no explicit when-to-use or when-not versus siblings such as price_benchmark, compare_providers, or get_price_index. The only explicit instruction is passing benchmark_id as an argument.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_group_fair_priceGet group fair priceA
Read-only
Inspect

Gives the broad group-wide fair price for a kind of product: the median entry monthly price per buyer tier across its whole product group. Use this when you want a general price guide: give a task or product type (or a group_id from the group price league) and get the fair price for each buyer tier (individual, pro, team / small business, enterprise) with its typical range, the group's typical payment models (free, subscription, usage, one-time, contact sales), usage and one-time medians where at least 3 listings publish them, and the group's 90-day price-index change. Groups are built from what products do, not from price. Medians of current published prices only; individual listings are not returned. Call with no arguments to list group IDs. Use price_benchmark instead to check a specific quote against the closest comparables; search_providers for candidates.

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

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important behavior: it returns medians of current published prices only, does not return individual listings, includes usage and one-time medians only where at least 3 listings publish them, and reports the group's 90-day price-index change. These details meaningfully tell the agent what to expect from the result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then covers alternatives and invocation modes. It is dense but mostly earns its length; some clauses could be trimmed, but none are irrelevant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description need not explain return values in full. It covers purpose, alternatives, thresholds, no-argument behavior, and scope limitations, so an agent has enough information to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value by clarifying that the no-argument case lists group IDs and that group_id can come from the group price league, supplementing the schema's references.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it gives a broad group-wide fair price for a product group, defined as the median entry monthly price per buyer tier. It explicitly distinguishes itself from price_benchmark and search_providers, so an agent can identify its role without inspecting the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage guidance: use this for a general price guide, use price_benchmark for checking a specific quote, and use search_providers for candidates. It also explains that calling with no arguments lists group IDs, covering the main invocation modes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_price_indexGet price indexA
Read-only
Inspect

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 chained quoted-price index of observed agent and MCP pricing in US dollars (changes in the publicly quoted price of the same product and offer; base 100 = 30 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). Every response names its release_id, reference_currency and methodology_revision; response_mode=full adds fx_attribution (exact native-price and exchange-rate contributions per window: log changes add, level factors multiply) and currency_evidence. 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.

NameRequiredDescriptionDefault
tierNoFilter to one buyer tier ('team' = Team/SME). Default 'all'.
benchmark_idNoOptional: 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_typeNo'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.
response_modeNo'summary' (default) or 'full' (adds exact native / FX / combined contributions for the 1d, 7d and 30d windows with their from/to days and units, the currency-evidence split of the index weight, and the full methodology revision note).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover the read-only/safe profile, and the description goes well beyond them: it defines the index as a chained quoted-price index (base 100 = 30 Jun 2026, an index level rather than a price) and states every response carries release_id, reference_currency and methodology_revision. It also discloses what response_mode=full unlocks (fx_attribution, currency_evidence), which the agent would otherwise only discover by calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The trigger and the definition are front-loaded, and the closing routing sentence earns its place. The middle is one very long sentence with nested parentheticals (base 100, index level, log changes add / level factors multiply), which is dense but nearly all substantive rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the definition covers everything an agent needs to select and call correctly: trigger, index semantics, segment selection, response_mode effect, and sibling routing. Nothing material is left ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, and the description still adds meaning: provider_type values are explained semantically ('standalone index over just that delivery type, own base 100') rather than just enumerated, and response_mode's added payload is spelled out. The benchmark_id guidance mentions a 'niche' parameter not present in the schema, which is a small inconsistency but does not obscure usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and scope: the Agent Economy Price Index with 1-, 7- and 30-day change and four buyer tiers. It explicitly distinguishes itself from get_price_index_history (trend over time), get_group_fair_price and price_benchmark (what a product costs), so an agent can separate it from siblings without reading schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with a concrete trigger ('Use when asked whether prices ... are rising or falling overall') and names the correct alternatives for adjacent questions. It also advises which index segment to read ('an MCP buyer should read the mcp index and an agent buyer the agent index'), which is a routing decision not obvious from the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_price_index_historyGet price index historyA
Read-only
Inspect

Use to show how AI agent and MCP prices have moved over time: the dated Agent Economy Price Index series, the same chained quoted-price series (US dollars, base 100 = 30 Jun 2026) agentery.com/aepi charts. Points are index levels, never prices; calendar days with no published observation are listed in gaps with their reason, never interpolated. 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 per-day native / FX / combined components and the window's exact attribution). 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.

NameRequiredDescriptionDefault
tierNoReturn one buyer tier's series ('team' = Team/SME). Default 'all' = the headline series.
sinceNoOptional, 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.
periodNoHistory window. Default '30d'.
benchmark_idNoOptional: a private custom benchmark token (cb_…) — returns that cohort's dated series instead of the economy series. Cannot be combined with niche.
provider_typeNo'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).
response_modeNo'summary' (default, compact) or 'full' (adds per-day native / FX / combined log changes and levels, the window's exact attribution and the currency-evidence split).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/destructive annotations: points are index levels never prices, missing days are reported in `gaps` with reasons and never interpolated, thin data returns `insufficient_history` rather than an invented series, and 'full' mode adds attribution and currency-evidence splits. These are real behavioral contracts an agent cannot infer from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and the sibling redirect, and no sentence is pure filler. However the single dense paragraph with semicolon-chained parameter notes is harder to scan than it needs to be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a 100%-covered schema, full annotations, and an output schema, the description supplies exactly the missing layer: what the numbers mean, how gaps are handled, and when not to use it. Nothing needed to call it correctly is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema descriptions are themselves detailed (enum meanings, defaults, benchmark_id/cursor behavior), so the description largely restates defaults. It mentions tier, provider_type, period and response_mode but omits `since` and `benchmark_id` details that the schema carries. Baseline 3 fits.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'show how AI agent and MCP prices have moved over time' and names the exact artifact (the dated Agent Economy Price Index, base 100 = 30 Jun 2026). It explicitly separates itself from get_price_index-adjacent siblings by pointing to price_benchmark and market_report for per-capability costs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing: 'For what one capability costs use price_benchmark or market_report,' plus when to use `tier`, `provider_type`, `period`, `response_mode`, and when to supply `benchmark_id`. The polling path is also spelled out via `since` semantics in the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_providerGet provider detailsA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
handleNoProvider handle, e.g. 'openhands'
regNumNoRegistration number, e.g. 2432

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered by structured data. The description adds genuine context beyond that: this returns a deliberately *short* card, and the structured profile is only present 'when available' — warning the agent that fields may be missing. It doesn't discuss rate limits or lookup-failure behavior, which keeps it at 4 rather than 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with zero waste, and the routing decision (prefer get_provider_profile; use this only for…) is front-loaded so the agent sees the disambiguation rule before the field list.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be explained, yet the description enumerates the card's contents anyway and flags that the structured profile is conditional. Combined with annotations covering the read-only, closed-world safety profile, an agent has everything needed to select and invoke this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with both parameters documented (handle example, regNum example), so the schema carries the semantic load and the baseline is 3. The description reiterates the two lookup keys ('by handle or registration number') but adds no format, precedence, or mutual-exclusivity detail beyond what the schema already shows.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (retrieve the short public directory card of one provider) and enumerates exactly what the card contains: bio, source URLs, X-verification status, entity type, community rating, structured profile. It explicitly names the sibling get_provider_profile as the tool for a different need, so an agent can disambiguate without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use rule ('for buying decisions prefer get_provider_profile') and a restrictive when-to-use-this rule ('use this only for the short public directory card'), naming the alternative tool directly. Both the positive and negative conditions are spelled out rather than implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_provider_profileGet provider profileA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
provider_idYesThe provider_id/handle returned by search_providers or compare_providers

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this read-only, non-destructive and closed-world, and the description goes well beyond them: fields are null when the vendor publishes nothing and nothing is guessed, price_applies_to flags a stored price belonging to the vendor's platform rather than this connector, and reported_success stays null until 5+ distinct reporters in 90 days. These are exactly the data-quality caveats an agent needs before quoting a value to a user.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the usage trigger before the field inventory, and every clause carries information (null policy, price_applies_to, the 5-reporter threshold). It is still a dense single block that spills return-field detail which partly duplicates the existing output schema, keeping it just shy of a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description usefully adds semantics the schema cannot convey: what nulls mean, why price_applies_to exists, and the threshold behind reported_success. Combined with full schema coverage and clear annotations, an agent has enough to call and interpret this tool; the only real gap is disambiguation from get_provider.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter at 100% schema coverage, the schema already explains that provider_id/handle comes from search_providers or compare_providers. The description only reinforces that this identifies 'one specific listing' and adds no format or syntax detail, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource: check one specific listing (plans, prices, integrations, deployment, licence, liveness, connection paths). That is far more specific than the title. It does not, however, distinguish itself from the sibling get_provider, which by name appears to fetch the same entity, so the agent is left to guess which listing-fetch tool to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to check one specific listing before recommending or connecting it' gives a clear trigger condition, and 'after actually using a listing, call report_outcome' explicitly hands off to the correct sibling. What is missing is guidance on when to prefer get_provider or compare_providers instead, so the alternatives are only partially covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_researchGet research resultA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
job_idYesThe job_id from request_research (rj_ + 12 hex).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral context beyond the read-only annotations: status and phase enumerations, polling cadence, and the guarantee that polling is free and never repeats work. It also describes the shape of the result and evidence, which helps the agent interpret responses correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and avoids filler, but it is a dense run-on paragraph. The status, phase, polling, and result details all earn their place, though clearer structure would improve scanability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the polling-based complexity, the description covers statuses, phases, polling behavior, and result contents thoroughly. With an output schema available to carry return-value details, this is complete enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and job_id is already documented as coming from request_research. The description reinforces the request_research relationship but adds no new syntax or format details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: retrieving the status and result of a research job created by request_research. This clearly distinguishes it from the creation tool and from unrelated sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly establishes the usage context: call this after request_research and poll no more often than poll_after_seconds. It does not explicitly name when-not to use it or point to stop_research_updates as an alternative, so it falls short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_gapsFind market gapsA
Read-only
Inspect

Finds jobs callers ask for that few paid products serve: requests seen on this MCP server, clustered by meaning, that sit far from any paid provider. Use this when a seller or investor asks where under-served opportunities are. Returns 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. Use demand_signals instead when you want searches that returned no or only weak results.

NameRequiredDescriptionDefault
rankNogaps (default): whitespace with money, crowded excluded. hot: most active by market pulse, crowding ignored.
limitNoMax gaps (1-50, default 15)
sectorNoOptional sector filter, e.g. 'legal', 'healthcare'
include_ownNoAlso list leads asked ONLY by you (default false: one caller's repeated searches are not independent demand; they are counted in your_own_only_excluded)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond the readOnly/openWorld annotations: test traffic is excluded, small-sample results are normal, and the output is research leads rather than buyer counts or proof of a market-wide gap. The enumeration of returned fields partly duplicates the output schema, but the semantic gloss ('similarity low = under-served', headline = 2+ callers, weak_leads = one caller) is genuinely additive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then routing, then returns, then caveats — a sensible order with no filler sentences. It is dense, though: the return-field list and the lead-tier definitions are packed into one long block, and the caveat about small samples is easy to skim past at the end.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be re-explained, and the description still covers the interpretive caveats an agent needs to avoid overclaiming. The one material omission is any hint that results can be re-ranked by 'hot' or narrowed by sector, which changes what the tool produces.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter is well described, so the baseline is 3. The description's only parameter-adjacent statement is 'No arguments needed', which understates the available controls — the rank enum (gaps vs hot) and the sector filter materially change results but are not mentioned or cross-referenced.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb plus a precisely scoped resource: 'jobs callers ask for that few paid products serve ... clustered by meaning, that sit far from any paid provider.' It also names the sibling it is not (demand_signals) and the audience that asks for it, so an agent can route without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('when a seller or investor asks where under-served opportunities are') and an explicit alternative with its own condition ('Use demand_signals instead when you want searches that returned no or only weak results'). This is the when/when-not/alternative pattern at full strength.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_reportGet market reportA
Read-only
Inspect

Measures ONE market in depth before building or investing: the full observed price distribution by provider type and buyer tier, and the providers competing there. Use this when you need detailed market numbers, not a quick map. The market is the semantic neighbourhood of your query (nearest providers by text embedding, NO fixed category). Every field is MEASURED: the observed-pricing benchmark (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 competing providers with observed price and relevance. Pass query (e.g. 'customer support chatbot'). Use find_market instead for a quick market map; research_capability for market + pricing + a ready shortlist in one call; search_providers to pick a product.

NameRequiredDescriptionDefault
limitNofull mode: members per page (1–150, default 50).
queryYesNatural-language capability or market, e.g. 'customer support chatbot' or 'ai phishing detection'.
offsetNofull mode: paging offset over members (default 0).
cohort_refNoOptional (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.
request_refNoOptional 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.
response_modeNo'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).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=true, openWorld=false, destructive=false, so safety is covered. The description adds meaningful context beyond that: all fields are MEASURED (no synthetic data), the market is derived by text embedding with no fixed category, and it clarifies what each response_mode contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and routing before detail, and every clause carries information. Slightly verbose with repeated emphasis ('ONE', 'MEASURED' three times) but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return shape needn't be explained, and the description nonetheless covers modes, paging, cohort reuse, and request_ref continuation. Complete for an agent to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the bar is baseline 3. The description adds value by giving a concrete query example, clarifying the semantic-neighbourhood selection, and reinforcing the summary vs. full mode behavior beyond the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Measures ONE market in depth') plus what it returns (price distribution by provider type/buyer tier, competing providers). Explicitly distinguishes from find_market, research_capability, and search_providers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the selecting condition ('when you need detailed market numbers, not a quick map') and names three alternatives with the use case for each. Routing is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

price_benchmarkBenchmark a priceA
Read-only
Inspect

Judges a specific price or quote against the closest comparable products by what they do (no fixed categories), in the buyer's tier and pricing unit. Use this when asked 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. 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. Use get_group_fair_price instead for a broad group-wide guide; find_market for who competes.

NameRequiredDescriptionDefault
taskNoAlias of `query` (same text).
limitNoObservations per page in full mode (1–100, default 50).
nicheNoLegacy alias of `query`, kept for older clients — prefer `query`.
queryNoThe capability to benchmark, in natural language, e.g. 'AI code review' or 'supplier invoice reconciliation'. Preferred input.
offsetNoPaging offset over the selected observations in full mode.
sectorNoSector name, e.g. 'legal' (ignored if a query is given)
currencyNoCurrency of proposed_price (ISO code, default USD).
buyer_tierNoBuyer 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.
cohort_refNoOptional (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.
commitmentNoBilling commitment of proposed_price (default monthly).
request_refNoOptional 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.
pricing_unitNoBilling 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.
provider_typeNoDelivery 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).
response_modeNo'summary' (default): the selected benchmark with its top observations. 'full': every included observation (paged), with plan, native price, unit, commitment, source and observed date.
proposed_priceNoOptional (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.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, non-destructive, closed-world), and the description adds substantial context beyond them: results are never blended across incompatible pricing units, split by delivery type and buyer tier, and fall back to resolved:false with a note rather than an invented figure. It also sets expectations that a benchmark is an observed sample, not a quote or willingness to pay.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and trigger are front-loaded before the return-shape and caveat sentences, and each sentence carries information. Slightly long for a single tool definition, with some overlap between the return-format and sibling-routing sentences, but no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter analytical tool with an output schema, the description covers input intent, segmentation logic, degenerate-case behavior, and the interpretive limits of the result. Nothing an agent needs to call it correctly or read the output sensibly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by explaining when to supply provider_type and buyer_tier and by naming the query aliases (task, niche). It does not add much for paging, currency, commitment, or cohort_ref, which the schema already handles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — judges a price/quote against comparable products — with the comparison basis ('by what they do, no fixed categories') and scoping (buyer tier, pricing unit). It explicitly distinguishes itself from siblings by naming get_group_fair_price for group-wide guides and find_market for competitor discovery.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('Use this when asked whether a price is fair or what a capability typically costs') with a concrete example, plus named alternatives and the conditions that select them. Guidance on setting provider_type and buyer_tier when known further narrows invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refine_resultsRefine search resultsA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
sourceNoWhere the correction came from. Default 'agent'.
correctionYesWhat was missing or wrong, in plain words.
request_refYesThe request_ref from the earlier answer (rq_ + 12 hex characters).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is non-read-only, destructive, non-idempotent, and closed-world. The description adds useful behavioral context: Agentery re-runs the search while keeping other constraints, returns the new answer plus what changed, only sees the request/correction rather than the wider conversation, and references expire after 24 hours. It does not fully detail what is destroyed or invalidated by the re-run, so it falls short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core usage condition and correction examples, then moves into mechanics, privacy scope, task-answer protocol, and expiry. It is dense but appropriate for a multi-step continuation tool. There is some repetition, notably restating the source enum and 'plain words' guidance, which keeps it from being maximally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is complete for an agent to call the tool correctly: it covers prerequisites (request_ref), correction format, source semantics, continuation behavior, privacy scope, and expiry. An output schema exists and annotations exist, so return-value details and safety traits are already covered by structured fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining the source values ('human' = user's words, 'agent' = your assessment/default, 'follow_up'), giving correction examples such as 'must integrate with Slack' and 'budget is $20/month', and clarifying that request_ref comes from the earlier answer.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: refine results by passing a request_ref and correction so Agentery re-runs the search with changed constraints. It explicitly names sibling tools (search_providers, research_capability) and distinguishes this tool as the correction/refinement path rather than a fresh search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance: 'Use when an earlier search_providers or research_capability answer missed what was meant.' It explains exactly what to pass (request_ref plus correction in plain words), provides examples, and names the alternative continuation path: pass the same request_ref to another task tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

report_outcomeReport provider outcomeAInspect

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).

NameRequiredDescriptionDefault
noteNoOptional free-text detail (capped at 300 chars)
outcomeYesDid the provider accomplish the task you hired it for?
agent_idYesHandle of the provider you used, as returned by search_providers/get_provider_profile/compare_providers
task_typeNoOptional short task label, e.g. 'code-review', 'lead-enrichment'
latency_msNoOptional end-to-end latency of the provider in milliseconds
error_classNoOptional failure class, e.g. 'timeout', 'auth', 'wrong-output', 'endpoint-down'

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite the mutation annotation set (readOnlyHint=false), the description adds substantial behavior the annotations do not cover: self-reported evidence subject to eligibility checks, unmatched reports stored but unweighted, 5+ reporter aggregation with a 90-day window, doubled rate limit at 5+ correlated reports, and identity hashing via the x-agentery-key header. This is well beyond the annotation baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The critical distinction (real use vs. connection testing) is front-loaded, and most sentences carry policy the agent needs. It is dense and long for a single paragraph, but the incentive and identity details justify their space rather than padding it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter mutation with an output schema, the description covers the one thing the schema cannot: the eligibility and correlation rules that determine whether the report counts. Return values need not be explained because an output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description still adds value by explaining what makes agent_id meaningful (it must correspond to a provider named in one of the caller's recent retrievals) and by framing outcome as a hired-task judgment. It does not detail latency_ms or error_class, but the schema already does.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names a specific verb and resource ('Report the result of ACTUALLY USING a listed provider') and immediately distinguishes this action from connection/retrieval testing. An agent can tell exactly what is being written and what is not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states both the positive case (you actually used the provider for a task) and the explicit exclusion (testing Agentery's connection or retrieval does not establish that the provider worked — do not report those). It further narrows valid use to reports matched against the caller's own retrievals in the last 48h via named sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

request_researchRequest product researchA
Idempotent
Inspect

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.

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

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: typical latency (~15 s), the polling handoff, job deduplication for identical questions, that code is read but never executed, and an epistemic caveat that a found statement is the vendor's own claim, not independent verification. The readOnlyHint=false annotation is consistent with the description's disclosure that a job is created (a job_id is returned).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the trigger condition and free of filler, but it is one dense run-on paragraph carrying trigger, mechanics, async handoff, dedupe and caveat in a single breath. Splitting the async/dedupe/caveat sentences would improve scanability without adding length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still supplies what the schema cannot: when the call is warranted, expected latency, what to do on timeout, job sharing, and how much to trust the result. For a paid, open-world, asynchronous research request this covers everything an agent needs before invoking it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and all three parameters are already documented, including provider_id provenance and requirement examples, so the baseline is 3. The description's sample payload restates the same information rather than adding new semantics such as how request_ref links to a prior answer or how to phrase requirements that the answer vocabulary (yes/no/partly/unknown) can resolve.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (request research), a precise scope (one specific fact about one listing that its profile does not settle), and the exact sources consulted (vendor pages, code repository read-not-run, pricing page buttons). The answer shape (yes/no/partly/unknown with quotes, URLs, observation dates) makes it unmistakable which sibling produces this output versus get_provider_profile or compare_providers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening clause gives an explicit trigger condition and two concrete example questions, and the async path names the alternative: if not answered in ~15 s, call get_research with the job_id after poll_after_seconds. It also warns that identical questions share one job. It lacks an explicit 'do not use for' against broad siblings like research_capability or compare_providers, so the exclusion is only implied by 'one specific fact about one listing'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

research_capabilityResearch a capabilityA
Read-only
Inspect

Gives a one-call first overview of a buying task: market prices, a short priced shortlist and alternatives together. Use this when you want a quick picture: the closest listings (matched on what they do, no fixed categories), 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, plus suggested_alternatives. It does not run the comparison. Use search_providers → get_provider_profile → compare_providers instead for careful selection; price_benchmark to judge one price. Accepts task (aliases: query, q).

NameRequiredDescriptionDefault
sortNoShortlist ordering. Default 'match'.
taskYesRequired — the natural-language capability/task, e.g. 'reconcile supplier invoices' or 'litigation-analysis provider'. Aliases: query, q.
limitNoShortlist size (1-12, default 5).
buyer_tierNoOptional buyer tier to price against ('team' = Team/SME).
cohort_refNoOptional (1.17.0): reuse the exact set of comparable providers selected by an earlier price_benchmark / market_report / research_capability call.
request_refNoOptional 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.
integrationsNoOptional required integrations, e.g. ["zendesk","slack"] — soft preference; integration status is reported per provider.
provider_typeNoPreferred 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.
response_modeNo'summary' (default) or 'full' (adds tier cohorts, coverage and raw results).
max_monthly_usdNoOptional budget ceiling in USD/month — filters the shortlist and drives suggested_alternatives.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only safety, but the description adds substantive behavior: the response includes price range and median with sample size, market_position labels, compare_ready handles, and suggested_alternatives. It also discloses a scope boundary ('does not run the comparison'), though it omits latency or result-volume expectations. The added output-context value is strong, but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and return contents, then moves to alternatives. It is information-dense but slightly packed into two long sentences; every sentence carries useful routing or output information, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not detail return values, yet it still summarizes the key outputs an agent needs to interpret the response. All required routing, scope boundaries, and workflow alternatives are covered, leaving no ambiguity for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all ten parameters, including enums, defaults, and aliases. The description only repeats the `task` parameter and its aliases, adding no syntax or usage detail beyond the structured schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('one-call first overview of a buying task') and names exactly what it returns: market prices, a priced shortlist, and alternatives. It is clearly distinguishable from compare_providers, search_providers, and price_benchmark, which are named directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states when to use it ('when you want a quick picture') and explicitly says what it does not do ('It does not run the comparison'). It then redirects the agent to the alternative workflow (search_providers → get_provider_profile → compare_providers) for careful selection and to price_benchmark for judging a single price.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_providersSearch providersA
Read-only
Inspect

Finds products (AI products, AI agents, MCP servers or APIs) that do a task and returns a ranked shortlist; start here to choose a product. Use this when someone wants candidates, e.g. 'MCP server to reply to Zendesk tickets'. Each result has what it 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: open strong ones with get_provider_profile, compare finalists with compare_providers. Thin coverage returns no_match, never padding. Use research_capability instead for a one-call overview with prices; price_benchmark, find_market or get_group_fair_price when the question is cost.

NameRequiredDescriptionDefault
sortNomatch (default) or price_asc (cheapest observed price first; unpriced providers last)
limitNoMax results (1-50, default 20)
queryYesREQUIRED. 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.
billingNoOnly providers with one of these observed billing models, e.g. ["free","freemium","subscription","usage"]
filtersNoOptional: 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)
deploymentNoOptional (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.
request_refNoOptional 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.
provider_typeNoFilter 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.
max_monthly_usdNoDrop 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_priceNoOnly return providers with an observed public price (default false)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the read-only annotations by disclosing result semantics: fit labels with named mismatches, price status vocabulary with the key caveat that 'unknown is never free', and that thin coverage yields no_match rather than padding. It also states that requirements in the query are checked per result and unverified ones marked unknown. Minor gap: no statement of result volume or whether repeated calls are deterministic.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and trigger before moving to output semantics and routing. It is dense but nearly every clause carries distinct information; the single run-on sentence structure makes it slightly harder to scan than it could be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A 10-parameter tool with nested filters is fully covered: purpose, trigger, result-field semantics, empty-result behavior, and sibling routing are all present. With an output schema available, the description still adds the interpretive context an agent needs to trust the returned fit and price labels.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by explaining cross-parameter semantics the schema does not, such as the price-status taxonomy and the rule that unknown pricing is never treated as free. It does not add guidance on sort, limit, or request_ref beyond what the schema already says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Finds products ... that do a task') and defines the output shape ('ranked shortlist'). It also explicitly delimits scope against siblings by pointing cost questions to price_benchmark, find_market, and get_group_fair_price, and overview questions to research_capability.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit entry-point instruction ('start here to choose a product') plus a concrete trigger example ('MCP server to reply to Zendesk tickets'). It names both downstream steps (get_provider_profile, compare_providers) and the four sibling tools to use instead for cost or overview questions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stop_research_updatesStop research updatesA
DestructiveIdempotent
Inspect

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

NameRequiredDescriptionDefault
job_idYesThe job_id from request_research (rj_ + 12 hex).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true, and openWorldHint=false. The description adds useful context beyond annotations by stating that the research result stays retrievable with get_research, clarifying that stopping updates does not delete the result. It does not address permissions or notification behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. The parenthetical adds relevant retrieval context without bloating the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a full input schema, output schema, and rich annotations, so the description need not explain return values or safety profile. It adds the key behavioral note that results remain retrievable, making the definition complete enough for an agent to invoke it correctly. Minor gaps remain around when exactly to stop watching versus other research lifecycle actions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single job_id parameter is fully documented in the schema with format details. The description does not add meaning beyond the schema, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: stop watching a research job. It also clarifies that the result remains retrievable via get_research, which helps distinguish this tool from retrieval and job-starting siblings. It does not explicitly differentiate from request_research, but the core purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: call this when you no longer need live updates for a research job. The parenthetical points to get_research as the alternative for retrieving results, but the description does not explicitly state when to use this tool versus alternatives or any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_alternativesFind provider alternativesA
Read-only
Inspect

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).

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

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/non-destructive annotations: it discloses the ranking basis, the fields each result carries (observed price, endpoint liveness, upvotes, how_to_connect), and a genuinely important failure mode — that an empty cheaper_only response may mean a missing/incompatible reference price rather than no alternatives, with the response indicating which. That is exactly the kind of behavioral context annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and ranking method, and most sentences carry real information. There is mild redundancy — how_to_connect is introduced, then re-enumerated with install/repository and a version tag '(1.10.0)' that reads like changelog noise rather than decision-relevant content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description needn't document return values, yet it still summarizes what each alternative carries. Combined with ranking logic, the cheaper_only edge case, alias handling, and cross-tool routing hints, an agent has everything needed to call it correctly and interpret an empty result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds value by documenting that agent_id accepts aliases (handle, id), which is not in the schema. The cheaper_only caveat also reinforces the parameter's edge-case semantics beyond the schema's own text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (find related alternatives to a known provider) plus the ranking mechanism (text-embedding nearness to the provider's OWN profile, explicitly NOT category lookup). That contrast with category-based discovery distinguishes it from siblings like search_providers and find_market without needing to open their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly framed as the tool for finding substitutes when you already have a reference provider, and it notes these substitutes are also surfaced inside research_capability and compare_providers, which helps an agent route between overlapping tools. It stops short of an explicit 'use X instead when...' exclusion, so it falls just shy of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_custom_benchmarkUpdate custom benchmarkA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
addNoProvider ids (handles) to add to the benchmark
removeNoProvider ids (handles) to remove from the benchmark
renameNoNew name for the benchmark
benchmark_idYesYour cb_ token

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing that a NEW immutable version is created, that the previous version remains fully reproducible, and that the response carries exact change-impact on median/quartiles/index. This adds meaningful mutation semantics (versioning/immutability) that destructiveHint alone does not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly packed sentences with no waste; the operation and the required parameter are front-loaded before the versioning/return detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return-value explanation is unnecessary, and the description still notes the response carries change-impact. Versioning behavior, required param, and mutation nature are all covered; nothing critical for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and every parameter is already documented, so baseline 3 applies. The description only reinforces 'Pass benchmark_id' without adding format or interaction details (e.g., whether add and remove can be combined) beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States specific verbs (add/remove members, rename) on a specific resource (custom benchmark), which clearly separates it from create_custom_benchmark, delete_custom_benchmark, and get_custom_benchmark. An agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies use for modifying an existing benchmark and instructs passing benchmark_id, which distinguishes it from creation. It does not explicitly name sibling alternatives (create vs. delete) or state prerequisites such as who may mutate a benchmark, so it stops short of full when/when-not routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Changedget_price_index1 field changed
      • changedInput schema / properties / response_mode / description
        Previous value: -"'summary' (default) or 'full' (adds exact sub-0.01% moves and repricing counts)."New value: +"'summary' (default) or 'full' (adds exact native / FX / combined contributions for the 1d, 7d and 30d windows with their from/to days and units, the currency-evidence split of the index weight, and the full methodology revision note)."
    • Changedget_price_index_history1 field changed
      • changedInput schema / properties / response_mode / description
        Previous value: -"'summary' (default, compact) or 'full'."New value: +"'summary' (default, compact) or 'full' (adds per-day native / FX / combined log changes and levels, the window's exact attribution and the currency-evidence split)."
  2. 23 tool updates
    • Changedcompare_providers1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedcreate_custom_benchmark1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changeddelete_custom_benchmark1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changeddemand_signals1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedfind_market1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedget_custom_benchmark1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedget_group_fair_price1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedget_price_index1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedget_price_index_history1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedget_provider1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedget_provider_profile1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedget_research1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedmarket_gaps1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedmarket_report1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedprice_benchmark1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedrefine_results1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedreport_outcome1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedrequest_research1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedresearch_capability1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedsearch_providers1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedstop_research_updates2 fields changed
      • addedInput schema / properties / job_id / description
        Added value: +"The job_id from request_research (rj_ + 12 hex)."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedsuggest_alternatives1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
    • Changedupdate_custom_benchmark4 fields changed
      • addedInput schema / properties / add / description
        Added value: +"Provider ids (handles) to add to the benchmark"
      • addedInput schema / properties / remove / description
        Added value: +"Provider ids (handles) to remove from the benchmark"
      • addedInput schema / properties / rename / description
        Added value: +"New name for the benchmark"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "JSON result; identical to the text content block.",
        +  "type": "object"
        +}
  3. 2 tool updates
    • Changeddemand_signals1 field changed
      • addedInput schema / properties / include_own
        Added value: +{
        +  "description": "Also list signals that come ONLY from your own searches (default false; counted in your_own_only_excluded)",
        +  "type": "boolean"
        +}
    • Changedmarket_gaps1 field changed
      • addedInput schema / properties / include_own
        Added value: +{
        +  "description": "Also list leads asked ONLY by you (default false: one caller's repeated searches are not independent demand; they are counted in your_own_only_excluded)",
        +  "type": "boolean"
        +}
  4. 1 tool update
    • Removedrank_providers_for_workflow
  5. 1 tool update
    • Changedcompare_providers1 field changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "description": "Optional. concise (default): the decision view. full: the complete comparison (all plan lines, evidence checks, deployment, licence, how to connect, requirement evidence excerpts).",
        +  "enum": [
        +    "concise",
        +    "full"
        +  ],
        +  "type": "string"
        +}
  6. 2 tool updates
    • Addedget_group_fair_price
    • Changedget_provider_profile5 fields changed
      • removedInput schema / properties / history_days
        Removed value: -{
        -  "description": "Window for price_history in days (1–400, default 90).",
        -  "type": "number"
        -}
      • removedInput schema / properties / history_limit
        Removed value: -{
        -  "description": "Plans per page (1–50, default 10).",
        -  "type": "number"
        -}
      • removedInput schema / properties / history_offset
        Removed value: -{
        -  "description": "Paging offset over plans (default 0).",
        -  "type": "number"
        -}
      • removedInput schema / properties / plan
        Removed value: -{
        -  "description": "Optional plan name filter for price_history.",
        -  "type": "string"
        -}
      • removedInput schema / properties / price_history
        Removed value: -{
        -  "description": "Optional (1.17.0): include this provider's dated plan prices from Agentery's stored observations — periods at one published price, changes, coverage gaps, promotion/anomaly flags. Dates are observation dates, not necessarily when the vendor changed the price; prices stay in their original currency.",
        -  "type": "boolean"
        -}

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Real-time AI industry intelligence MCP server. 6 free tools (news, status, pricing, today summary, agent activity, MCP registry snapshot) plus 13 paid tools (routing, news search, history series, cost projection, deep-dive, comparison, webhook watches). Pay-per-call in USDC on Base, no accounts.
    25
    6 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Tool search engine for AI agents. One API call to discover the best MCP server for any task. 900+ services indexed with 4-dimensional value ranking.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Machine-readable AI market data for AI agents: subscription prices, free credits, free LLM models, China-exclusive AI pricing. 6 MCP tools, Streamable HTTP, no auth.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources