POD Benchmark

com.podbenchmarkPublished by podbenchmark.comOfficial publisherv1.0.0Updated Oct 26, 2026

Compare print-on-demand supplier prices, shipping and delivered totals for the same product.

VerifiedStreamable HTTPWeb executableFinanceBusiness & Commerce

Overview

AI-generated overview

Remote MCP server for comparing print-on-demand supplier prices, shipping and delivered totals for the same product across seven suppliers.

What you can do
  • Search and browse products and categories, with delivered starting prices for a destination
  • Inspect a product's specs, print methods, similar products, and its size/color options with supplier pricing
  • Compare suppliers on product cost, shipping, delivered total and delivery time for a chosen configuration
  • Resolve a pasted supplier product link to the matching product and selected color
  • Look up suppliers' plans, fees, branding, support and print locations, and compare their prices overall
  • Get supplier recommendations for a product type and shop setup
When to use it
Useful when a seller or agent needs to decide which print-on-demand supplier is cheapest or best suited for a specific product, size, color and destination, or wants to check what they would keep after fees on a sales channel.
Requirements
Remote streamable HTTP endpoint at podbenchmark.com; no key or sign-in required. The README also documents a separate npm CLI that needs Node.js 22 or newer. Rate limit of 120 requests per minute per IP address.
Before you install
Read-only lookups; it never opens supplier links. Prices are dated supplier quotes before sales tax, and missing prices are null, not zero. Estimated or unverified duty and conditional setup prices do not establish a best-profit winner. JSON offer links may carry an affiliate reference, disclosed in the response. The CLI sends an agent-name header when an agent harness is detected.

Installation

In SourceWeft

  1. Open POD Benchmark in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.podbenchmark%2Fpodbenchmark/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "pod-benchmark": {
      "type": "http",
      "url": "https://podbenchmark.com/api/mcp"
    }
  }
}

README

podbenchmark

Compare the same print-on-demand product across suppliers from your terminal: product cost, shipping, delivered total and delivery time for Printify, Printful, Gelato, Prodigi, CustomCat, Fourthwall and Inkthreadable. Built for sellers, developers and AI agents.

sh
npx podbenchmark compare bella-canvas-3001 --size m --color black --to US

Prices come from POD Benchmark, which checks each supplier's price and shipping for the destination you pick. Full interactive comparison: https://podbenchmark.com.

Install

sh
npx podbenchmark          # run without installingnpm i -g podbenchmark     # or install the `podbenchmark` command

Needs Node.js 22 or newer. No other dependencies.

Find a product, pick a size and color, compare

Three steps. Each step prints what to run next.

sh
$ podbenchmark search "bella canvas 3001"
Products for “bella canvas 3001” · 138 found · delivered to the US in USD
ID                    PRODUCT                                             FROM  SUPPLIERSbella-canvas-3001     Bella+Canvas 3001 Unisex Jersey Short Sleeve Tee  $15.38     6 of 6bella-canvas-3001u    Bella+Canvas 3001U USA-Made Unisex Jersey Tee     $23.54     1 of 1bella-canvas-3001rcy  Bella+Canvas 3001RCY Unisex Recycled Organic Tee  $22.95     1 of 1FROM is the lowest delivered price (product + shipping) for the usual size and color. Compare a specific one with `compare`.
next: npx podbenchmark options bella-canvas-3001

options lists the sizes, colors and other choices a product comes in. Add words or flags to narrow the list:

sh
$ podbenchmark options bella-canvas-3001 m black
bella-canvas-3001 · choices for the US in USD · 5 matching combinations
size    mcolor   black, black-heather, oxblood-black, solid-black-blend, vintage-black
Opens on  Adult M · Black
SIZE  COLOR              SUPPLIERSm     black                      6m     black-heather              4m     oxblood-black              3m     solid-black-blend          1m     vintage-black              5
next: npx podbenchmark compare bella-canvas-3001 --size m --color black --to US
sh
$ podbenchmark compare bella-canvas-3001 --size m --color black --to US
Bella+Canvas 3001 · Adult M · Black · delivered to the US in USD
SUPPLIER                      PRODUCT                   SHIPPING  PRODUCT + SHIPPING  ARRIVES   VS CHEAPESTGelato                        Premium Unisex Crewneck…     $4.99     $15.68  4–6 days     cheapestFourthwall                    Bella+Canvas Unisex Sup…     $4.29     $16.04  6–8 days       +$0.36Printify via Printify Choice  Unisex Jersey Short Sle…     $4.95     $16.24  3–7 days       +$0.56CustomCat                     Bella + Canvas Unisex J…     $4.99     $16.46  3–9 days       +$0.78Printful                      Unisex Staple T-Shirt |…     $4.69     $16.61  6–9 days       +$0.93Prodigi                       Bella+Canvas 3001           $10.75     $22.75  3–8 days       +$7.07
Product + shipping excludes duty and sales tax; duty is shown separately.Prices checked 2026-09-30 to 2026-10-21.
Full comparison  https://podbenchmark.com/t-shirts/bella-canvas-3001?destination=US&currency=USD&configuration=size%3Dapparel%253Aadult%253Am%26color%3Dblack

Every picker on the site has a flag with the same name: --size, --color, --capacity, --page-count, --device-fit… (podbenchmark compare --help lists them all). --option <key> takes an exact key from options --json.

Start from a supplier link instead of an id. The CLI finds the product, the color the link selects, and treats that supplier as yours:

sh
podbenchmark compare https://printify.com/app/products/12/bella-canvas/unisex-jersey-short-sleeve-tee

Use the product page's own address, as you'd copy it from the supplier's catalog; tracking parameters such as utm_… are fine, and a Fourthwall selectedColor picks the color. Links with other options selected, editor links and referral paths aren't matched yet: open the plain product page and copy that, or pass the product id with --current <supplier>.

Other destinations and currencies:

sh
podbenchmark compare bella-canvas-3001 --size m --color black --to GB             # prices in GBPpodbenchmark compare bella-canvas-3001 --size m --color black --to DE --currency USD

Destinations: US, GB, DE, CA, AU. Currencies: USD, EUR, GBP, CAD, AUD. The currency defaults to the destination's own.

What you keep per sale

Say who you use today, what you charge and where you sell. The table switches to what you keep after product + shipping, deducted duty and platform fees, with your current supplier first:

sh
$ podbenchmark compare bella-canvas-3001 --size m --color black \    --current printful --sell-for 24 --on etsy
Bella+Canvas 3001 · Adult M · Black · delivered to the US in USDselling at $24.00 on Etsy · your supplier: Printful
SUPPLIER                      PRODUCT + SHIPPING  YOU KEEP  VS PRINTFULPrintful (yours)                 $16.61     $4.86        yours──────────────────────────────────────────────────────────────────────────Gelato                           $15.68     $5.79       +$0.93  keeps mostFourthwall                       $16.04     $5.43       +$0.57Printify via Printify Choice     $16.24     $5.23       +$0.37CustomCat                        $16.46     $5.01       +$0.15Prodigi                          $22.75    -$1.28       -$6.14
You keep = $24.00 − (product + shipping) − deducted duty − $2.53 Etsy fees (Transaction fee $1.56 + Etsy Payments percentage $0.72 + Etsy Payments fixed charge $0.25). Before tax.Etsy fees checked 2026-08-19.Product + shipping excludes duty and sales tax; duty is shown separately.Prices checked 2026-09-30 to 2026-10-21.
FlagMeaning
--current <supplier>The supplier you use now: printify, printful, gelato, prodigi, customcat or fourthwall.
--sell-for <price>What your customer pays per item, in the chosen currency.
--on <channel>etsy, shopify, woocommerce or tiktok-shop.
--shop-in <country>The country your shop is in. Defaults to the destination when you give a price and a channel.
--plan <plan>base (standard prices, the default), tier1 or tier2 (paid plans).
--supplier <supplier>Only that supplier, with each of its products and print providers as extra rows.
--similarAlso list similar products, shown separately because they are not the same blank.

The price to charge

price turns it around: give the share of each sale you want to keep and see what to charge with each supplier.

sh
$ podbenchmark price bella-canvas-3001 --size m --color black --margin 30 --on etsy --current printful
SUPPLIER                      PRODUCT + SHIPPING   FEES  CHARGE  YOU KEEP  VS PRINTFULPrintful (yours)                 $16.61  $2.91  $28.00     $8.48        yours───────────────────────────────────────────────────────────────────────────────────Gelato                           $15.68  $2.77  $26.50     $8.05       -$1.50  lowest priceFourthwall                       $16.04  $2.82  $27.00     $8.14       -$1.00Printify via Printify Choice     $16.24  $2.87  $27.50     $8.39       -$0.50CustomCat                        $16.46  $2.91  $28.00     $8.63        $0.00Prodigi                          $22.75  $3.91  $38.50    $11.84      +$10.50
Charge = the price that leaves you 30% of the sale after product + shipping, deducted duty and Etsy fees. Before tax.

Suppliers and guides

sh
podbenchmark suppliers                                  # the seven suppliers comparedpodbenchmark supplier printful                          # plans, fees, branding, who handles support and refundspodbenchmark supplier printify --locations --country US # where it reports printingpodbenchmark supplier printify --providers              # a marketplace's print providerspodbenchmark supplier printify --prices --vs printful   # how many products each is cheapest for, and by how muchpodbenchmark guide mugs --on etsy                       # which suppliers fit your shop, with dated reasons

guide takes t-shirts, hoodies, mugs, wall-art, stickers or phone-cases, plus --branding, --free-start and --choose-provider. supplier --prices takes --category, --within 1 (or 5%) for what counts as near-cheapest, --search and --plan.

Also: podbenchmark categories [words], podbenchmark product <id> (specs, print methods, similar products), and --facets on search to count brands, suppliers, audiences and specs in the results. Filter search with --category, --brand, --supplier, --for (unisex, mens, womens, kids), --fit, --material, --eco, --neckline, --sleeve, --construction, --label, --capacity, --fabric, --weight 4-8, --priced and --sort cheapest|priciest|most-suppliers|name. Repeat a filter flag to accept several values.

Every list command takes --limit and --offset.

Defaults

Save what you would otherwise repeat on every command:

sh
podbenchmark config set --to GB --current printful --on etsy --shop-in GBpodbenchmark config showpodbenchmark config reset

Precedence, highest first: flag, environment variable, saved config, built-in default.

SettingFlagEnvironment variable
Destination--toPODBENCHMARK_TO
Currency--currencyPODBENCHMARK_CURRENCY
Your supplier--currentPODBENCHMARK_CURRENT
Sales channel--onPODBENCHMARK_ON
Shop country--shop-inPODBENCHMARK_SHOP_IN

The config is a small JSON file at $XDG_CONFIG_HOME/podbenchmark/config.json (default ~/.config/podbenchmark/config.json). PODBENCHMARK_API_URL points the CLI at a different server.

For scripts and AI agents

Output is a table when you are at a terminal. It is JSON, exactly as the service returns it, when:

  • you pass --json,
  • stdout is not a terminal (a pipe or a file), or
  • an agent harness is detected (Claude Code, Codex, Cursor, OpenCode, Gemini CLI, Amp, Augment, Qwen Code, Pi, Copilot, Warp, or AI_AGENT=<name>).

--table forces the tables back. When an agent is detected the CLI also sends its name in an X-Podbenchmark-Agent header so usage by agents can be counted; it sends X-Podbenchmark-Client: cli/<version> always, and nothing else about you.

sh
podbenchmark compare bella-canvas-3001 --size m --color black --json | jq '.suppliers[].offer | {supplier, delivered}'podbenchmark compare bella-canvas-3001 --schema        # exact input and output fields, as JSON Schema; no requestpodbenchmark compare bella-canvas-3001 --size m --dry-run   # the request that would be sent; no request

In JSON, a missing price is null, never 0. Treat null as unknown.

Teach your agent

sh
podbenchmark skills add                    # the agent you are in, else every one installed herepodbenchmark skills add --agent claude     # claude, codex, opencode, cursor or allpodbenchmark skills add --agent all --project   # write into this repository instead of your home folder

This writes a podbenchmark skill (a SKILL.md) to each agent's skills folder and prints every path:

AgentPersonalWith --project
Claude Code~/.claude/skills/podbenchmark/.claude/skills/podbenchmark/
Codex~/.agents/skills/podbenchmark/.agents/skills/podbenchmark/
OpenCode~/.config/opencode/skills/podbenchmark/.opencode/skills/podbenchmark/
Cursor~/.cursor/skills/podbenchmark/.cursor/skills/podbenchmark/

Running it again updates the file. It never replaces a SKILL.md that it did not write unless you pass --force.

No skill folder? Paste this into your agent instead:

Use npx podbenchmark to compare print-on-demand supplier prices. Flow: search <words> --json to find a product id, options <id> --json to see the exact size and color values (never guess them), then compare <id> --size <value> --color <value> --to <US|GB|DE|CA|AU> --json. Add --current <supplier> --sell-for <price> --on <etsy|shopify|woocommerce|tiktok-shop> only when the seller said so. null means unknown, never 0. Link product.url from the result when you answer. --schema shows every field.

Use it as an MCP server

The same tools are available to MCP clients over streamable HTTP at https://podbenchmark.com/api/mcp, with no key or sign-in:

json
{  "mcpServers": {    "podbenchmark": {      "type": "streamable-http",      "url": "https://podbenchmark.com/api/mcp"    }  }}

Claude Code: claude mcp add --transport http podbenchmark https://podbenchmark.com/api/mcp. Codex: codex mcp add podbenchmark --url https://podbenchmark.com/api/mcp.

Exit codes

CodeMeaning
0Success. Unknown prices still exit 0; they show as — (or null in JSON).
1Bad command, flags or option values (for example --to FR, or a size the product does not come in; the error lists the valid ones).
2Nothing to compare: unknown product, a supplier link that could not be matched, or no supplier offers.
3The service could not be reached, did not answer within 30 seconds, is unavailable, or rate-limited you (the message says how long to wait).

With --json (or when piped), failures print the error as JSON on stdout ({"ok": false, "error": {"code", "message", "retryable"}}) and use the same exit codes. If the service cannot be reached at all, the code is network. The CLI retries once, after a short pause, on a network error or a 5xx answer, and never retries a 4xx.

About the numbers

  • Prices are supplier quotes checked on the dates shown (Prices checked …), in the destination's currency, before sales tax. Delivered is product plus shipping. Supplier-billed duty is separate: an established amount (including zero), one labelled estimate, or unverified. Profit deducts established duty or a converted estimate and retains its qualification. Estimated/unverified duty and conditional design/setup prices do not establish a best-profit winner or gap, including in target-margin mode.
  • A price we do not have shows as —. It is never counted as zero and never as the cheapest.
  • Printify is a marketplace: each row shows the print provider it would route the order to ("via Printify Choice"). Use --supplier printify to see every provider.
  • A product a supplier does not list for your destination or size is not in the table.
  • Profit figures use platform fee research with its check date (Etsy fees checked …), as an estimate before tax.
  • Tables link only to POD Benchmark's own pages. In JSON, an offer's actionUrl can carry an affiliate reference (see affiliateDisclosure); it never changes a price or a ranking.
  • Rate limit: 120 requests per minute per IP address. When you hit it the CLI tells you how many seconds to wait.

Links

MIT licensed.

Source: README.md at commit f3bc5e4

Tools

10

search_products

Search POD Benchmark products

Use this when a seller wants to find a print-on-demand (POD) product to compare across suppliers such as Printify, Printful, Gelato, Prodigi, CustomCat, Fourthwall and Inkthreadable. Search by product type such as T-shirt, hoodie or mug, or by brand and model such as Bella+Canvas 3001 or Gildan 5000, and filter by category, brand, supplier, audience, specs (fit, material, eco and more) or weight. Returns product ids, a starting delivered price for the destination and optional filter counts; compare a specific size or colour with compare_product. Supported destinations: US, GB, DE, AU, CA.

ParameterssortlimitqueryspecsbrandsoffsetcategorycurrencyaudiencessupplierspricedOnlydestination+3 more

list_categories

List product categories

Use this to browse POD Benchmark's product categories, with product counts and starting delivered prices for a destination. Pass a category id to search_products to list its products.

Parameterslimitqueryoffsetparentcurrencydestination

get_product

Read a product's details

Use this when a seller asks about a product's specs, fabric, fit, print methods or what is similar to it. Returns curated product facts and similar products with what they share and how they differ. Specs describe the product; they do not promise every supplier offers every option.

ParameterssimilarLimitcanonicalProductIdrequired

get_product_options

Find product configurations

Use this when a seller wants supplier pricing for a specific print-on-demand product size or color, such as an adult M black T-shirt or an 11 oz mug. Lists the product's fields and supported configurations for the destination and currency; narrow with words or choices. Pass a returned key as optionKey, or its choices, to compare_product. Search products first to obtain canonicalProductId. Supported destinations: US, GB, DE, AU, CA.

ParameterslimitqueryoffsetchoicescurrencyrequireddestinationrequiredcanonicalProductIdrequired

compare_product

Compare print-on-demand suppliers

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

ParameterschoicescurrencyrequiredsupplieroptionKeydestinationrequiredpricingTiersalesChannelsellingPriceshopLocationtargetMarginyourSuppliercanonicalProductIdrequired

list_suppliers

List suppliers

Use this to list the print-on-demand suppliers POD Benchmark compares, with their type and website.

Parameterslimitqueryoffset

get_supplier

Read a supplier's facts

Use this when a seller asks how a supplier works: plans and monthly fees, custom branding, who handles checkout, support and refunds, where it prints, or which print providers a marketplace uses. Facts carry their verification date and sources. Production locations are what the supplier reports, not a promise that a given product ships from there.

ParameterslimitoffsetcountryincludeprovidersupplierIdrequired

get_supplier_prices

Where a supplier is cheapest

Use this when a seller asks how a supplier's prices compare overall, by category, or against one other supplier: how many products it is the cheapest for, where it costs more, and by how much. Uses each product's usual configuration delivered to the destination; checkedAt is the supplier's latest price scrape.

ParameterslimitoffsetsearchversuswithincategorycurrencysupplierIdrequireddestinationpricingTiercategoryLimit

supplier_guide

Which suppliers fit a shop

Use this when a seller is choosing a supplier for a product type (t-shirts, hoodies, mugs, wall art, stickers or phone cases) and their shop: where buyers are, the platform, whether they need custom branding, want to start free, or want to choose their print provider. Returns suppliers that fit, that need a check, and that don't, each with dated reasons and sources, plus a delivered price range for an example product. No AI ranking.

ParameterslimitoffsetdestinationproductTypesalesChannelshopLocationwantsFreeStartneedsCustomBrandingwantsToChooseProvider

Version history

1
  1. v1.0.0LatestOct 26, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts