Skip to main content
Glama

upsertProductVariantsTool

Create or update variants of a product. Each item names its options ({ "size": "M", "color": "Red" } — the axes must exist: upsertProductOptions), and the axisKey is built from them. An item with variantId, or with options that match an existing variant, updates it; otherwise a new variant is created. Only the fields you pass move. Stock (quant, -1 unlimited), active, SKU, position and pictures apply at once. On a rikma product a new variant, or a price that moves, goes to the partners as one edit proposal (proposalId, silenceApprovesAt, voteUrl); on a personal product everything applies at once. Variants are never deleted — set active:false. Members only. Docs: https://1lev1.com/mcp#upsertProductVariantsTool

Input Schema

NameRequiredDescriptionDefault
reasonNoWhy — shown to the partners when something is proposed.
variantsYes
productIdYesMatanot id, from listRikmaProducts.
projectIdYesRikma (project) id, from findUserProjectsTool. You must be a member.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false, destructiveHint=false, idempotentHint=false; the description goes far beyond with partial-update semantics ("Only the fields you pass move"), the rikma-vs-personal proposal fork with proposalId, silenceApprovesAt and voteUrl, and the operational-vs-term split (stock/active/SKU/position/pictures apply at once, a price move becomes a proposal). The membership requirement is also disclosed. No contradiction with destructiveHint=false, since deletion is explicitly excluded.

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 operation, then match semantics, then the proposal consequence, then the deletion rule and access restriction — a sensible ordering with no filler. Some sentences are telegraphic jargon ("term", "rikma", "Matanot") and the operational-field list reads as a compressed parenthetical, which costs a little readability but not accuracy.

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, the description carries the return burden and does name the proposal fields an agent must surface to a user (proposalId, silenceApprovesAt, voteUrl). For a 4-parameter, 100-item batch mutation with a dual apply path, the definition is nearly complete; the main residue is what the response looks like when everything applies immediately on a personal product.

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 75%, so parameters are largely documented already, but the description adds real semantics the schema lacks: that axisKey is derived from the options map, that variantId-versus-optionValues selects update vs create, and that "quant, -1 unlimited ... apply at once" versus a changed price which is a term. It still doesn't clarify the return payload shape for the immediate-apply case.

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?

"Create or update variants of a product" names a specific verb pair and resource, and the rest of the description immediately separates it from siblings: option axes come from upsertProductOptions, and listing is handled elsewhere. An agent can distinguish this from listRikmaProductVariantsTool and updateRikmaProductTool without opening a schema.

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 explicit create-vs-update conditions (variantId present, or options matching an existing variant) and states the non-obvious alternative to deletion: "Variants are never deleted — set active:false." It also points at upsertProductOptions as a prerequisite. It stops short of routing between this tool and proposeProductEditTool/proposeProductEditsBatchTool, which an agent would need to choose a write path.

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.