Skip to main content
Glama

Final POS – Custom POS Builder

Adjust stock

hub_adjust_stock
Destructive

Change the count of ONE variant at ONE outlet — the cabinet's "Adjust Inventory" action. CONFIRM WITH THE MERCHANT FIRST, repeating the product, the outlet, the reason and the number: this writes immediately, is permanently recorded against the employee in the stock history, and there is no undo from here. Reasons: STOCK_RECEIVED (a delivery arrived) and RESTOCK_RETURN (a return put back on the shelf) ADD the quantity; DAMAGE, THEFT and LOSS SUBTRACT it; INVENTORY_RECOUNT SETS the count to exactly the quantity you pass (a physical stocktake). Always pass quantity as a positive number — the reason decides the direction. Pick the reason the merchant actually gave; these end up in reports, so recording theft as damage misstates their loss. If stock is not tracked for that variant at that outlet, NOTHING is written and the result says applied: false — do not report success, and do not read it as "the stock is 0". Tracking has to be turned on for the product first. To move units between outlets use create_stock_transfer instead.

Input Schema

NameRequiredDescriptionDefault
actionYesWhy the count changed. Adds: STOCK_RECEIVED, RESTOCK_RETURN. Subtracts: DAMAGE, THEFT, LOSS. Sets: INVENTORY_RECOUNT
outletIdYesOutlet id from get_outlets — the adjustment applies only there
quantityYesAlways positive. Units added or removed — or, for INVENTORY_RECOUNT, the new total on hand
productIdYesProduct id from get_products
variantIdYesVariant id from get_products — the exact variant being counted

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 already flag destructiveHint=true, but the description goes well beyond them: writes immediately, permanently recorded against the employee in stock history, no undo from here. It also discloses a non-obvious failure mode — applied: false with nothing written when stock isn't tracked — and warns against misreading that as zero stock.

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?

The core action and the confirm-first instruction are front-loaded, and every later sentence carries distinct operational content (reason semantics, applied:false handling, the transfer alternative). It runs longer than a tight two-sentence ideal, but there is no filler to cut.

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 write with no output schema, the description covers safety, prerequisites, reason semantics, and the return-signal case (applied: false), so an agent has everything needed to call it and interpret the outcome correctly.

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 enum direction mapping and quantity meaning are already documented. The description nonetheless adds decision-relevant meaning: quantity is always positive because the reason decides direction, INVENTORY_RECOUNT sets rather than adds, and picking the wrong reason misstates loss in reports. That enum-choice guidance is value beyond the schema, though the core direction mapping is duplicated.

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?

States a precise verb+resource with scope: "Change the count of ONE variant at ONE outlet — the cabinet's 'Adjust Inventory' action." It also names the sibling it is not (create_stock_transfer) for the between-outlet case, so an agent can disambiguate without opening 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?

Gives an explicit precondition (confirm with the merchant, repeating product/outlet/reason/number), an explicit when-not (use create_stock_transfer to move units between outlets), and a tracking prerequisite (tracking must be turned on for the product first). Routing is unambiguous.

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.