Skip to main content
Glama

vivid-ads-commerce

vivid_cross_sell

Read-onlyIdempotent

Suggest relevant, NON-pushy add-on products to round out a customer's order — 1–2 genuinely useful companions with a reason. PREFERS real frequently-bought-together data from Vivid Ads' order history (pass product = the product handle the customer chose); falls back to curated use-case bundles (pass use_case). Omit both to get guidance. Pass already_have to avoid re-suggesting what they've chosen. Never pressure — helpful suggestions only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
productNothe product handle the customer chose, e.g. 'pull-up-banners' — returns items frequently bought with it from real order history
use_caseNocurated fallback: 'trade-show', 'school-open-day', 'construction-fence', 'retail-promotion', 'real-estate', or 'corporate-conference'
already_haveNoproduct keys/handles the customer already chose (optional) — excluded from suggestions

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is known. The description adds valuable context: the tool prefers real order history, falls back to curated bundles, and enforces a non-pushy tone. It also explains the behavior when both optional params are omitted. No contradiction with annotations.

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 dense but every sentence contributes: purpose, data source preference, fallback, optional parameter guidance, and tone reminder. It's front-loaded with the main action and keeps the rest compact. No wasted words.

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 3 optional params and no output schema, the description covers the key behaviors: how to invoke with different inputs, what to expect in general (1–2 suggestions with reasons), and the appropriate use case. It could theoretically specify the return format, but the description sufficiently frames the tool's behavior for an agent.

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 baseline is 3. The description adds relational meaning: it explains how `product` and `use_case` interact as primary vs fallback data sources, and clarifies that `already_have` filters out chosen items. It also provides example handles for `use_case`. This goes beyond the schema's per-parameter descriptions.

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 clearly states the tool's specific verb+resource: 'Suggest relevant, NON-pushy add-on products to round out a customer's order'. It distinguishes itself from generic recommend tools by emphasizing cross-sell with 1–2 companions and a reason. This makes the purpose unambiguous and distinct from siblings like vivid_recommend.

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?

The description provides explicit conditional usage: pass `product` for real frequently-bought-together data, pass `use_case` for curated bundles, omit both for guidance, and pass `already_have` to avoid re-suggesting. It also gives a behavioral guideline ('Never pressure'). It doesn't explicitly name alternative tools, but the conditions are clear enough for an agent to decide when to use this tool.

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.

TDQS

A3.9/5.0
Disambiguation2/5

Several tools have overlapping purposes, particularly order status (vivid_order_status vs vivid_fulfilment_order_status vs vivid_fulfilment_production_stage) and artwork handling (vivid_artwork vs vivid_upload_artwork). An agent could easily select the wrong one without careful reading of the descriptions.

Naming Consistency4/5

All tools share the consistent 'vivid_' prefix and snake_case format. However, the second part mixes verb-noun patterns (place_order, check_artwork) with noun-based names (price, product, order_status), so the pattern isn't fully uniform but is still predictable and readable.

Tool Count3/5

At 25 tools, the server is at the heavy end of the borderline range. The broad scope (product discovery, pricing, ordering, artwork, fulfilment statuses, support) justifies most tools, but some overlapping status/artwork tools could be consolidated to reduce clutter.

Completeness4/5

The server covers the entire customer journey from product search, configuration, pricing, quoting, ordering, artwork upload/check, proof tracking, production/delivery status, to reordering. Minor gaps like explicit order update/cancel tools are missing, but support_answer covers those topics and the lifecycle is otherwise well-covered.

Resources