Skip to main content
Glama

Rendreal

Quote the cart

order_get_quote
Idempotent

Price the session cart, returning each line's offers (price + days).

Prices every line that changed since its last quote; pass a line_id to re-price just one. Each line's translated configuration + offers are snapshotted so order_create re-sends the priced line and binds an offer by offer_id. A line with a pricing_error was refused by RendReal: on invalid_configuration re-run catalog_configure_product for that line_id using the reason, then quote again; on unparseable_response RendReal's response was unusable — retry later. The other lines still priced. A line with an empty offers list and no pricing_error didn't price — relay that, don't treat it as an error. Returns offers for the whole cart. List the offers in your reply as short plain text, never as a markdown table. When the quote card is displayed, it shows each offer with an "Order this" button, so a short summary is enough.

The widget's picker commits an ordinal reference with price and production days attached for disambiguation (e.g. "Nr 2 - £58.00 (3-day production), please.") rather than an id — 1-indexed against that same line's offers list from this call, in order. Map the number back to that list position's offer_id; don't match on price or production days alone (two offers can coincide on either).

Returns a job — poll until SUCCEEDED. On failure the job error is EmptyCartError (nothing configured yet), LineNotFoundError (bad line_id), ProductNotFoundError (catalog entry gone), RendrealNotConfiguredError, a ConfigurationMismatchError / UnmappableComponentError, or a Rendreal*Error.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "session_id": "<session_id>"
    },
    "name": "order_get_quote"
  }
}

Input Schema

NameRequiredDescriptionDefault
line_idNo
session_idYes

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare non-read-only, idempotent, non-destructive, closed-world, but say nothing about async execution or side effects. The description adds that it returns a job requiring polling, that a translated-config snapshot is persisted and later consumed by `order_create` via `offer_id`, and enumerates the full failure surface (`EmptyCartError`, `LineNotFoundError`, `ProductNotFoundError`, `RendrealNotConfiguredError`, configuration-mapping errors). No contradiction with the 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 purpose, then re-pricing scope, then the offer-binding contract, then errors and polling — a sensible order. The trailing sentence 'Returns offers for the whole cart' restates the opening line, and the presentation directives about plain text vs markdown tables sit oddly among mechanical instructions, costing a point.

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 job-returning pricing tool with an output schema and no param documentation in the schema, the description supplies the missing pieces: async polling requirement, error taxonomy, the snapshot/offer_id handoff to `order_create`, and how the UI's ordinal offer reference must be mapped back to `offers` list position. Nothing essential to a correct call is absent.

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 0%, so the description must carry the load. It fully explains `line_id` — default null means re-price only lines changed since the last quote, a value means price just that line — but `session_id` is never characterized (format, lifetime, or how it is obtained). That single omission keeps it off a 5.

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?

Opens with a specific verb and resource: price the session cart, returning each line's offers (price + days). It is immediately distinguishable from order_create (which re-sends priced lines) and order_view_cart, and it states the granularity of the change detection ('every line that changed since its last quote').

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?

Explicit routing for each branch: pass `line_id` to re-price a single line, re-run `catalog_configure_product` on `invalid_configuration`, retry later on `unparseable_response`, relay empty `offers` without treating it as an error, and poll the returned job. Each condition names the alternative tool or next action rather than leaving it 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.

Resources