Skip to main content
Glama

Rendreal

Attach a design to an order

order_attach_design
Destructive

Pin a design to an existing order ahead of checkout.

Usually unnecessary: order_create_payment_link attaches the session's design itself. Prefer that — attaching locks that item's design, and the payment link will not replace it, so an early attach freezes the order onto a version the customer may still be editing. Call this only when the customer explicitly wants a design locked to the order now. On an order with several items, each item keeps its own design, and the payment link attaches each one. An attached design is final for its item: design_chat then fails with DesignAttachedError.

Normally omit design_snapshot_id: Compass attaches the design's latest snapshot automatically (resolved from RendReal 360, retried briefly to let it sync after resolve), raising NoSnapshotError when the design still has no snapshot after those retries. A design_snapshot_id you pass in is accepted only when it matches that resolved latest snapshot — it can't inject an arbitrary snapshot — so there is rarely a reason to pass one. Once the order's artwork is settled, call order_create_payment_link only when the customer asks to pay.

Pass item_id to attach to one item; it is required when the order has several items (OrderItemRequiredError lists them). The session's active design goes to the item it was made for when item_id is omitted, and another item fails with DesignItemMismatchError. An item whose uploaded file has a submitted page mapping fails with UploadMappingSubmittedError, because that file prints. Only valid for orders created in this session (OrderItemsUnknownError otherwise — item ids exist nowhere else). Returns a job — poll until SUCCEEDED for the order's new status.

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>",
      "order_id": "<order_id>",
      "design_id": "<design_id>"
    },
    "name": "order_attach_design"
  }
}

Input Schema

NameRequiredDescriptionDefault
item_idNo
order_idYes
design_idYes
session_idYes
design_snapshot_idNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Rich beyond the annotations: it discloses that attaching freezes the item's design irreversibly, that `design_chat` will then fail with `DesignAttachedError`, the snapshot resolution and retry behavior with `NoSnapshotError`, and the specific error conditions (`OrderItemRequiredError`, `DesignItemMismatchError`, `UploadMappingSubmittedError`, `OrderItemsUnknownError`). The only shortfall is that the async job contract is stated in one clause ('poll until SUCCEEDED') rather than described in depth.

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 purpose and the 'prefer the alternative' warning before any mechanics, which is the right ordering. It is dense and slightly long, with some awkward line wrapping, but nearly every sentence carries a distinct constraint (locking, snapshot resolution, item scoping, error names).

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 five-parameter, destructive, non-idempotent mutation with an output schema, the description covers the prerequisites, the session-only constraint, per-item scoping, error taxonomy, and the fact that it returns a job to poll. With an output schema present, it need not describe the return payload shape.

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 two non-obvious parameters: `item_id` (required with multiple items, defaults to the active design's item, mismatch errors) and `design_snapshot_id` (normally omit, auto-resolved, only accepted if it matches the resolved latest snapshot). `session_id`, `order_id`, and `design_id` are only implicitly characterized, leaving a small gap against the 0% coverage baseline.

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 opening line states a specific verb and resource — 'Pin a design to an existing order ahead of checkout' — and the very next sentence names the sibling `order_create_payment_link` and explains how this tool differs from it. An agent can distinguish the two without inspecting 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?

Explicitly states that the tool is 'Usually unnecessary', names the preferred alternative, and gives the narrow condition for use ('only when the customer explicitly wants a design locked to the order now'). It also closes the loop by saying when to call `order_create_payment_link` instead ('only when the customer asks to pay').

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