Skip to main content
Glama
649,985 tools. Updated 2026-10-10 08:24

"WooCommerce" matching MCP tools:

  • Use this when a user wants to find or compare product candidates across participating WooCommerce merchants. Search with q and/or a canonical category leaf; results contain snapshot price and stock, match evidence, provenance, and merchant Bridge handoff links. Do not use this as final price, variant, stock, checkout, or payment authority; verify the selected offer through its handoff.
    ConnectorNo auth
  • THE WAY TO MAKE AN EXISTING APP HIGHLY AVAILABLE. If the user asks for high availability, redundancy, no single point of failure, surviving a host or VM failure, or 'stay up if a machine dies', this is the tool: point it at their running VM and pass high_availability:true. It needs no rebuild and no redeploy, and the URL does not change. Turns a single running instance into a horizontally-autoscaling cluster: snapshots the instance and puts your SOURCE VM behind a load balancer as its ALWAYS-ON BASELINE MEMBER, then an autoscaling group adds EXTRA members (booted from that snapshot) on CPU load and scales them back down to zero. FLAVOR — LEAD WITH A MEMORY-OPTIMIZED SMALL-DISK FLAVOR (m1.mem16/m1.mem32) for the cluster, and ideally have the SOURCE VM on one too: clustering snapshots the source VM's FULL disk, so DISK size (not RAM) drives how long the cluster takes to build and to add each member under load — a 40 GB mem flavor is several times faster to snapshot and scale than a 160 GB standard flavor (m1.xlarge) and costs less for the same RAM. If the source VM is on a big-disk flavor, RECOMMEND migrating the app onto a mem-flavor VM first (a root disk cannot be shrunk in place), even though it is extra work — it pays off on every scale-out, and a clustered app is stateless anyway (state in the managed DB) so the lean disk fits. Expect a DRASTICALLY better clustering experience on a mem flavor: far faster cluster-create, snapshots, and every scale-out. The user can override with any flavor. At rest ONLY your source VM serves — there is NO idle extra VM to pay for (the source VM is the cluster's minimum, so the floor is 0 extra members). Use it to LOAD-SCALE a stateless app tier while managed services hold state: it becomes highly-available UNDER LOAD (multiple members behind the LB), but at rest a SINGLE source VM serves — and that source VM is a plain VM, not an autoscaled member, so it is NOT auto-replaced if it fails while idle (only the autoscaled extra members are ASG-managed and self-healed). If you need always-on redundancy, keep the app under enough load to hold >=1 extra member, or use a separate always-on setup. BILLED — at rest it costs just your source VM (which you already run) plus the load balancer; under load it adds up to max_size EXTRA members at the member flavor (flavor_id), billed only while they run. In guided mode show the cost that way (now: source VM already running + the LB; under load: up to max_size x the member flavor) and get the user's explicit go first. redu automatically repoints the extra members from the old single-VM URL to the load-balancer URL across app config. It REFUSES a STATEFUL VM with 409 cluster_needs_stateless unless confirm_stateless:true. To have redu FIX a stateful VM for you instead of refusing, pass auto_restructure:true — for a single_vm Postgres it fully-automatically provisions a managed DB + migrates the data + repoints the members; for a compose-stack DB it provisions the matching managed DB (set restructure_engine, e.g. 'mysql'/'mariadb' for WordPress) and returns migration commands to run from the app VM. WordPress/WooCommerce is not generic autoscaling: managed DB alone is not enough because wp-content/uploads is file state. Use app_profile:'wordpress'/'woocommerce', cluster_media_mode:'media_space', and either media_space_id or create_media_space:true so all members mount the same uploads filesystem; otherwise the backend refuses with 409 cluster_needs_media_space. PUT THE CLUSTER ON THE SAME private network as the managed DB and media space. HA: cluster members are spread across DIFFERENT physical hosts automatically, and an autoscaled member that is destroyed is REBUILT AUTOMATICALLY in 1.5 to 5 minutes depending on how it failed with no action from you (the always-on source/hero VM is a plain VM and is NOT covered by that). CRITICAL for members: the app must start on EVERY boot (systemd unit or container restart policy) - if it only starts from a first-boot cloud-init script, a rebooted or resized member comes back with no app, silently never rejoins the load balancer, and the cluster quietly loses capacity with nothing reporting an error. Pass startup_command if the app does not already auto-start on boot, and have it bind its port only once it is genuinely ready to serve (the health check can only see whether the port is open). SEQUENCING - this catches people: the snapshot is taken IMMEDIATELY, and every member boots from it, so the source VM's app must already be RUNNING before you call this. Clustering a freshly-created VM whose cloud-init has not finished captures an image with no enabled service, and all members then come up ACTIVE while failing the load-balancer health check forever - a cluster that looks built and serves nothing. Verify the app answers on its port first (get_ssh_command, or just fetch the VM's URL). The snapshot upload can take several minutes; poll list_clusters until CREATE_COMPLETE.
    ConnectorNo auth
  • Deploys a MULTI-CONTAINER app — a repo that ships docker-compose.yml / compose.yaml — onto ONE VM via podman-compose, and exposes one or more services at redu.cloud URLs. Use this instead of deploy_app when the repo is a compose stack. Same prereqs + source modes as deploy_app; always run plan_deploy first. PORT is the HOST port for the exposed service. DB: 'compose' uses the stack's own db container; 'managed' provisions a separate managed Postgres/MySQL/MariaDB VM and appends connection env. For WordPress/WooCommerce cluster intent, do not leave the compose db service/local uploads as state: pass app_profile, cluster_target:true, database:'managed', db_engine:'mariadb' or 'mysql', cluster_media_mode:'media_space', and either media_space_id or create_media_space:true. Redu writes an override file that points the WordPress service at managed DB env and mounts the media space into /var/www/html/wp-content/uploads. Poll get_deployment until ready.
    ConnectorNo auth
  • List verified UCP storefronts across every platform, best-evidenced first. Use when the user wants to browse stores — e.g., "what stores can I shop at?" or "show me Wix stores". To find stores that sell something, prefer search-all. Each store carries what we have actually observed about it, not what it claims: - `transactable` — declares checkout and we have read its catalogue - `catalogued` — we have read its catalogue - `resolvable` — its endpoint resolves, we have not probed it yet - `declared` — a valid manifest, nothing observed beyond it Filter by `platform` (shopify, wix, woocommerce, bigcommerce, shopware…). `category` narrows to the smaller set of deeply audited stores (see list-categories), so leave it out unless the user asks for a category. Developer previews and staging hosts are not listed.
    ConnectorNo auth
  • Set an existing product's listing images: attach an uploaded photo or a generated lifestyle shot, reorder them, and choose the cover. Use this AFTER the product exists — create_product / ship_product pick the initial mockup themselves. ⚠️ THE LIST REPLACES, IT DOES NOT MERGE. What you send becomes the whole gallery, in the order given. To add one image, READ the current list first and send it back with the new entry in it — sending the new entry alone deletes every other image. Pass `images: null` to reset the gallery back to the product's provider mockups. ⚠️ ORDER IS FUNCTIONAL, NOT COSMETIC. Channels cap how many images a listing may carry and TRUNCATE IN GALLERY ORDER, so position decides what actually ships: TikTok Shop takes 9, Wix 15, Shopify and WooCommerce are unlimited. On a capped channel an image in position 10 is not a lower-priority image, it is an absent one. Put the images that must survive first. The platform stores at most 20. Each entry carries provenance. `source` says where the file came from (mockup / upload / ai_mockup / print_file / unknown). `ai_generated` is SEPARATE and tri-state on purpose: an uploaded photo may itself have been AI-generated and the platform cannot detect that, so only you can say. Set it truthfully — true, false, or leave it unset when you genuinely do not know. Do not guess it from `source`. `cover` sets the display image independently of order, so the cover need not be first. A cover that is not in the gallery is added to it. Replace the gallery without naming a cover and the cover follows to the new first image. CONCURRENCY: this reads the product first and passes its version back with the write, so a change someone else made in between is REFUSED rather than silently overwritten. On a conflict the tool re-reads and returns `conflict: true` with the current images — it does NOT retry, because the list you built was based on a gallery that no longer exists. Rebuild from `current_images` and call again. [#1d62ac]
    ConnectorOAuth
  • Diagnose TikTok Shop listing quality and optionally apply TikTok's own recommendations. TikTok grades each listing POOR/FAIR/GOOD and a low grade suppresses reach. Returns, per listing: the current tier, the machine-readable issues behind it (code + how_to_solve + the tier that ONE fix unlocks), and TikTok's recommended search terms / titles / descriptions. READ-ONLY unless you pass `apply`. `apply:['search_terms']` is the safe default action — search terms are hidden listing metadata. Passing 'title' or 'description' replaces merchant-visible copy with machine-generated text, so ask the user first; those land on a TikTok-ONLY override and never rewrite the shared product record (which would also change the Shopify/WooCommerce/Wix listings). Use `dry_run` to preview. IMPORTANT — TikTok often flags a title WITHOUT offering a replacement, so `apply:["title"]` returns no_recommendation. That is not a dead end: each listing also carries `requirements` (the computed target, e.g. 40-150 chars — TikTok's own length rules contradict each other and this is the intersection), `building_blocks` (the product's real garment/colors/sizes, so you write from facts rather than inventing them), and `candidates.title` (ready-to-use options, shortest first, each already validated against the requirements). Offer the candidates to the user, or write your own title to the requirements and set it via update_product tiktok_listing.title. Check `issues[].fixable_by` before acting: `photography` means the listing needs new imagery, not better writing — report it rather than trying to write around it. ⚠️ `diagnosable` means "TikTok returned a diagnosis", NOT "this listing is live". TikTok also answers for deactivated and deleted listings, so a catalog can come back entirely diagnosable:true while a third of it is no longer for sale. Read `listing_health` for liveness: "Removed" is gone, "Needs Attention" is present but not visible to buyers, and null means we have never checked — which is NOT the same as healthy. Do not advise a user to delist something on the strength of diagnosable alone. Tier is a US-market signal. After applying, re-run this tool LATER to see the new tier: TikTok re-grades asynchronously, so the tier does not move the instant an edit lands. [#a912af]
    ConnectorOAuth

Matching MCP Servers

Matching MCP Connectors

  • Discover the channel-defined listing fields you can set — TikTok product attributes, eBay item specifics, WooCommerce product attributes — and what is currently set. READ-ONLY. Call this BEFORE set_listing_attributes or set_channel_settings: the field names and their allowed values are defined by the channel, so guessing them gets the value dropped. Pass `product_uuid` for one listing, or `integration_uuid` alone for the shop-wide settings (compliance answers, the shipping template, and a fallback size chart). BRAND and the per-listing SIZE CHART are per-PRODUCT, not shop-wide — both describe the blank, so a shop selling two blanks needs two values, and a shop-wide size chart would replace the accurate per-garment one on every other listing at once. Ask for them with `product_uuid`. Each field carries `value_type`, `cardinality` (single vs multi), `free_text` (whether a value outside the list is accepted) and `requirement`. Those are separate on purpose: most fields are enumerated AND accept free text, so neither flag alone tells you what is legal. `requirement: "conditional"` means the field only becomes required once `required_when` holds — typically after you answer a related question one particular way. `values` is what is LIVE ON THE CHANNEL, which is not the same as what was last written from here: platform auto-fills and merchant edits made directly in the channel's own admin show up here too. That drift is usually the most useful thing in the response. `unset_required` lists fields that are required and empty. Those are NOT filled in for you, deliberately — several are legal attestations. Left unset, the channel picks its own default or grades the listing down, so they are worth resolving with the merchant. ⚠️ CHECK `resolved_for.resolution` when it is present. `explicit_override` means the merchant chose the category. `keyword_match` means it was GUESSED from the product name, and a wrong guess means these fields belong to a different kind of product entirely — setting attributes against it is worse than setting none. Treat keyword_match as unverified and say so. Big value lists are omitted by default and reported as `allowed_values_count`; pass `include_values` to expand them (one real field carries 647 values). A field whose `value_type` is `object` takes a STRUCTURE, not a string, and publishes its shape in `channel_ref.object_schema`. Build the value from that schema — `size_chart_measurements` is one, and import_size_measurements will fill it for you from the fulfillment provider. A channel with no listing attributes answers `supported: false` with an empty `fields` — a real answer, not an error. [#b71f15]
    ConnectorOAuth
  • Set — or clear — the price ONE sales channel gets for ONE product, instead of the product's ordinary price in that currency. Send price as a decimal string to set it (with an optional compareAtPrice, the old price, higher than price) or price null to remove the override so the channel gets the ordinary price again. Per platform and currency: Prom, Rozetka, eBay, Amazon, Shopify, WooCommerce, OLX or Google Merchant. Send only an amount the person stated. The new price reaches the channel the same way a price edit does — only where the owner armed price writes. This is not the price-list row for a currency (upsert_product_prices). Idempotent; clearing a missing override is not an error. Returns { changed }. Read get_product_pricing first. Echoes the workspace.
    Connector
    Destructive
    No auth
  • Deploys an app to a VM and exposes it at a public https://<name>-<id>.redu.cloud URL. The container is built ON the VM. PREREQS — run check_deploy_prerequisites first for network_id + keypair_name, then plan_deploy for cost approval. Source can be git repo or prepare_upload source_token. PORT must be the real app listen port. To wire a DB, pass database:'managed' (dedicated managed datastore VM on the same private network, reused on same-name redeploy) or database:'single_vm' for Postgres on the app VM. Choose db_engine ('postgres' default; 'mysql'/'mariadb' for WordPress/Matomo/LAMP, managed only). For WordPress/WooCommerce cluster intent, do not use generic stateless deploy: pass app_profile, cluster_target:true, database:'managed', db_engine:'mariadb' or 'mysql', cluster_media_mode:'media_space', and either media_space_id or create_media_space:true. Redu mounts the media space into wp-content/uploads and refuses unsafe local uploads. Build+provision takes minutes; poll list_deployments/get_deployment.
    ConnectorNo auth
  • Use ONLY for a general storefront audit, readiness score, or fix recommendations. Do NOT use it to inspect a specific update or release; use preflight_woo_store for that. Check whether a public WooCommerce storefront is readable by shopping agents. Provide the store's HTTPS origin. The tool reads only public pages and the public WooCommerce Store API, changes nothing, and returns aggregate checks and recommendations without product text or customer data. When the storefront cannot be read at all, the tool abstains: state is UNREADABLE, score and grade are null, and the caller must not present that as a finding about the store.
    ConnectorNo auth
  • Answers: is anything wrong with this connected WooCommerce store's checkout and payment path right now, and is a full diagnosis worth running? Free, always. Returns order counts by status with the change across the window, gateway/webhook/scheduler health, checkout page health, how many recent commerce changes there were, which signal families this store can and cannot report, and how fresh the underlying data is. Call this FIRST — it is cheap, and `diagnosis_recommended` tells you whether the expensive call would have anything to work with. It returns no customer, order, or payment identifier because the store never sends any.
    ConnectorNo auth
  • Answers: is anything wrong with this connected WooCommerce store's checkout and payment path right now, and is a full diagnosis worth running? Free, always. Returns order counts by status with the change across the window, gateway/webhook/scheduler health, checkout page health, how many recent commerce changes there were, which signal families this store can and cannot report, and how fresh the underlying data is. Call this FIRST — it is cheap, and `diagnosis_recommended` tells you whether the expensive call would have anything to work with. It returns no customer, order, or payment identifier because the store never sends any.
    ConnectorNo auth
  • Use ONLY before a specific WooCommerce update or release when you need protocol-family evidence. Do NOT use it for a general score or fix list; use scan_woo_store_readiness for that. Inspect selected public WooCommerce and agent-protocol surfaces and return per-family PASS, FAIL, BLOCKED or UNMEASURED evidence. It changes nothing, is free, and BLOCKED or UNMEASURED is an abstention rather than a finding about the store.
    ConnectorNo auth
  • Store/replace a brand's COMPLETE brand guideline on XeoRank WITHOUT touching any live site — works for ANY brand/platform (WordPress, Shopify, Wix, code, static, or not-yet-connected). This is the 'populate the XeoRank end' path — capture the design system even when you can't style the live site. Author the FULL guideline, not a thin kit — every section below is stored verbatim and rendered in the Brand Kit tab + the downloadable HTML guidelines doc: meta{name,tagline,description,version}; colors (primary/secondary/accent/text/bg/border + hover/active/subtle states + success/warning/error/info + any ramp e.g. brand-900..50) with colorMeta {name:{purpose}} for roles; fonts[] (per-slot family/weight/lineHeight/letterSpacing/transform); typography{heading,body,scale(H1–H6+body+small with sizeTablet/sizeMobile/lineHeight/letterSpacing),links{color,hover,visited,focus}}; buttons{radius,padding,typography,variants[]}; images{radius,opacity,shadow,hover}; iconography{grid,style,stroke,sizes,palette[]}; forms{...}; header{...}; footer{...}; identity{siteName,tagline,logo,favicon}; background{color}; layout{containerWidth,contentWidth,boxedWidth,widgetSpacing,sectionSpacing,breakpoints}; lightbox; transitions; woocommerce; accessibility{contrast[]}. To ALSO apply the Elementor-writable subset as the global theme on a connected WordPress site, use wp_set_brand_kit. site_id is the BRAND id from list_sites (NOT a WordPress site id).
    ConnectorOAuth
  • Lists Redu media spaces: private NFS media VMs backed by persistent volumes. For WordPress/WooCommerce clusters, reuse one on the app's private network for wp-content/uploads, or pass create_media_space:true to deploy_app/deploy_compose/upgrade_to_cluster so Redu creates one.
    ConnectorNo auth
  • For a given product, recommend the top complementary, frequently-bought-together products customers also bought, based on mined order-history association rules. This is the single-product cross-sell tool. Use this when the user asks 'what goes with X?', 'what should I bundle with X?', 'what do customers also buy with X?', 'recommend products to cross-sell with X', or similar single-product co-purchase questions. Works for Shopify, Magento, and WooCommerce merchants.
    ConnectorNo auth
  • UCP Catalog search across independent WooCommerce merchants in KaliCart Global. catalog.query is free text; catalog.filters.categories accepts KaliCart canonical category values as returned in products[].categories (taxonomy "kalicart", e.g. "home.bedroom.pillows"); filters.price is in ISO 4217 minor units of catalog.context.currency (default EUR). Results are indexed snapshots with the seller on every variant; verify the chosen product with get_product before quoting price or stock.
    ConnectorNo auth
  • Searches one Shopify or WooCommerce store for products matching a keyword, through the store's own public search, and returns the matches in the same compact shape as list_products. Up to 10 results on Shopify (its search limit), up to 20 on WooCommerce. Costs 1 credit.
    ConnectorNo auth
  • Use this to inspect which WooCommerce merchants currently participate in the searchable KaliCart Global catalog and how much catalog coverage each contributes. It returns stable merchant identifiers, domains, storefront URLs, product counts, and sync time. Do not use it to find products; use global_search instead.
    ConnectorNo auth
  • Возвращает заказ кабинета и ссылки по cabinet_order_id из list_orders. Номер WooCommerce из письма сюда не подходит: для него используйте get_orders_by_woo_id.
    ConnectorNo auth