Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

ApparelHub

NPM · @APPARELHUB/MCP-SERVER · 2 COMPONENTS · SCANNED SEP 29

Run a custom-merch store from an agent: design, build products, list on every channel, fulfill.

63 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security48
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 31 of 92 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to ApparelHub-AI/apparelhub-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 0 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability68
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 23020 tokens (~187/item across 123 items; 123 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage90
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 71% of tool parameters carry a description.Partial
Tool Safety98
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 9 of 10 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "remove_order_item" implies "remove" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Partial
  • An AI judge read all 124 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

How do I install the ApparelHub MCP server?

ApparelHub runs locally as an npm package, launched with npx -y @apparelhub/mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @apparelhub/mcp-server

# add to Claude Code
claude mcp add apparelhub-ai-apparelhub-mcp -- npx -y @apparelhub/mcp-server
// .cursor/mcp.json
{
  "mcpServers": {
    "apparelhub-ai-apparelhub-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@apparelhub/mcp-server"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "apparelhub-ai-apparelhub-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@apparelhub/mcp-server"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add apparelhub-ai-apparelhub-mcp -- npx -y @apparelhub/mcp-server
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "apparelhub-ai-apparelhub-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@apparelhub/mcp-server"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add apparelhub-ai-apparelhub-mcp --command npx --arg -y --arg @apparelhub/mcp-server
# ~/.hermes/config.yaml
mcp_servers:
  apparelhub-ai-apparelhub-mcp:
    command: "npx"
    args: ["-y", "@apparelhub/mcp-server"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "apparelhub-ai-apparelhub-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@apparelhub/mcp-server"
      ]
    }
  }
}
# add to Vellum
assistant mcp add apparelhub-ai-apparelhub-mcp -t stdio -c npx -a -y @apparelhub/mcp-server
// mcp.json
{
  "mcpServers": {
    "apparelhub-ai-apparelhub-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@apparelhub/mcp-server"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 29 Sept 26 63

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 29 Sept 2026 · Analysed npm/@apparelhub/mcp-server@0.15.2

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo ApparelHub-AI/apparelhub-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/ApparelHub-AI/apparelhub-mcp/.github/workflows/publish.yml@refs/tags/v0.15.2
Rekor log index 2993530528
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:6e0dd91870fc919c444959a5a6b7bffa039964915dcd4b68f5f7be7dcafea985633f51c21cea06edbc659435d01238737f7284c1428e13b3ce910669e

Background: How many MCP packages publish verified provenance →

Dependencies 92 packages
Packages resolved 92
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 123 exposed · ~22,846 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
find_garments ~447

Search EVERY fulfillment provider on the account at once for garments matching a capability. USE THIS BEFORE TELLING A USER AN ITEM CANNOT BE BUILT. A capability limit is almost always scoped to one provider, not to the category of garment: one provider carrying only embroidered headwear says nothing about another's printed caps. browse_catalog answers 'what does THIS provider carry'; this answers 'what on this ACCOUNT can take this design'. Provider scope defaults to every provider available — pass `providers` only to deliberately narrow it. Returns a compact ranked shortlist (confirmed capability first), plus `providers_searched` so you can state your coverage honestly rather than implying you checked everything. An empty result means nothing matched THESE filters on THESE providers; it is not proof the garment does not exist, and the warnings say so. Read-only. [#e5ad81]

NameTypeReqDescription
accepts_photorealboolean–true for photographic / gradient-heavy / fine-detail artwork; false to find garments you can embroider. This is the filter that answers "can this design go on this thing".
categorystring–Garment kind, e.g. "hat", "t-shirt", "mug". Matched against product names across each provider's whole catalog, including the words providers actually use ("hat" also finds cap / beanie / snapback /…
decoration_methodarray–Any match qualifies. "print" means a print process the provider does not name more precisely.
include_unknownboolean–Keep garments whose decoration method the provider never published. Default true: unclassified is not the same as unsuitable, and excluding them hides real options.
keywordstring–Extra substring match on name/brand.
limitinteger–Default 20.
providersarray–Provider NAMES to restrict to. OMIT to search every provider on the account — that is the default and the recommended usage.
verifyboolean–Confirm low-confidence matches with a per-garment lookup. Defaults on when filtering by capability. Bounded, so a very broad search may leave some unverified.
workspacestring––

No output schema declared.

No examples provided.

fit_aspect ~338

Fit an EXISTING design image to a target aspect ratio without generating a new one. mode="pad" letterboxes it onto a background (keeps the whole design, nothing cropped); mode="crop" center-crops (trims the edges to fill the shape). QUOTA-FREE: this reshapes an existing image and does NOT consume an image-generation credit. Use to adapt a square design to a product's print area (e.g. a tall 9:16 for a phone case or poster, a wide 16:9 for a mug or banner). Returns a NEW design (image uuid + url). Note: for an AI-generated EXTENSION of the borders (outpainting) instead of a flat pad/crop, generate a new image with generate_image at the target size — that DOES use the image-generation quota. [#9ca805]

NameTypeReqDescription
aspect–yesTarget aspect ratio as "W:H". Common: 9:16 tall (phone cases, posters), 16:9 wide (mugs, banners), 1:1 square, 4:5 portrait.
backgroundstring–Fill color for the padded bars as #RRGGBB (pad mode only; ignored for crop). Defaults to transparent/white on the platform when omitted.
image_uuidstringyesThe uuid of an existing design to reshape (from generate_image / list_my_designs).
modestringyespad (default): letterbox onto a background, keeping the whole design (nothing lost). crop: center-crop to fill the shape, trimming the edges.
workspacestring––

No output schema declared.

No examples provided.

generate_image ~325

Generate a design image (split primitive of design_apparel). Returns the raw generated image; follow with process_transparency for apparel that needs a transparent background. Rate-limit errors are classified (model_rate_limited = one model's provider vs platform_rate_limited = this key's ApparelHub throttle vs request_not_sent = the call never reached ApparelHub), and fallback_trail shows any model substitutions. [#e8fffe]

NameTypeReqDescription
augment_prompt_for_transparencyboolean–Add the solid-green-background hint so the background can be keyed out (default true).
no_fallbackboolean–Disable the model-fallback ladder. By default a rate-limited/transient model transparently retries with a different model (see fallback_trail); set true to fail on the chosen source alone.
promptstringyes–
sizestring–Output shape. 1024x1024 = square; 1024x1792 = tall/portrait (phone cases, posters, banners); 1792x1024 = wide/landscape (mugs, laptop sleeves, wide banners). Pick to match the product's print area —…
sourcestring–Explicit model name, or omit to auto-pick (Nano Banana; OpenAI for abstract).
stylestring––
workspacestring––

No output schema declared.

No examples provided.

generate_listing_image ~593

Generate listing photography for an existing product — an on-model shot, a detail crop, a flat lay, or the product in a real setting. HOW IT WORKS: this EDITS the product's own rendered mockup. It is not text-to-image, and that is the point — the photo shows the actual colourway and the actual printed design, so it depicts the product a shopper will receive. ⚠️ A PRODUCT WITH NO MOCKUP IS REFUSED, not silently generated from scratch. A from-scratch product photo invents a product that does not exist and publishes it as photography of one that does — a listing-takedown and chargeback risk, not merely a quality problem. On `product_has_no_mockup`, render a mockup preview first (ship_product / create_product do this) and call again. Raw print artwork does not count as a mockup. `guidance` is EXTRA wording folded in on top of the chosen preset — it does NOT replace it, and it cannot override the constraint that keeps the garment, colour and artwork unchanged. Use it for setting or mood ("outdoors at golden hour"), not to restate the product. COST: this spends an image generation from the account's quota, like any other. Four styles across thirty products is 120 generations — more than some plans allow in total. Check the plan before looping over a catalogue. By default the image is generated and RETURNED, not attached: putting a machine-made photo on a live storefront is a separate decision from making one. Pass `attach: true` to append it to the gallery — appended, so existing images are kept, unlike set_product_images which replaces the whole gallery. [#b24313]

NameTypeReqDescription
attachboolean–Append the result to the product's listing gallery (default false). Existing images are kept. Leave false to review the image before it reaches a storefront.
guidancestring–Optional extra direction layered on top of the preset (setting, mood, lighting). Truncated at 500 characters by the platform.
product_uuidstringyesThe product to photograph. Its existing mockup is what gets edited.
set_as_coverboolean–When attaching, also make it the listing cover. Ignored unless `attach` is true.
source_image_urlstring–Which of the product's existing listing images to edit. Must be one of them and must not be raw print artwork. Defaults to the product's best mockup — usually leave unset.
stylestringyesWhich preset to use. `on_model` = worn by a person; `detail` = close crop showing fabric and print texture; `flat_lay` = styled flat, shot from above; `lifestyle` = the product in a real setting. The…
workspacestring–Workspace uuid (agency accounts).

No output schema declared.

No examples provided.

get_account_overview ~52

Account name, your role, whether the agency feature is enabled, and seat accounting (used / included / billable). Agency / Enterprise; needs an account-wide key. Read-only. [#bf5472]

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_api_reference ~170

Discover the full ApparelHub agent API: returns a compact index of every endpoint (path, methods, summary) from the live OpenAPI spec. Use this when no dedicated tool covers what you need, then call it with api_request. Read-only. Also returns `connector`, which reports what THIS server actually serves: its version, and the name of every tool. **If a capability seems missing, check that first.** A tool listed in `connector.tool_names` that you cannot call means your own tool list is stale, not that the tool is unbuilt — say so and tell the user to reconnect, rather than reporting the feature as missing. [#5dc40c]

NameTypeReqDescription
filterstring–Only return endpoints whose path contains this substring (e.g. "orders", "collections").

No output schema declared.

No examples provided.

get_collection ~56

Get a single collection by uuid, including its member products and per-channel sync status. Read-only. [#71cbae]

NameTypeReqDescription
collection_uuidstringyes–
store_uuidstringyes–
workspacestring––

No output schema declared.

No examples provided.

get_garment_details ~133

Full detail for one garment: the variant matrix (colors/sizes/costs), print templates, ApparelHub pricing floor, and quality tier. Read-only. [#16a079]

NameTypeReqDescription
product_ref_idstringyesThe garment ref id from browse_catalog (a string).
providerstringyesThe fulfillment provider to browse, by name (case-insensitive). Must be a provider this account has access to — call list_catalog_providers to see valid values (the set is account-specific). An unrec…
workspacestring––

No output schema declared.

No examples provided.

get_order_details ~59

Full detail for one order: line items, payment + fulfillment status, and shipments/tracking. Read-only. [#c40849]

NameTypeReqDescription
order_uuidstringyesThe order uuid (from list_my_orders).
workspacestring––

No output schema declared.

No examples provided.

get_orders_summary ~76

Aggregated stats for the orders dashboard: counts of orders pending approval / awaiting payment / in fulfillment / shipped today, plus today's revenue and profit, and a per-store breakdown. Read-only. [#88d8a4]

NameTypeReqDescription
workspacestring–Workspace uuid to scope to (agency accounts). Omit for the Default workspace.

No output schema declared.

No examples provided.

get_role_matrix ~49

The workspace roles and the role → capability matrix, so you can pick a role before assigning a member. Agency / Enterprise; needs an account-wide key. Read-only. [#894f5c]

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_store_settings ~109

Read a store's fulfillment workflow + notification settings: fulfillment_mode (auto/confirm/review), approval_authority (human/agent/rules), the margin / high-value / first-time-customer hold guardrails, auto-reconcile, and payment settings. Read-only. [#3b3cd0]

NameTypeReqDescription
store_uuidstringyesThe store uuid (from list_my_stores).
workspacestring–Workspace uuid to scope to (agency accounts). Omit for the Default workspace.

No output schema declared.

No examples provided.

hold_order ~109

Put an order on hold with an optional reason, pausing it before it is submitted to fulfillment. Use when the user wants to stop an order from proceeding (e.g. to double-check the design or address). Release it later with approve_order. [#9a2fd5]

NameTypeReqDescription
order_uuidstringyesThe order uuid to hold.
reasonstring–Why the order is being held (defaults to "Manual hold").
workspacestring–Workspace uuid (agency accounts).

No output schema declared.

No examples provided.

import_size_measurements ~361

Get the blank's real per-size measurements from its fulfillment provider, in the exact shape `size_chart_measurements` takes. READ-ONLY. Use this instead of asking a merchant to type a size chart, and never instead of asking them when it comes back unavailable. It imports nothing by itself — adopting a set of measurements is the merchant's decision. Show them the table, let them correct it, then write it back with set_listing_attributes as `size_chart_measurements`. `available: false` is an ANSWER, not a failure. Branch on `reason`: • `provider_publishes_no_size_guide` — this provider has no size-guide API at all (Printify and Gelato), so no product of theirs will ever import. Permanent: ask the merchant for the blank manufacturer's own numbers. • `no_size_guide_for_this_blank` — the provider does publish guides, just not for this item. Normal for non-apparel. • `provider_lookup_unavailable` — transient. Retry. • `product_has_no_fulfillment_provider` — nothing to import from. ⚠️ TELL THE MERCHANT WHERE THE NUMBERS CAME FROM. `source` names the provider and the catalog item. These are measurements a buyer makes a purchase decision on, published in the merchant's name — present them as the provider's figures for a specific blank, not as something you know. `notes`, when present, lists what was adjusted on the way through (a provider sometimes files a measurement under a size outside its own size list). Pass those on rather than dropping them. [#19618b]

NameTypeReqDescription
product_uuidstringyes–
store_uuidstringyes–
workspacestring––

No output schema declared.

No examples provided.

invite_member ~116

Invite someone to the account by email, optionally pre-assigning a workspace + role (agency / Enterprise). An existing ApparelHub user is auto-added immediately; a new email gets a pending invite. Needs an account-wide key. [#d3c424]

NameTypeReqDescription
account_rolestring–Account role (default member).
emailstringyesEmail to invite.
rolestring–Workspace role (required when workspace_uuid is set).
workspace_uuidstring–Optional: pre-assign to this workspace uuid.

No output schema declared.

No examples provided.

iterate_design ~182

Generate a variation of an existing design via img2img (e.g. "make the cactus blue"). Almost every source supports editing; only Google Imagen 4 is text-to-image-only (rejected). Multi-reference edits (several source images) work on Seedream, Flux 2 Pro, and Wan; slow-model edits return 202 and are polled automatically. [#63592e]

NameTypeReqDescription
change_descriptionstringyes–
no_fallbackboolean–Disable the model-fallback ladder. By default a rate-limited/transient editing model transparently retries with another edit-capable model (see fallback_trail); set true to fail on the chosen source…
preservearray––
sourcestring–Editing source (default Nano Banana).
source_design_uuidstringyes–
workspacestring––

No output schema declared.

No examples provided.

list_account_members ~140

List account members and their per-workspace assignments (agency / Enterprise). Filterable + paginated. Needs an account-wide key. Read-only. [#b3bd65]

NameTypeReqDescription
account_rolestring–Filter by account role.
in_workspacestring–Only members assigned to this workspace uuid.
pageinteger–Page number (default 1).
per_pageinteger–Page size (default 50, max 100).
qstring–Free-text match on email/username.
workspace_rolestring–Members holding this workspace role (combine with in_workspace for "role in that workspace").

No output schema declared.

No examples provided.

list_catalog_providers ~88

List the fulfillment providers this account can browse catalogs from. Use this to discover valid `provider` values for browse_catalog / get_garment_details — the set is account-specific and auth-gated on the platform (a provider only appears if this account is entitled to it), so never assume a fixed list. Read-only. [#f0ed53]

NameTypeReqDescription
workspacestring––

No output schema declared.

No examples provided.

list_collections ~54

List a store's product collections (categories/groups), each with its product count and per-channel sync status. Read-only. [#1d7020]

NameTypeReqDescription
store_uuidstringyes–
workspacestring––

No output schema declared.

No examples provided.

list_connectable_providers ~165

Fulfillment providers and sales channels this account may connect, each marked with how it connects: connect_mode "in_chat" means you can complete it here by asking for a credential, "browser" means you must dispatch an authorization link with start_channel_connect and poll. Also returns where the merchant generates the credential, when there is one. Use this before asking a user for anything, so you ask for the right thing. [#21af2f]

NameTypeReqDescription
workspacestring–Workspace uuid the store lives in (agency accounts) — use the store's workspace.uuid from list_my_stores. Omit only for single-workspace accounts; omitting it on a multi-workspace account targets the…

No output schema declared.

No examples provided.

list_fulfillment_issues ~168

List fulfillment issues. With order_uuid: that order's issues plus its report-window eligibility. Without: the workspace-wide issues inbox, filterable by status ('open_any' = open + filed upstream) and store, with limit/offset paging. Read-only. [#533758]

NameTypeReqDescription
limitinteger–Inbox page size (default 50).
offsetinteger–Inbox page offset.
order_uuidstring–Scope to one order (the inbox filters below apply only without it).
statusstring–Inbox filter; 'open_any' = open + submitted_upstream.
storestring–Inbox filter: a store uuid.
workspacestring–Workspace uuid to scope to (agency accounts). Omit for the Default workspace.

No output schema declared.

No examples provided.

list_invites ~48

List the account’s pending invites, each with the target workspace name and a copyable accept URL (agency / Enterprise). Needs an account-wide key. Read-only. [#0cf62c]

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_my_designs ~321

List the merchant's generated design images (newest first). Read-only. Use these design_uuids with the design/product tools. Pass on_products=false to find orphan designs (designs not used by any live product), the supported way to audit a workspace for unused designs before archiving them. Pass archived=true to list already-archived designs. A design with no full_url carries processing_status: "pending"/"processing" means it is still being made and is worth polling, while "failed" means it gave up and processing_error says why. Branch on processing_error_code rather than matching the message text, and do not retry a design whose failure is a content block — it will fail the same way every time. [#58124e]

NameTypeReqDescription
archivedboolean–true returns archived designs instead of active ones (default false).
limitinteger–Max results (default 20).
on_productsboolean–false returns only designs NOT used by any live product (orphans, safe to archive). true returns only designs in use. Omit for no filter.
searchstring–Match title/prompt where supported.
sortstring–Sort order (default newest).
sourcestring–Filter by AI source name, e.g. "Nano Banana". Comma-separated for several; case-insensitive. An unrecognised name is rejected with the list of valid sources, so a result set that comes back is genuin…
workspacestring–Workspace uuid (agency accounts).

No output schema declared.

No examples provided.

list_my_orders ~70

List the merchant's recent orders across channels. Read-only. [#c5f34c]

NameTypeReqDescription
limitinteger––
sincestring–ISO date lower bound where supported.
statusstring––
store_uuidstring––
workspacestring––

No output schema declared.

No examples provided.

list_my_products ~153

List the merchant's products with their fulfillment and sales-channel sync status. Each channel entry also carries `health` — what the channel last said about the listing. A channel can remove or deactivate a listing at any time, so check `health`, not just `sync_status`: a product can read 'Synced' historically and still be gone. Pass store_uuid to scope to one store; omit for all products. Read-only. [#06afd6]

NameTypeReqDescription
limitinteger––
searchstring––
statusstring––
store_uuidstring–Scope to one store (omit for all products).
sync_statestring––
workspacestring––

No output schema declared.

No examples provided.

list_my_stores ~72

List the merchant's ApparelHub stores, each with its fulfillment providers (Printful/Printify) and connected sales channels (Shopify/WooCommerce/Wix). Read-only. [#739377]

NameTypeReqDescription
workspacestring–Workspace uuid to scope to (agency accounts). Omit for the Default workspace.

No output schema declared.

No examples provided.

list_my_workspaces ~103

List the workspaces this account can act in, each with its uuid. Agency / multi-brand accounts have more than one (e.g. a workspace per client); a single account just has Default. The store / product / order / design tools operate on the Default workspace unless you pass workspace=<uuid>. Use this FIRST to resolve a workspace by name (e.g. a client's name) to the uuid those tools need. Read-only. [#358d40]

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_order_holds ~117

List the design-approval holds on an order (active and released). Set refresh=true to also poll the fulfillment provider for newly-discovered holds. Read-only. Use to see why an order is stuck at the provider and get the hold_uuid for approve_order_hold / request_hold_changes. [#2c7422]

NameTypeReqDescription
order_uuidstringyesThe order uuid to list holds for.
refreshboolean–Also poll the provider for new holds (default false).
workspacestring–Workspace uuid (agency accounts).

No output schema declared.

No examples provided.

list_pending_fulfillments ~86

List orders in a store that have pending fulfillment data needing attention (used by the reconciliation view). Read-only. Use to find orders that stalled before reaching the provider. [#80ba1e]

NameTypeReqDescription
store_uuidstringyesThe store uuid to check.
workspacestring–Workspace uuid to scope to (agency accounts). Omit for the Default workspace.

No output schema declared.

No examples provided.

listing_changes ~375

What has been changed on your listings, and whether it worked. The other half of channel_performance: that says what to fix, this says whether the last fix landed. Every shopper-visible change — title, description, images, price, search terms, variants, availability — is recorded automatically when it is made, along with the signal state that prompted it. Once the channel has finalised enough days either side, a verdict is computed on the ONE metric that change should have moved (a title is judged on click-through, not revenue). ⛔ `unmeasurable` IS THE DEFAULT VERDICT, NOT AN ERROR, and it does not mean the change had no effect. It means the data cannot support a conclusion — most often because the shop is not getting enough views for any single edit to register, in which case the answer is distribution and not more editing. Read `verdict_reason` before saying anything about a change: no_shop_traffic, window_not_final, metric_not_reported, no_baseline. `confounded` means two changes landed close enough together that neither owns the result. Do not attribute it to whichever was most recent. Read-only. Verdicts settle when read, so a window that closed since you last looked is already answered. [#a02f68]

NameTypeReqDescription
daysinteger–How far back to look. Default 90.
kindstring–Limit to one kind of change, e.g. "title" or "price".
productstring–Limit to one product uuid — that listing's change history.
storestring–Limit to one store uuid.
verdictstring–Limit to one verdict, e.g. "improved" or "worsened".
workspacestring–Workspace uuid to scope to.

No output schema declared.

No examples provided.

mark_order_no_payment ~95

Mark an order as having no payment expected (e.g. a free / comp / sample order). Sets its payment status to "no payment". Use when an order should proceed without a recorded payment. [#23c7f4]

NameTypeReqDescription
order_uuidstringyesThe order uuid to mark as no-payment.
workspacestring–Workspace uuid to scope to (agency accounts). Omit for the Default workspace.

No output schema declared.

No examples provided.

move_design_to_workspace ~180

Move a generated design image to another workspace (agency accounts). Fails with a 409 (blocking list) if a product that uses the design is mapped to a store or has orders — copy it instead in that case (check first with check_design_move). Use list_my_workspaces for the destination uuid; pass source_workspace if the design is not in your Default workspace. [#8b8b8a]

NameTypeReqDescription
design_uuidstringyesThe design to transfer.
destination_workspacestringyesDestination workspace uuid to copy/move into. Get it from list_my_workspaces (resolve a client/brand name to its uuid).
source_workspacestring–The workspace the asset currently lives in. Omit only if it is in your Default workspace; otherwise you must pass it (the platform scopes reads to a single workspace).

No output schema declared.

No examples provided.

move_product_to_workspace ~179

Move a product to another workspace (agency accounts) by re-stamping its workspace. Fails with a 409 (blocking list) if the product is mapped to a store or has orders — copy it instead in that case (check first with check_product_move). Use list_my_workspaces for the destination uuid; pass source_workspace if the product is not in your Default workspace. [#f36e77]

NameTypeReqDescription
destination_workspacestringyesDestination workspace uuid to copy/move into. Get it from list_my_workspaces (resolve a client/brand name to its uuid).
product_uuidstringyesThe product to transfer.
source_workspacestring–The workspace the asset currently lives in. Omit only if it is in your Default workspace; otherwise you must pass it (the platform scopes reads to a single workspace).

No output schema declared.

No examples provided.

move_store_to_workspace ~85

Move a store into one of the account's workspaces (agency / Enterprise). This changes who can access the store, so it needs account owner/admin + an account-wide key. [#9dde84]

NameTypeReqDescription
store_uuidstringyesThe store to move (from list_my_stores).
workspace_uuidstringyesDestination workspace uuid (in the same account).

No output schema declared.

No examples provided.

process_transparency ~265

Key a solid background out of a generated image to true RGBA transparency (flood-fill + enclosed-region sweep + tight crop) and upload the result. Runs server-side (Python + Pillow). If the generator produced a tinted/muted green instead of pure #00FF00, it auto-recovers by re-keying in green-dominance mode (safe for art with no bright-green/lime elements). Returns a NEW image_uuid plus keying_mode. [#3cd7e7]

NameTypeReqDescription
background_modestring–How to detect the background. auto (default): box-key a pure-green screen, else auto-recover in dominance mode for a tinted/muted green. box: strict pure-#00FF00 keying (best for colorful designs wit…
forceboolean–Bypass the pure-green safety check and box-key anyway. Use only when you have visually confirmed the palette has no colors near the green background.
image_urlstring–The image URL, if known (else resolved from the uuid).
image_uuidstringyes–
workspacestring––

No output schema declared.

No examples provided.

recommend_garment ~105

Recommend a garment type for a design/use-case, encoding ApparelHub's garment trade-offs (BC 3001 vs Comfort Colors, budget vs premium, pricing floors). Returns a pick + rationale + alternatives. Advisory / knowledge-based. [#66d03b]

NameTypeReqDescription
budget_tierstring––
design_uuidstring–Optional design for context. Design-content-based ranking is a future enhancement; not required today.
target_audiencestring––

No output schema declared.

No examples provided.

reconcile_order ~121

Reconcile a sales-channel order with the channel it came from: pull payment / cancellation FROM the channel and push fulfillment status + tracking TO it. Only sales-channel orders can be reconciled (native orders return reconcilable=false). Use to re-sync an order that drifted (e.g. tracking not relayed to the storefront). [#ac6b88]

NameTypeReqDescription
order_uuidstringyesThe order uuid (from list_my_orders / get_order_details).
workspacestring–Workspace uuid to scope to (agency accounts). Omit for Default.

No output schema declared.

No examples provided.

record_order_payment ~185

Record a manual payment on an order that is awaiting payment (payment_status="pending"). Use payment_method="sales_channel" for an order already paid on its storefront (Shopify/WooCommerce/Wix — the channel is the source of payment), or "stripe" for an order taken through ApparelHub's own card flow. This marks the order paid; it does not charge a card. [#81d42b]

NameTypeReqDescription
amountnumber–Optional amount for the caller's intent; the recorded amount comes from the order total.
order_uuidstringyesThe order uuid (from list_my_orders).
payment_methodstringyese.g. "sales_channel" (paid on the storefront) or "stripe" (ApparelHub card flow).
workspacestring–Workspace uuid to scope to (agency accounts). Omit for the Default workspace.

No output schema declared.

No examples provided.

recover_from_outage ~91

Find products in a failed sync state (fulfillment or channel) and, with dry_run=false + a store_uuid, retry the syncs. DEFAULTS TO DRY-RUN (diagnose only). [#57cf54]

NameTypeReqDescription
dry_runboolean–Default true — diagnose only.
scopestring––
store_uuidstring––
workspacestring––

No output schema declared.

No examples provided.

remove_member ~70

Remove a member from the account entirely (agency / Enterprise): all their workspace assignments are revoked and seat billing synced. The account owner cannot be removed. Needs an account-wide key. [#e5169b]

NameTypeReqDescription
user_public_idstringyesThe member's user public_id (from list_account_members).

No output schema declared.

No examples provided.

remove_order_item ~134

Remove a line item from a DRAFT order (the order must keep at least one item). Same provider semantics as add_order_item: Printful/Gelato edit in place, Printify cancels + re-creates. Only works while the order is a draft. Get the order_item_id from get_order_details (each item carries an id). [#b20b6e]

NameTypeReqDescription
order_item_idintegeryesThe order item id to remove (from get_order_details items[].id).
order_uuidstringyesThe DRAFT order uuid.
workspacestring–Workspace uuid (agency accounts).

No output schema declared.

No examples provided.

remove_product_from_collection ~79

Remove a single product from a collection (the product itself is not deleted). If the collection is synced to a channel, the product is removed there too. [#c2fc5a]

NameTypeReqDescription
collection_uuidstringyes–
product_uuidstringyes–
store_uuidstringyes–
workspacestring––

No output schema declared.

No examples provided.

report_fulfillment_issue ~285

Report a post-sale fulfillment issue (defect) on an order: the item does not match the approved mockup, poor print quality, damaged in transit, wrong/missing item, late or lost. Creates a tracked issue and computes the provider report window (30 days from delivery). Follow up with check_fulfillment_issue for the provider-ready problem report and resolve_fulfillment_issue to file/close it or create a replacement order. [#dc88bc]

NameTypeReqDescription
categorystringyesWhat went wrong (e.g. mockup_mismatch = print does not match the approved mockup).
descriptionstringyesWhat happened, in the words the provider report should carry.
itemsarray–The affected line items. Omit to report the issue against the order as a whole.
order_uuidstringyesThe order the issue is on (from list_my_orders / get_order_details).
resolution_requestedstring–What to ask the provider for (default 'reprint'). Providers typically resolve as a free reprint or a wallet refund.
shipment_refstring–The shipment reference the issue belongs to (multi-shipment orders).
titlestring–Short title (defaults to the category label).
workspacestring–Workspace uuid to scope to (agency accounts). Omit for the Default workspace.

No output schema declared.

No examples provided.

request_hold_changes ~173

Request design changes on a held shipment instead of approving it. change_kind is 'minor' (notes REQUIRED — describe the edit) or 'full_replacement' (re-do the design). If the provider can't action it via API (Printful today), the result is deferred with a dashboard_url. Get the hold_uuid from list_order_holds. [#acd99f]

NameTypeReqDescription
change_kindstringyes'minor' = tweak the current design (notes required); 'full_replacement' = new design.
hold_uuidstringyesThe hold uuid (from list_order_holds).
notesstring–What to change. Required when change_kind='minor'.
order_uuidstringyesThe order uuid the hold belongs to.
workspacestring–Workspace uuid (agency accounts).

No output schema declared.

No examples provided.

resend_invite ~61

Re-send a pending invite’s email with the SAME token and extend its TTL 14 days (agency / Enterprise). Needs an account-wide key. [#4dd71c]

NameTypeReqDescription
invite_uuidstringyesThe pending invite uuid (from list_invites).

No output schema declared.

No examples provided.

resolve_fulfillment_issue ~247

Progress a fulfillment issue. action='submit_upstream' records that the problem report was filed with the provider (optionally with their claim reference) and returns the dashboard link + summary. action='resolve' closes it with a resolution_type (reprint, refund_wallet, refund_customer, replacement_order, other, none). action='create_replacement' builds a one-click zero-charge replacement (reship) draft order from the affected items; if it cannot be built automatically (no recipient on the provider record, an unlinked variant, or a replacement already exists) the error says what to do instead. [#a819f9]

NameTypeReqDescription
actionstringyesWhich lifecycle step to take.
issue_uuidstringyesThe issue uuid (from list_fulfillment_issues).
notesstring–Resolution notes (for action='resolve').
provider_claim_refstring–The provider's claim/case reference (for action='submit_upstream').
resolution_typestring–How the issue was resolved. REQUIRED when action='resolve'.
workspacestring–Workspace uuid to scope to (agency accounts). Omit for the Default workspace.

No output schema declared.

No examples provided.

restore_design ~68

Restore a previously archived design so it appears in the default gallery listing again. List archived designs with list_my_designs(archived=true). [#f0d74b]

NameTypeReqDescription
design_uuidstringyesThe design uuid to restore.
workspacestring–Workspace uuid (agency accounts).

No output schema declared.

No examples provided.

restore_product ~91

Restore a previously archived product (sets it back to active). It is not re-synced to any sales channel automatically — sync it again afterward if you want it live. Use to undo archive_product. [#8d20f7]

NameTypeReqDescription
product_uuidstringyesThe product uuid to restore.
workspacestring–Workspace uuid to scope to (agency accounts). Omit for the Default workspace.

No output schema declared.

No examples provided.

revoke_invite ~57

Revoke a pending invite so its token can no longer be used (agency / Enterprise). Needs an account-wide key. [#8a3ee8]

NameTypeReqDescription
invite_uuidstringyesThe pending invite uuid (from list_invites).

No output schema declared.

No examples provided.

set_channel_settings ~539

Set SHOP-WIDE listing settings for one connected sales channel: product compliance attestations, the shipping template, and a fallback size chart. These apply to every listing on that channel, so they are set once rather than per product. Call describe_listing_attributes with `integration_uuid` (and no `product_uuid`) first to see which settings this channel defines and what each one accepts. ⚠️ BRAND and the per-listing SIZE CHART are NOT here — they are per-product (use set_listing_attributes), because both describe the blank rather than the shop. `default_size_measurements` is the one size-chart setting that is shop-wide, and only as a FALLBACK for listings with no provider measurements of their own. Set it only when the whole catalogue is ONE blank: with a mixed catalogue it would be applied to garments it does not describe. ⛔ SOME OF THESE ARE LEGAL ATTESTATIONS. Product-compliance answers (for example California Proposition 65 questions) are statements the MERCHANT makes about their goods, and they carry legal weight. ⛔ NEVER INVENT A VALUE. Relay what the merchant told you. If you cannot get a value from them, leave it UNSET and say so — an unset field is honest, an invented one is not. Do not infer it from the product type, do not copy it from another shop, and do not pick the nearest allowed value because it looks close. In particular: do not answer "No" because it is usually "No", and do not reason from the product being printed apparel — Proposition 65 covers clothing, and some inks and finishes do contain listed chemicals. Ask the merchant, relay their answer, and if they do not have one, leave it unset and tell them it is outstanding. Answering one of these questions "Yes" can make a follow-up field required — naming the specific chemicals, from a list of hundreds. That follow-up appears in `unset_required` and is never filled in for the merchant. A value the channel refuses comes back in `rejected` with a machine-readable `reason` and the allowed…

NameTypeReqDescription
integration_uuidstringyes–
removearray–Setting keys to clear.
store_uuidstringyes–
valuesobjectyessetting key -> value, exactly as the merchant supplied it. Use an object for a setting whose `value_type` is "object".
workspacestring––

No output schema declared.

No examples provided.

Common questions

What is the ApparelHub MCP server?

ApparelHub is an MCP server listed in the public MCP registry as io.github.ApparelHub-AI/apparelhub-mcp. Run a custom-merch store from an agent: design, build products, list on every channel, fulfill. This page covers its npm package (@apparelhub/mcp-server).

Is the ApparelHub MCP server safe to use?

ApparelHub scores 63 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 29 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the ApparelHub MCP server expose?

ApparelHub exposes 123 tools: check_setup_readiness, list_connectable_providers, connect_fulfillment_provider, connect_sales_channel, start_channel_connect, and 118 more. Their descriptions and schemas cost roughly 22,846 tokens of context every time the server is loaded.

Is the ApparelHub MCP server still maintained?

ApparelHub is still listed as active in the MCP registry. We last reached this channel on 29 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the ApparelHub MCP server under?

ApparelHub declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.