Skip to main content
Glama

Resolve a purchase request

resolve_purchase_request
Read-onlyIdempotent

Computation only: conditional product / setup / add-on candidates from typed constraints (category, brand, formats, OS, license, budget), optional free text and user-claimed ownership, bound to one published snapshot. Each candidate has fit reasons, a cost breakdown over the offers this channel may disclose, budget fit, acquisition steps, canonical_page and site_entry_page. For a product candidate, canonical_page is the product page on this site; it carries the complete price table (including listings withheld on this channel), the merchant purchase links and the affiliate disclosure. site_entry_page is the same page with the entry marker for this channel. For a setup candidate canonical_page is the /find/ page. No purchase, no persistence, no notification. For a subscription or rent-to-own edition, cost_breakdown.payable_now is the first charge, recurring_cost one later charge (estimated) and recurring_period its period (month or year); with budget_scope=total_including_recurring_12m the total counts 12 monthly or 1 yearly charge, otherwise budget_fit is judged on the first payment. Where a product has one-off and recurring editions, the default scope prices the one-off edition and the 12-month scope the edition with the smallest 12-month total (assumptions key edition_choice). A price is taken from the default confirmed-route class first (a maker store or a confirmed authorized dealer selling new; for hardware also domestic distribution); when a cheaper confirmed listing of the same edition lies outside that class, the candidate's mismatches state it with its amount. search_complete=false with optimality_scope=best_found marks an answer cut at a limit, a free-text term that looks like a product name (Latin letters, digits or katakana) but matches no registered alias (unresolved_constraints no_alias_match), or no candidates (no_candidates). Free-text aliases match whole words only. With a budget, candidates are ordered by budget_fit first (confirmed, estimated_within, estimated_over, over, unknown) before the answer is cut to max_candidates; when in-budget candidates are still cut, limits_hit contains budget_fit_candidates_truncated. An edition with no price in the requested currency keeps its price in the original currency in cost_breakdown and acquisition_steps[].cost, with budget_fit unknown and the reason in the candidate's mismatches; such an amount may carry converted (a yen estimate: amount_minor, display such as 約¥7,800, rate_source ecb_eurofxref, rate_reference_date, rate_basis direct or cross_via_eur, and basis_note, a fixed English sentence saying that this site computed the estimate from the European Central Bank's reference rates of that date and that it is not a price) that is not used for ordering, budget fit, cheapest cost or lowest_observed. A product's default price uses general rows of unrestricted editions only. When a restricted edition (upgrade, crossgrade, update, EDU or NFR) is named, by constraints.target_edition_id or a free-text alias, or when all of a product's editions are restricted, the answer prices that edition and marks it: customer_segment on cost_breakdown.payable_now and total and on the step cost, reason_codes restricted_edition_price:, eligibility_status conditional, a sentence in the candidate's mismatches, and the assumption restricted_edition_price (value the segment, basis user_provided, parsed_from_query or default). A product candidate carries product_name, and price_checked_at is the check time of the price used. Stale offers (past fresh_until) are not used for costs or budget fit. Bounded compute class (10 per minute, shared with POST /api/v1/resolve). Links are user_navigation handoffs (handoff_mode=user_navigation) and are not intended for prefetching or automatic clicking.

Input Schema

NameRequiredDescriptionDefault
modeYes
queryNo
detailNosummary
localeNoja-JP
regionNoJP
constraintsNo
max_candidatesNo
owned_editionsNo
schema_versionYes
ownership_claimsNo
user_supplied_pricesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / constraints / properties / category / enum
      Previous value: -[
      -  "daw",
      -  "instrument_plugin",
      -  "effect_plugin",
      -  "mastering_limiter_plugin",
      -  "mastering_suite",
      -  "restoration",
      -  "sample_library",
      -  "ai_separation",
      -  "ai_restoration",
      -  "ai_composition",
      -  "ai_voice",
      -  "audio_interface",
      -  "mixer",
      -  "preamp_outboard",
      -  "microphone",
      -  "headphones",
      -  "studio_monitor",
      -  "guitar",
      -  "bass",
      -  "keyboard",
      -  "synthesizer",
      -  "electronic_instrument",
      -  "pedal",
      -  "multi_effect",
      -  "amp_simulator",
      -  "dj_controller",
      -  "dj_player",
      -  "dj_mixer",
      -  "midi_controller",
      -  "accessory",
      -  "computer",
      -  "computer_peripheral"
      -]New value: +[
      +  "daw",
      +  "instrument_plugin",
      +  "effect_plugin",
      +  "mastering_limiter_plugin",
      +  "mastering_suite",
      +  "restoration",
      +  "sample_library",
      +  "ai_separation",
      +  "ai_restoration",
      +  "ai_composition",
      +  "ai_voice",
      +  "vocal_synth",
      +  "audio_interface",
      +  "mixer",
      +  "preamp_outboard",
      +  "microphone",
      +  "headphones",
      +  "studio_monitor",
      +  "guitar",
      +  "bass",
      +  "keyboard",
      +  "synthesizer",
      +  "electronic_instrument",
      +  "pedal",
      +  "multi_effect",
      +  "amp_simulator",
      +  "dj_controller",
      +  "dj_player",
      +  "dj_mixer",
      +  "midi_controller",
      +  "accessory",
      +  "computer",
      +  "computer_peripheral"
      +]
  2. Changed7 schema fields changed
    • changedInput schema / properties / constraints / properties / brand / maxLength
      Previous value: -128New value: +160
    • changedInput schema / properties / constraints / properties / target_edition_id / maxLength
      Previous value: -128New value: +160
    • changedInput schema / properties / owned_editions / items / maxLength
      Previous value: -128New value: +160
    • changedInput schema / properties / ownership_claims / items / properties / edition_id / maxLength
      Previous value: -128New value: +160
    • changedInput schema / properties / ownership_claims / items / properties / entitlement_id / maxLength
      Previous value: -128New value: +160
    • changedInput schema / properties / user_supplied_prices / items / properties / edition_id / maxLength
      Previous value: -128New value: +160
    • changedInput schema / properties / user_supplied_prices / items / properties / offer_id / maxLength
      Previous value: -128New value: +160
  3. Changed1 schema field changed
    • changedInput schema / properties / constraints / properties / category / enum
      Previous value: -[
      -  "daw",
      -  "instrument_plugin",
      -  "effect_plugin",
      -  "mastering_limiter_plugin",
      -  "mastering_suite",
      -  "restoration",
      -  "sample_library",
      -  "ai_separation",
      -  "ai_restoration",
      -  "ai_composition",
      -  "ai_voice",
      -  "audio_interface",
      -  "microphone",
      -  "headphones",
      -  "studio_monitor",
      -  "guitar",
      -  "bass",
      -  "keyboard",
      -  "synthesizer",
      -  "electronic_instrument",
      -  "pedal",
      -  "multi_effect",
      -  "amp_simulator",
      -  "dj_controller",
      -  "dj_player",
      -  "dj_mixer",
      -  "midi_controller",
      -  "accessory",
      -  "computer",
      -  "computer_peripheral"
      -]New value: +[
      +  "daw",
      +  "instrument_plugin",
      +  "effect_plugin",
      +  "mastering_limiter_plugin",
      +  "mastering_suite",
      +  "restoration",
      +  "sample_library",
      +  "ai_separation",
      +  "ai_restoration",
      +  "ai_composition",
      +  "ai_voice",
      +  "audio_interface",
      +  "mixer",
      +  "preamp_outboard",
      +  "microphone",
      +  "headphones",
      +  "studio_monitor",
      +  "guitar",
      +  "bass",
      +  "keyboard",
      +  "synthesizer",
      +  "electronic_instrument",
      +  "pedal",
      +  "multi_effect",
      +  "amp_simulator",
      +  "dj_controller",
      +  "dj_player",
      +  "dj_mixer",
      +  "midi_controller",
      +  "accessory",
      +  "computer",
      +  "computer_peripheral"
      +]
  4. First observed

TDQS

A3.8/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly, idempotent, non-destructive, closed world); the description goes well beyond them. It discloses the rate limit ('Bounded compute class (10 per minute, shared with POST /api/v1/resolve)'), that stale offers are excluded from cost and budget fit, that mispriced/out-of-class listings are surfaced via mismatches, and that links are user_navigation handoffs not intended for prefetching. This is exactly the extra behavioral context the annotations cannot carry.

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

Conciseness2/5

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

The content is delivered as one enormous unstructured block with no headings, lists, or grouping, mixing output-field documentation, pricing precedence rules, currency-conversion caveats, and rate limits together. 'Computation only' is a good front-loaded anchor, but the volume and tangents (e.g. the extended ECB rate-basis explanation) make it hard to scan for the decision-relevant facts.

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 no output schema and 11 mostly nested parameters, the description does substantial duty: it names and explains the returned fields (cost_breakdown, budget_fit, canonical_page, site_entry_page, mismatches, assumptions, search_complete, optimality_scope, limits_hit), the edition-selection defaults, and restricted-edition marking. That makes it nearly self-sufficient for a tool of this complexity, though the input-side mode/query contract remains undocumented.

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 0%, so the description must carry the load, and it does for the hard cases: budget_scope semantics (total_including_recurring_12m counts a 12-month or 1-year charge), target_edition_id / free-text alias handling for restricted editions, whole-word alias matching, and ordering/truncation via max_candidates and limits_hit. It still leaves mode, query, detail, locale, region, and the ownership_claims/user_supplied_prices shape to the schema enums, so coverage is good but not complete.

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 opening clause states a specific verb and resource: it computes product/setup/add-on candidates from typed constraints, bound to one published snapshot. It clearly frames itself as a computation rather than a transaction ('No purchase, no persistence, no notification'). However it never names or contrasts any of its siblings (search_products, compare_products, get_current_offers), so an agent cannot tell from the text alone why it should pick this over search_products.

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 by the constraint types (category, brand, formats, OS, license, budget) and the ownership-claim inputs, which suggests this is the resolver for a concrete buying decision. But there is no explicit when-to-use or when-not-to-use statement, and no mention of the sibling tools that cover adjacent jobs. The reader must infer the routing.

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