Skip to main content
Glama

Final POS – Custom POS Builder

Receive a delivery

hub_receive_purchase_order
Destructive

Book a delivery in against an order that was sent: ADDS THE RECEIVED QUANTITIES TO REAL STOCK at the order’s outlet and updates the item cost book. This is not a note — it changes inventory. CONFIRM THE QUANTITIES WITH THE MERCHANT FIRST, item by item, and record what genuinely ARRIVED, not what was ordered — they differ, which is the whole point of receiving. Only sent and partially_received orders can be received; each item must be one that was ordered; receiving more than ordered is allowed. A short delivery leaves the order partially_received — receive again when the rest turns up. A CALL THAT RETURNS IS NOT PROOF EVERY ITEM LANDED — check partialFailure, and stockApplied.complete on a large delivery. IF IT FAILS, DO NOT RETRY BLINDLY: "still being received" means a previous delivery is being applied right now (get_receive_progress), and a wrong-status error means it was already fully received. Call get_purchase_order to see what actually landed before deciding anything. unitCost is what this delivery actually cost per unit — pass the invoice price if it differs from the order. When it does differ, the supplier’s stored cost is NOT updated unless you list that item in updateSupplierCostVariantIds, so ask the merchant whether the new price is the going rate or a one-off.

Input Schema

NameRequiredDescriptionDefault
linesYesWhat actually arrived
discountNoFlat discount on the whole order, e.g. "25.00". Not with discountPercent
dutyFeesNoDuty / customs charged on the order
customFeesNoAny other named charge on the order, e.g. "Handling"
receivedAtNoISO date the goods arrived — defaults to now
invoiceDateNoISO date on the invoice
shippingFeeNoShipping charged on the order, e.g. "18.00"
invoiceNumberNoSupplier invoice number for this delivery
discountPercentNoDiscount as a percentage of the items subtotal
purchaseOrderIdYesPurchase order id from get_purchase_orders — not a PO number
updateSupplierCostVariantIdsNoItems whose new unitCost should become the supplier’s stored cost from now on

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?

Annotations already flag a destructive, non-read-only mutation, and the description adds substantially more: that stock and the cost book are mutated, partial-failure semantics via partialFailure and stockApplied.complete, and retry hazards ('still being received' means an in-flight delivery; a wrong-status error means already fully received). It also discloses the side effect that the supplier's stored cost is NOT updated unless an item is listed in updateSupplierCostVariantIds.

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 core effect and mutation warning, then the preconditions and failure handling — a sensible order. It is long and leans heavily on ALL-CAPS emphasis, which is slightly noisy, but nearly every sentence carries operational content rather than filler.

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 an 11-parameter mutation tool with no output schema, the description covers the mutation's consequences, allowed order states, partial-receipt behavior, failure/retry semantics, and the cost-book side effect. An agent has everything it needs to call this correctly and interpret the ambiguous outcomes.

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 100%, so the baseline is 3, but the description adds real meaning beyond the schema: unitCost is 'what this delivery actually cost per unit' (invoice price, may differ from the order), lines represent 'what actually arrived' rather than what was ordered, and it explains the interaction between unitCost and updateSupplierCostVariantIds. It adds value without re-documenting every field.

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?

States a concrete verb and resource ('Book a delivery in against an order that was sent') and spells out the effect ('ADDS THE RECEIVED QUANTITIES TO REAL STOCK... updates the item cost book'), explicitly contrasting it with a mere note. It does not, however, explicitly differentiate itself from close siblings like hub_record_received_goods or hub_receive_stock_transfer, so an agent must infer the boundary.

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?

Gives explicit preconditions ('Only sent and partially_received orders can be received'), state transitions ('A short delivery leaves the order partially_received — receive again when the rest turns up'), and operating advice ('CONFIRM THE QUANTITIES WITH THE MERCHANT FIRST'). It also routes the agent to get_purchase_order and get_receive_progress for follow-up, which is exactly the when/when-not guidance the dimension asks for.

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.