Skip to main content
Glama

Verify a multi-merchant basket before handing it to checkout

verify_basket
Read-onlyIdempotent

For a multi-item request, collect p2209_id and any selected variation_id from global_search results and send all selected items in one call. For every variable product, include a variation_id from its selected variants_compact entry on the first call; without it the price and basket total may be unknown. Never substitute WooCommerce numeric product IDs for p2209_id. Set live=false for a snapshot-only check with no merchant request; live=true reads merchants. Checks a basket of offers (up to 40 lines, any merchants) against the merchants' own data. Per merchant: subtotal, declared shipping options, and checkout handoff. Optional quote=true requires live=true and destination_details; it makes one bounded merchant request per basket and returns a WooCommerce quote when the merchant enabled it, otherwise unknown alongside the estimate. A quote creates no checkout session or order; checkout may still change the total.

Input Schema

NameRequiredDescriptionDefault
liveNofalse (default) uses saved Global data without contacting merchants; true reads each merchant now (at most 10 lines).
itemsYes
quoteNofalse by default. true requires live=true and destination_details, and may contact up to four merchants for WooCommerce quotes.
destinationNoISO 3166-1 country, optionally with region: "IT" or "IT:CB". Needed for shipping.
max_age_secondsNo
destination_detailsNoPostal destination for precise declared shipping zones even with quote=false and live=false; required for quote=true. Example: {country:"IT",state:"CB",postcode:"86100",city:"Campobasso"}.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / destination_details / description
      Previous value: -"Postal destination for quote=true, e.g. {country:\"IT\",state:\"CB\",postcode:\"86100\",city:\"Campobasso\"}."New value: +"Postal destination for precise declared shipping zones even with quote=false and live=false; required for quote=true. Example: {country:\"IT\",state:\"CB\",postcode:\"86100\",city:\"Campobasso\"}."
  2. Changed2 schema fields changed
    • addedInput schema / properties / destination_details
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Postal destination for quote=true, e.g. {country:\"IT\",state:\"CB\",postcode:\"86100\",city:\"Campobasso\"}.",
      +  "properties": {
      +    "city": {
      +      "maxLength": 100,
      +      "type": "string"
      +    },
      +    "country": {
      +      "pattern": "^[A-Z]{2}$",
      +      "type": "string"
      +    },
      +    "postcode": {
      +      "maxLength": 20,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "state": {
      +      "maxLength": 16,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "country",
      +    "postcode"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / quote
      Added value: +{
      +  "description": "false by default. true requires live=true and destination_details, and may contact up to four merchants for WooCommerce quotes.",
      +  "type": "boolean"
      +}
  3. Changed2 schema fields changed
    • addedInput schema / properties / items / items / properties / variation_id / description
      Added value: +"For a variable product, pass the chosen variant ID from global_search variants_compact; required to price that line and compute a complete basket total."
    • changedInput schema / properties / live / description
      Previous value: -"true reads each merchant now (at most 10 lines)."New value: +"false (default) uses saved Global data without contacting merchants; true reads each merchant now (at most 10 lines)."
  4. Added

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/openWorld annotations, the description discloses that live=true actually contacts merchants, that quote=true makes one bounded merchant request per basket, and that a quote creates no checkout session or order and the total may still change at checkout. It also warns that omitting variation_id can leave price and basket total unknown. That is exactly the kind of cost and side-effect disclosure 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.

Conciseness3/5

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

Every sentence carries information, but the ordering is poor: procedural instructions about p2209_id and variation_id come before the reader is told what the tool actually does, so the purpose statement lands mid-paragraph. Several clauses restate schema-documented behavior (variation_id required to price a line), costing space without adding value.

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?

For a six-parameter tool with a nested destination_details object, no output schema and broad annotations, the description covers the risky parts well: merchant contact, quote preconditions, and the fact that a quote is not an order. Remaining gaps are the return shape (no output schema exists to cover it) and the max_age_seconds parameter, which is never mentioned in either place.

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 a moderate 67%, and the description adds real meaning the schema lacks — most importantly 'never substitute WooCommerce numeric product IDs for p2209_id' and the guidance that destination_details sharpens declared shipping zones even when quote and live are false. It reinforces but does not extend the variation_id semantics already documented in the schema, and it says nothing about max_age_seconds.

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: it checks a basket of up to 40 offer lines against the merchants' own data and returns per-merchant subtotal, declared shipping options and checkout handoff. That scope implicitly separates it from the single-offer sibling verify_offer, though it never names the sibling explicitly. The core purpose sentence is buried after the tactical instructions, which slightly weakens first-read clarity.

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 concrete when-to-use routing: gather p2209_id and any variation_id from global_search results and send all selected items in one call. It explicitly defines the live=false versus live=true tradeoff and the preconditions for quote=true (requires live=true plus destination_details). The alternative paths are spelled out rather than left to inference.

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.