Skip to main content
Glama

Taokeh MCP server

File a pending product-change draft (human approves in Taokeh)

update_product_draft

FILES A PENDING DRAFT ONLY — NOTHING CHANGES UNTIL A HUMAN REVIEWS AND APPROVES IT IN TAOKEH. Propose corrections to a product ALREADY in Taokeh's catalogue — a selling price keyed wrong, a name that came across from the old system mangled, a missing barcode, the wrong unit, a reorder point nobody set, an item filed under the wrong category. This does NOT change anything: it files a pending DRAFT the owner reviews as a DIFF (current → proposed, changed fields only) and approves with one tap; only that tap writes. Name the product with productId (the id resolve_product returns) or with its EXACT sku — a SKU is unique inside a company, so it is an exact key; a product NAME is not, and is refused. If you pass both and they disagree, the call is refused rather than guessing. proposed holds ONLY the fields you want changed: name, unit, unitPrice, reorderPoint, barcode, and the category (pass categoryId, or category as a name matched against the categories the company ALREADY has — this tool will never create a category, because the owner is approving a change to a product, not new master data). ⛔ WHAT IT CANNOT DO, each refused by name with the screen that owns it: it cannot change STOCK ON HAND — a quantity change moves inventory and cost of goods sold together, so Taokeh only takes it at Products → Adjust stock where a counted reason is required; it cannot change the AVERAGE COST, which the purchases that set it own and which is what the inventory is worth on the balance sheet, so an edit here would restate that value with no journal behind it; it cannot change the SKU, the key everything else resolves on; it cannot set a description, which the product page has no control for at all (the catalogue import does); it cannot switch "Service — no stock" (isService) on or off — the owner ticks it on the product page; and it cannot publish or unpublish the item to the online shop, because what strangers can see and buy is not something an AI proposal should decide. A field the record already agrees with is dropped, and a proposal that changes nothing is refused rather than filed as an empty diff. One product per call — loop for a sweep, because each reviewable diff is the point. BE HONEST: never guess a price or a barcode; leave the field out and say so in notes with needsReview.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
skuNoThe EXACT SKU, as an alternative to productId. Exact only — a near miss is refused, and a product NAME is never accepted.
notesNoA SHORT reviewer note, in the reviewer's language: what you changed, why, and what they should double-check.
proposedYesONLY the fields you want changed. A field the record already agrees with is dropped; an unknown or deliberately-excluded field is refused by name.
productIdNoThe product's real id, from resolve_product. Give this OR `sku`.
needsReviewNoSet true when something gave you pause — a price the user was unsure about, a barcode read off a blurry photo.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only say this is a non-read, non-destructive, non-idempotent write. The description adds the entire behavioral contract on top: nothing commits until a human taps approve, output is a current→proposed diff of changed fields only, unchanged fields are dropped, an empty diff is refused, identity mismatches are refused rather than guessed, and unmatched categories are rejected. That is substantial context the annotations do not carry.

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 critical constraint is front-loaded in the first line and the body is organized into identity, payload, exclusions, and honesty rules. It is long for its parameter count and repeats the same points (the no-op/human-approval idea three times, the never-creates-a-category idea twice), plus caps-and-symbol styling that inflates it, which keeps it out of 5 territory.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and a nested payload object, the description covers identity resolution, allowed and forbidden fields, and refusal semantics thoroughly. It never says what a successful call returns or where the filed draft surfaces (presumably my_work / revise_draft), which is the one gap an agent would want closed.

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 already 100%, so 3 is the floor, but the description earns above it: it explains WHY `sku` is an exact key and why a product name is refused, defines the productId-or-sku choice and the both-disagree refusal, and frames `proposed` as changed-fields-only while naming the closed field set. It adds meaning rather than restating the schema.

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 description states a precise verb+resource: propose corrections to a product already in the catalogue by filing a pending draft. It separates itself from adjacent tools by naming where the excluded operations actually live (Products → Adjust stock, the catalogue import, the product page) and by pointing at resolve_product as the source of the id. An agent can tell this apart from stage_master_data or resolve_product without opening any 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?

It gives explicit when-to-use triggers (wrong price key, mangled name, missing barcode, wrong unit, unset reorder point, wrong category), explicit when-NOT-to-use rules for six refused field classes each with the owning screen, and an operational rule (one product per call; loop for a sweep). The alternative paths are named rather than implied.

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