
Security News
/Company News
Securing the Financial Frontier: How Capital One Uses Socket for Open Source Security
Capital One is partnering with Socket to proactively secure its open source supply chain.
@apparelhub/mcp-server
Advanced tools
ApparelHub MCP server: workflow-level tools that let an AI agent design apparel, build products, and sync them to sales channels through the ApparelHub platform.
Workflow-level MCP tools that let an AI agent run an ApparelHub store end to end: set it up, design apparel, build products, list them across sales channels, and work the orders and listings that come back. Each tool wraps the ApparelHub Agent API and bakes in the platform's hard-won production lessons, so the agent gets correct behavior for free instead of learning the gotchas itself.
There are two ways to run it: a hosted connector you authorize with OAuth (recommended, no API key to handle) and this npm package you run yourself with a key. Both serve the identical tool surface.
Status: early access. The npm package is pre-1.0 while the surface stabilizes. The agent-facing tool surface is v1 and is the contract we keep stable (see
CHANGELOG.mdand Versioning).
A thin wrapper around a REST API just renames HTTP calls. These tools are at the workflow
level: one ship_product call resolves variants, generates and waits for a mockup (through the
waiting until its images are actually published), creates the product with the right field names,
adds every variant,
associates it with a store, and syncs to fulfillment and channels in the correct order, refusing a
negative-margin price and warning on known variant traps along the way. The scar tissue lives in
the code, not in your agent's context.
Prefer the hosted connector. Authorizing it provisions the API key for you, so there is no credential to create, paste, rotate, or leak into a config file. Reach for the self-run package only when your client cannot speak remote MCP or OAuth, or when you specifically want the server running on your own machine.
| Hosted connector (OAuth) | Self-run package (API key) | |
|---|---|---|
| Credential | Provisioned for you on approval | You create and paste an API key |
| Local prerequisites | None | Node.js 20+, Python 3 + Pillow, optionally tesseract |
| Transport | Remote MCP over HTTP | stdio |
| Best for | Any client that supports remote MCP | Clients without remote/OAuth support, local control, development |
https://mcp.apparelhub.ai
Add that URL to any MCP client that supports remote servers, sign in to ApparelHub, and approve. You never handle an API key. Approving the grant provisions a connector key on your account (or reuses the one you already have), and the hosted server resolves your session to it on every call. Nothing to paste, nothing to rotate by hand, nothing sitting in a dotfile.
The hosted server also carries the imaging toolchain the design and quality tools need, so transparency keying, image statistics, and OCR all work with no local dependencies at all: no Node, no Python, no Pillow, no tesseract.
Claude Code
claude mcp add --transport http apparelhub https://mcp.apparelhub.ai
Then run /mcp and choose Authenticate.
Any client that reads an MCP config file
{
"mcpServers": {
"apparelhub": {
"type": "http",
"url": "https://mcp.apparelhub.ai"
}
}
}
claude.ai — add it as a custom connector under Settings → Connectors, paste the same URL, then authorize when prompted.
The bare origin above is the server's canonical address: it is the resource identifier its own
OAuth metadata advertises. A path is not routed on, so an existing config pointing at
https://mcp.apparelhub.ai/mcp keeps working and needs no change.
Standard OAuth 2.1, nothing custom for you to configure. Your client discovers the authorization
server from /.well-known/oauth-protected-resource (RFC 9728), registers itself dynamically, and
runs an authorization-code flow with PKCE (S256) for the mcp scope against
https://api.apparelhub.ai. Refresh tokens and revocation are supported. Access tokens are opaque:
the hosted server exchanges yours for your connector key server-side, so the key is never in your
client, your config, or your chat history.
One connector key is minted per account and shared across every chat surface you grant, and it counts against your plan's API key allowance. The Free plan includes API access with one slot, so if that slot is already taken by a self-service key the consent screen says so and offers to free it or upgrade. To revoke, disconnect from the client that holds the grant, or delete the connector key at https://apparelhub.ai/developer/api-keys.
Requirements:
The server reads your key from the APPARELHUB_API_KEY environment variable at startup and speaks
MCP over stdio. It never accepts the key as a tool argument, and the API host is pinned (no
override).
// ~/.claude/mcp.json (or a project .mcp.json)
{
"mcpServers": {
"apparelhub": {
"command": "npx",
"args": ["-y", "@apparelhub/mcp-server"],
"env": { "APPARELHUB_API_KEY": "your-key-here" }
}
}
}
// .cursor/mcp.json
{
"mcpServers": {
"apparelhub": {
"command": "npx",
"args": ["-y", "@apparelhub/mcp-server"],
"env": { "APPARELHUB_API_KEY": "your-key-here" }
}
}
}
# .aider.conf.yml
mcp-servers:
apparelhub:
command: npx
args: ["-y", "@apparelhub/mcp-server"]
env:
APPARELHUB_API_KEY: your-key-here
Same shape everywhere: run npx -y @apparelhub/mcp-server with APPARELHUB_API_KEY in its
environment.
| Variable | Purpose |
|---|---|
APPARELHUB_API_KEY | Required. Your ApparelHub API key. Not needed on the hosted connector. |
APPARELHUB_MCP_TELEMETRY | Set to off to disable the coarse usage signal (see Privacy). |
APPARELHUB_MCP_PYTHON | Path to the Python 3 interpreter for the local image tools (default python3). |
121 tools. docs/TOOLS.md walks through the core groups; call tools/list from
your agent for the authoritative live schemas.
check_setup_readiness (what the account has, what it needs, the single
next action), list_connectable_providers, connect_fulfillment_provider and
connect_sales_channel (API-token providers connected entirely in chat), plus
start_channel_connect / check_connection_status for the browser-based ones (Printful,
Shopify, TikTok Shop, Fourthwall).list_my_workspaces, list_my_stores, list_my_designs, list_my_products,
list_my_orders, get_order_details.browse_catalog, get_garment_details, find_garments (search every connected
provider at once for a capability), recommend_garment, list_catalog_providers.design_apparel, iterate_design, upload_design (bring artwork the merchant
already owns), fit_aspect (quota-free reshape), design lifecycle (archive_design,
restore_design, delete_design), and split primitives generate_image,
process_transparency, verify_design_text.ship_product, update_product, delete_product, unsync_from_channel,
diagnose_tiktok_listings, and split primitives create_product, add_variants,
sync_to_fulfillment, sync_to_channel.approve_order, unapprove_order, hold_order, cancel_order,
confirm_order, submit_order_to_fulfillment, check_order_status, reconcile_order),
draft edits (add_order_item, remove_order_item), and design-approval holds
(list_order_holds, approve_order_hold, request_hold_changes).report_fulfillment_issue (report a defect on an order),
list_fulfillment_issues (per-order or workspace-wide inbox), check_fulfillment_issue (full
issue plus the provider-ready problem report), resolve_fulfillment_issue (record the provider
filing, close with a resolution, or create a replacement order).channel_performance, channel_opportunities, channel_coverage, listing_changes (did the
last edit actually work), describe_listing_attributes, set_listing_attributes,
set_channel_settings, import_size_measurements.analytics_summary, analytics_timeseries, analytics_breakdown,
analytics_ops, analytics_portfolio.list_collections, get_collection, create_collection, update_collection,
delete_collection, add_products_to_collection, remove_product_from_collection,
sync_collection.copy_product_to_workspace, move_product_to_workspace,
check_product_move, and the design equivalents.create_workspace, update_workspace, delete_workspace, check_workspace_deletion,
assign_workspace_member, unassign_workspace_member, move_store_to_workspace,
get_role_matrix) and team (get_account_overview, list_account_members, remove_member,
invite_member, list_invites, revoke_invite, resend_invite, accept_invite).get_store_settings,
update_store_settings, create_store, archive_store, unarchive_store, activate_store),
order payment/ops (record_order_payment, mark_order_no_payment, set_order_payment_method,
sync_orders, estimate_order_costs, get_orders_summary, list_pending_fulfillments), and
archive_product / restore_product.analyze_what_works, auto_optimize_listings, cascade_price_change,
set_prices_by_margin, recover_from_outage.verify_design_quality, verify_mockup_quality, check_design_compliance.get_api_reference (discover the full agent API from the live OpenAPI
spec) and api_request (call any /agents/v1 endpoint when no dedicated tool fits).Read tools are read-only. Product and design tools default to draft, never live, enforce
pricing floors, and guard known variant traps. Systems-of-action mutations default to a dry run
and only take safe actions (archive, never delete) when applied. Every product/order/store result
carries a view_url back into apparelhub.ai. Errors come back in a consistent shape
({error: {code, message, retry_after?, suggestion?}}) — tools never throw across the MCP boundary.
get_api_reference also reports what the server you are actually talking to serves — its version,
tool count, and every tool name — so an agent can tell "that tool does not exist" apart from "my
cached tool list is stale" instead of guessing.
An optional, coarse usage signal helps improve the tools. It sends only non-identifying
features — the tool name, outcome, latency, error code, and a strict allowlist of coarse fields
(e.g. AI source name, garment category). It never sends prompts, images, ids, URLs, or customer
data. It's buffered and fire-and-forget (it can never affect a tool call). Turn it off entirely
with APPARELHUB_MCP_TELEMETRY=off.
The hosted connector additionally records one operational metric per request (outcome, latency, and for a tool call the tool name). It carries no per-identity dimension and no user data.
ApparelHub ships the agent surface in three forms:
Use the skill for a quick start in Claude Code; use the MCP server when you want typed tools, the higher-order workflows, or a client other than Claude Code; use a recipe when you want the agent to run a whole store pattern rather than answer one request at a time.
npm ci
npm run build # tsc -> dist/
npm run typecheck
npm run lint
npm test # vitest
The image tools shell out to bundled Python scripts in python/; the imaging layer is
injectable, so the tool orchestration is unit-tested with a fake and the scripts are smoke-tested
directly.
The tool surface is versioned separately from the package (this is v1). When the underlying
REST API evolves, the server adapts internally — the agent-facing tool names + shapes stay stable.
That's the contract that lets you install once and keep working. Package releases follow
Semantic Versioning; see docs/RELEASING.md.
On the hosted connector you are always on the current version, which is another reason to prefer
it: new tools appear without you upgrading anything. Clients cache the tool list, so ask
get_api_reference if you suspect yours has fallen behind.
MIT © ApparelHub. See LICENSE.
FAQs
ApparelHub MCP server: workflow-level tools that let an AI agent design apparel, build products, and sync them to sales channels through the ApparelHub platform.
We found that @apparelhub/mcp-server demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
/Company News
Capital One is partnering with Socket to proactively secure its open source supply chain.

Security News
Socket CTO Ahmad Nassri discusses how to keep AI agents from bypassing package blocks, limit credential access, and monitor their actions.

Security News
GPT-6 Astra tried to plant malicious code in simulated open source projects using fake GitHub accounts and deceptive PRs during an assigned CTF challenge.