Skip to main content
Glama

save_tribute_product

DestructiveIdempotent

Set up a product of the connected Tribute account for sale in this application, or change one already set up (one saved product per Tribute product, so calling it again updates). Requires manage_automation. Returns the saved product; its id is the productBindingId of a Payment block with provider TRIBUTE. A purchase always runs the Paid branch of that block; adding a number to a contact variable is optional. Once the product is published, what it adds is fixed (TRIBUTE_IMMUTABLE_BENEFIT): to change it the owner creates a new product in Tribute. Messages stay editable.

Input Schema

NameRequiredDescriptionDefault
messagesNoThe owner's own messages to the buyer, per language. Omit to keep the saved ones; an array REPLACES all of them, and [] goes back to the built-in texts, which reach each buyer in their own language. Plain text up to 3000 characters; {product}, {price}, {amount}, {currency} and {added} are filled in. Leave out unless the owner wants their own wording.
productIdYesRequired. The Tribute product id: products[].productId from list_tribute_account_products. It must be an approved digital product.
applicationIdNoApplication (workspace) id. Optional: an application-scoped key (app_...) defaults to its own application, but a personal key (usr_...) has no default and omitting it fails with MCP_APPLICATION_REQUIRED. Call list_applications to get the id.
addsToVariableNoOptional balance top-up (credits, days, lessons). Omit to keep what is saved (nothing for a new product). null removes it. When set, the Paid branch must not add the same number again.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, and the description adds genuinely useful context beyond them: the manage_automation requirement, the returned binding (productBindingId of the TRIBUTE Payment block), that a purchase runs the Paid branch, and the TRIBUTE_IMMUTABLE_BENEFIT rule that published benefits are frozen while messages stay editable. That immutability disclosure is exactly the kind of consequence the annotations cannot express; only the interaction between destructive writes and saved messages is left implicit.

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 primary action, then prerequisites, return value, and the immutability caveat in a logical order with no filler. Some sentences are dense run-ons (the Paid-branch/variable sentence), but nothing is redundant enough 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?

There is no output schema, and the description compensates by saying exactly what comes back and how the returned id is consumed. Permission requirements, upstream discovery calls, downstream purchase behavior, and the immutability/editability split are all covered, which is sufficient for a 4-parameter mutation tool of this complexity.

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% and each parameter is already well documented, so the baseline is 3. The description adds cross-parameter meaning the schema does not carry on its own — that the productId ties to a Payment block's productBindingId, that the variable top-up is optional and must not duplicate the Paid branch's own addition, and that the product must be approved and come from list_tribute_account_products.

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?

Names a specific verb and resource (set up / change a Tribute product for sale in this application) and immediately distinguishes the create-vs-update path with 'one saved product per Tribute product, so calling it again updates', which tells the agent there is no separate update sibling. That is a precise, unambiguous purpose.

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?

States the prerequisite ('Requires manage_automation') and clarifies that re-invocation is the update path, so the agent knows not to hunt for an update variant. It stops short of naming explicit alternatives or when-not-to-use conditions (e.g., when to call update_tribute_connection instead), which keeps it below a 5.

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.