Skip to main content
Glama

POD Benchmark

Compare print-on-demand suppliers

compare_product
Read-onlyIdempotent

Use this when a seller asks which print-on-demand (POD) supplier costs less for a product, wants a Printify vs Printful product comparison, or needs to compare product prices, shipping costs, delivered totals or estimated delivery times. Compares Printify, Printful, Gelato, Prodigi, CustomCat, Fourthwall and Inkthreadable wherever the product has supplier offers. Useful for Etsy and Shopify sellers choosing where to fulfill T-shirts, hoodies, mugs and other POD products. Compare one product and configuration for a destination and currency. Search products first; for a specified size or color pass choices or an optionKey from get_product_options. With neither, it uses the product's usual configuration and returns its label. Unknown costs remain null; similar products stay separate; affiliate links never change rankings. Paid plans must be explicitly requested; base is standard pricing. supplier shows one supplier's every product and print provider for the choice. Optional seller context, passed only when the seller already said it and never guessed: yourSupplier (the supplier they use now, so it is pinned first and every other row shows the difference per sale), and sellingPrice in the chosen currency, or targetMargin in percent to get the price to charge, with salesChannel (etsy, shopify, woocommerce, tiktok-shop) and shopLocation (the country their shop is in) to apply approved platform fees. Whenever the seller mentions their supplier, selling price, margin or platform, call this tool again with those fields instead of estimating profit yourself. If a price or margin arrives without salesChannel or shopLocation, the result lists what to ask. Profit is an estimate before tax from approved fee research. Supported destinations: US, GB, DE, AU, CA. Comparison totals and rankings are product + shipping. Supplier-billed duty is separate: an established amount, zero, bounded estimate or unverified amount. Profit deducts established duty or a converted estimate. Show one estimated duty amount using the converted upper endpoint, or the native upper endpoint marked not converted; do not narrate min–max ranges. Unverified duty or an unconverted native estimate leaves profit before that charge. Estimated or unverified duty never supports a best actual-profit claim in either profit mode; conditional design/setup prices do not establish a winner or gap. VAT, sales tax and customer-paid import charges are excluded or explicitly marked unknown. Do not use for ordering, store integrations, print-quality rankings or unsupported destinations.

Input Schema

NameRequiredDescriptionDefault
choicesNoChoices by field, such as { "size": "m", "color": "black" }. Values match a value key, its last part or its label, case-insensitively; get_product_options lists them.
currencyYes
supplierNoShow only this supplier, with every product and print provider it offers for the choice.
optionKeyNoAn exact key from get_product_options.
destinationYesWhere the buyer lives: US, GB, DE, CA or AU.
pricingTierNobase is each supplier's standard price; tier1 and tier2 are its paid plans.base
salesChannelNoThe platform the seller sells on. Needed with sellingPrice or targetMargin for platform fees.
sellingPriceNoWhat the seller's customer pays per item, in the chosen currency, including any shipping the seller charges. Only when the seller said so.
shopLocationNoThe country the seller's shop is based in, which can differ from the destination the order ships to. Needed with sellingPrice or targetMargin for platform fees.
targetMarginNoThe share of the sale, in percent, the seller wants to keep after supplier cost and platform fees. Returns the price to charge with each supplier. Use instead of sellingPrice.
yourSupplierNoThe supplier the seller uses today. Only when the seller said so; never guess.
canonicalProductIdYes

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, closed-world), and the description adds substantial behavior beyond them: unknown costs stay null, similar products stay separate, affiliate links never change rankings, totals are product+shipping, supplier-billed duty can be established/zero/bounded/unverified, profit is a pre-tax estimate from approved fee research, and estimated duty can never support a best-profit claim. That is real invocation-relevant context, not restatement.

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

Conciseness3/5

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

Front-loaded well — the first two sentences carry the when-to-use case — but the body sprawls into a dense run of duty/VAT/profit rules ('Show one estimated duty amount using the converted upper endpoint...') that reads like output-documentation prose rather than selection guidance. Several clauses could be compressed or delegated to the output schema without losing decision value.

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?

For a 12-parameter, high-complexity comparison tool with an output schema, it covers destinations, currency coupling, null handling, duty treatment and tax exclusions. The one gap is canonicalProductId — its provenance is only implied by 'Search products first' rather than stated, so an agent must infer where the ID comes from.

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 83%, so the baseline is 3, but the description earns more: it explains that yourSupplier pins that supplier first and shows the per-sale difference on every other row, that sellingPrice and targetMargin are paired inputs requiring salesChannel/shopLocation for fees, that pricingTier must be explicitly requested with 'base' as standard, and that choices/optionKey fall back to the product's usual configuration whose label is returned. That cross-parameter dependency is not in 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?

Opens with a specific verb and resource ('compare print-on-demand supplier costs for a product') and immediately names the concrete comparison axes: product prices, shipping, delivered totals, delivery times. It also enumerates the supplier set and the product categories, so an agent can distinguish it from get_supplier_prices or search_products 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 Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit triggers (seller asks which supplier costs less, Printify vs Printful, Etsy/Shopify fulfillment choice), explicit prerequisites ('Search products first', use get_product_options for size/color), and explicit exclusions ('Do not use for ordering, store integrations, print-quality rankings or unsupported destinations'). It also sets a re-call rule: whenever the seller mentions their supplier, selling price, margin or platform, call again with those fields.

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.