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); 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. Dates show when Glama detected each change.

  1. Added

TDQS

A5/5.0
Behavior5/5

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

With only generic boolean annotations, this description carries the full behavioral burden and does it superbly. It discloses the pending-draft semantics, that nothing changes until a human approves the diff, that agreeing fields are dropped, that an empty proposal is refused, that conflicting productId/sku keys are refused, and that unsupported fields are refused by name. This goes far beyond what any annotation could convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long, but every sentence earns its place. It is front-loaded with the critical pending-draft-only warning, then organizes allowed fields, explicit impossibilities, conflict behavior, and guidance. The use of all-caps headings, examples, and a clear refusal list makes the density navigable rather than bloated.

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?

Given the nested proposed object, five parameters, no output schema, and sparse annotations, the description covers everything needed to invoke the tool correctly: how to identify the product, which fields may change, how categories work, what triggers refusals, what to do with uncertain data, and how to handle batch sweeps. No critical context for correct invocation is missing.

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 100%, so the baseline is 3, but the description adds substantial meaning beyond the schema. It explains why productId versus exact sku are both valid exact keys, that a product name is refused, that proposed contains only changed fields, that category names are matched against existing categories and never created, and that barcode can be null to clear it. It also ties notes and needsReview together with the honesty requirement.

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 names a specific verb ('files a pending draft'), a specific resource (a product already in Taokeh's catalogue), and the approval workflow that distinguishes it from direct writes. It also clearly scopes what it is not: it does not create products, change stock, cost, SKU, description, or publishing state. This makes it easily distinguishable from the many create_*_draft, update_*_draft, and resolve_* siblings.

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?

The description explicitly says when to use it: propose corrections to an existing catalogue product, and even gives concrete examples like a miskeyed price, mangled name, missing barcode, or wrong category. It also gives explicit non-uses, each with the owning screen or workflow (stock adjustment, purchases, catalogue import), plus procedural guidance to loop per product because each reviewable diff is the point.

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