Skip to main content
Glama

Benchmark a price

price_benchmark
Read-only

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

Input Schema

TableJSON Schema
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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / request_ref
      Added value: +{
      +  "description": "Optional 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.",
      +  "type": "string"
      +}
  2. Changed9 schema fields changed
    • addedInput schema / properties / cohort_ref
      Added value: +{
      +  "description": "Optional (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.",
      +  "type": "string"
      +}
    • addedInput schema / properties / commitment
      Added value: +{
      +  "description": "Billing commitment of proposed_price (default monthly).",
      +  "enum": [
      +    "monthly",
      +    "annual"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / currency
      Added value: +{
      +  "description": "Currency of proposed_price (ISO code, default USD).",
      +  "type": "string"
      +}
    • addedInput schema / properties / limit
      Added value: +{
      +  "description": "Observations per page in full mode (1–100, default 50).",
      +  "type": "number"
      +}
    • addedInput schema / properties / offset
      Added value: +{
      +  "description": "Paging offset over the selected observations in full mode.",
      +  "type": "number"
      +}
    • changedInput schema / properties / pricing_unit / description
      Previous value: -"Optional pricing unit to hold constant (e.g. 'flat', 'per_seat', 'per_agent'). Incompatible units are never combined."New value: +"Billing 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."
    • addedInput schema / properties / pricing_unit / enum
      Added value: +[
      +  "flat",
      +  "per_seat",
      +  "per_agent",
      +  "per_call",
      +  "per_ticket",
      +  "per_conversation",
      +  "per_resolution",
      +  "per_transaction",
      +  "per_invoice",
      +  "per_document",
      +  "per_page",
      +  "per_minute",
      +  "per_message",
      +  "per_email",
      +  "per_credit",
      +  "per_token",
      +  "percent_of_spend"
      +]
    • addedInput schema / properties / proposed_price
      Added value: +{
      +  "description": "Optional (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.",
      +  "type": "number"
      +}
    • changedInput schema / properties / response_mode / description
      Previous value: -"'summary' (default): compact per-type/per-tier benchmark matrix. 'full': also returns the deprecated blended legacy block + AEPI index."New value: +"'summary' (default): the selected benchmark with its top observations. 'full': every included observation (paged), with plan, native price, unit, commitment, source and observed date."
  3. Changed3 schema fields changed
    • changedInput schema / properties / provider_type / enum
      Previous value: -[
      -  "provider",
      -  "mcp",
      -  "api",
      -  "all"
      -]New value: +[
      +  "agent",
      +  "mcp",
      +  "api",
      +  "all"
      +]
    • addedInput schema / properties / query
      Added value: +{
      +  "description": "The capability to benchmark, in natural language, e.g. 'AI code review' or 'supplier invoice reconciliation'. Preferred input.",
      +  "type": "string"
      +}
    • addedInput schema / properties / task
      Added value: +{
      +  "description": "Alias of `query` (same text).",
      +  "type": "string"
      +}
  4. Changed2 schema fields changed
    • changedInput schema / properties / niche / description
      Previous value: -"Niche slug (or an approximate slug / natural-language name — it is resolved to the canonical niche), e.g. 'contract-review-automation'"New value: +"Legacy alias of `query`, kept for older clients — prefer `query`."
    • changedInput schema / properties / sector / description
      Previous value: -"Sector name, e.g. 'legal' (ignored if niche is given)"New value: +"Sector name, e.g. 'legal' (ignored if a query is given)"
  5. Changed4 schema fields changed
    • addedInput schema / properties / buyer_tier
      Added value: +{
      +  "description": "Buyer 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.",
      +  "enum": [
      +    "individual",
      +    "pro",
      +    "team_sme",
      +    "enterprise",
      +    "all"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / pricing_unit
      Added value: +{
      +  "description": "Optional pricing unit to hold constant (e.g. 'flat', 'per_seat', 'per_agent'). Incompatible units are never combined.",
      +  "type": "string"
      +}
    • addedInput schema / properties / provider_type
      Added value: +{
      +  "description": "Delivery 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).",
      +  "enum": [
      +    "provider",
      +    "mcp",
      +    "api",
      +    "all"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / response_mode
      Added value: +{
      +  "description": "'summary' (default): compact per-type/per-tier benchmark matrix. 'full': also returns the deprecated blended legacy block + AEPI index.",
      +  "enum": [
      +    "summary",
      +    "full"
      +  ],
      +  "type": "string"
      +}
  6. Changed1 schema field changed
    • changedInput schema / properties / niche / description
      Previous value: -"Niche slug as returned by market_gaps/compare_agents, e.g. 'contract-review-automation'"New value: +"Niche slug (or an approximate slug / natural-language name — it is resolved to the canonical niche), e.g. 'contract-review-automation'"
  7. First observed

TDQS

A4.3/5.0
Behavior5/5

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

With only readOnlyHint/openWorldHint/destructiveHint annotations, the description carries substantial extra load: it enumerates the returned statistics (median, p25/p75, range, mean, stdev, n), the split by delivery type and buyer tier, the no-blending-across-units rule, the comparables-selection policy, and the resolved:false no-invention failure mode. It even frames the epistemic limits ('not a quote and not evidence of 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?

The first sentence front-loads the use case and example, and the dense remainder is largely load-bearing given there is no output schema. Some enumeration of return statistics and aliases duplicates what the schema already documents, so it is efficient but not maximally tight.

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, zero-required, no-output-schema tool this covers what an agent needs: what goes in, what comes back, how results are segmented, and what happens when no comparables exist. Nothing essential to a correct invocation is left unstated.

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 nonetheless adds cross-parameter behavior the schema states only per-field, e.g. that provider_type/buyer_tier splits are never blended, that a thin pricing_unit returns its own observations rather than a flat-monthly substitute, and that a percentile requires >=5 comparable providers. Minor overlap with schema text (aliases) keeps it from a 5.

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 specific verb+resource ('judge whether a price is fair or what a capability typically costs') with a concrete example, so the function is unmistakable. It never names or contrasts with the nearest siblings (find_market, market_report, compare_providers), so an agent must infer routing rather than being told it.

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?

Gives clear usage context ('use to judge whether a price is fair'), the input shape (pass the capability as `query`), and follow-up instructions ('Set provider_type and buyer_tier when known', reuse cohort_ref from an earlier call). It stops short of explicit when-not rules or direct routing to alternative tools for adjacent questions.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources