Skip to main content
Glama

Place an order in the business’s own system; the buyer pays on the platform’s checkout page

place_order

For a business whose card shows an order action with method connected. Shopify: returns the shop’s own checkout link with these items and quantities already in the cart (status: unknown, mode: cart) — no customer data is needed or passed, the buyer gives their details and pays on Shopify, and nothing exists on the shop until they do. Square: an order with a payment link (no customer data either). WhatsApp: a message to the owner (customer phone or email). Returns order_id, status, checkout_url — HAND THE CHECKOUT URL TO THE USER AS IT IS: that page takes the money, Versum holds no card and charges nothing. Stock is checked live first on a platform that tracks it; «not in stock» is an unavailable error and no order or link is given. Send an idempotency_key of your own and keep it for a retry: the same key returns the same answer and the same link (repeated: true), never a second one. Lines name offerings by their card id (and variant_id when the card lists several). status: unknown (a cart link: payment is on the platform’s side) · created (the platform holds it) · pending_owner (WhatsApp) · confirmed · declined · failed. Get the user’s explicit yes before calling this.

Input Schema

NameRequiredDescriptionDefault
noteNoa note to the business, in the user’s words (not passed on a Shopify cart link)
linesYes
customerNoonly where the platform needs it (WhatsApp); omit for Shopify and Square
business_idYes
idempotency_keyNoyour own key for this order; reuse it on a retry

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior5/5

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

With annotations present the bar is lower, yet the description adds substantial context: nothing exists on the shop until the buyer pays, Versum holds no card and charges nothing, no customer data is needed for Shopify/Square, a live stock check precedes order creation and an `unavailable` error means no link is issued, and the full `status` vocabulary is spelled out. The only tension is `idempotentHint: false` versus the claim that reusing the same `idempotency_key` "never a second one" — defensible since a call without the key duplicates the order, but worth noting.

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?

Nearly every sentence carries load — platform branches, return fields, error behavior, idempotency — with little padding. Structure is weaker than the content: it is a dense run-on with backticks, dashes and middots, and the critical confirmation instruction ("Get the user's explicit yes") is buried at the very end rather than front-loaded.

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?

With no output schema, the description fully carries the return contract: `order_id`, `status`, `checkout_url`, the meaning of each status value including `repeated: true` on idempotent retries, and the `unavailable` error case. An agent has everything it needs to call this correctly and hand the result to the user.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 60%, but the description compensates well: lines reference offerings by card id and need `variant_id` only when the card lists several, `customer` is required only where the platform needs it (WhatsApp) and must be omitted for Shopify/Square, `note` is dropped on Shopify cart links, and `idempotency_key` is user-supplied and reused on retry. This is meaning the schema does not carry.

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+resource (place an order in the business's own system) and enumerates exact per-platform semantics (Shopify cart link, Square payment link, WhatsApp message to owner). It never names the sibling tools it is not, however, so an agent must infer the split with quote_order, check_availability and order_status from their names alone.

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?

It gives a clear precondition — the business's card must show an `order` action with method `connected` — and an explicit gating rule: "Get the user's explicit yes before calling this." It stops short of the alternative path (e.g. use quote_order first to preview, or check_availability to verify stock rather than relying on the live check) and names no sibling.

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.