redo_create_ returnCreate a return for specific line items of an existing order.
Pull the returns queue, approve or reject what's waiting, process refunds and exchanges, ingest orders and fulfillments, and watch inbound shipments land at the warehouse.
PopMCPRedo
Every returns, orders, inventory, customer, webhook and coverage call PopMCP exposes, plus the return and shipment events it can watch.
redo_create_ returnCreate a return for specific line items of an existing order.
redo_create_ return_ commentAdd a comment to a return.
redo_get_ returnGet one return by its Redo return id.
redo_get_ return_ statusGet just the current status of a return by its id.
redo_list_ return_ commentsList the internal comments/timeline notes on a return.
redo_list_ return_ tagsList the store's return tags (the labels merchants apply to returns to organize them).
redo_list_ returnsList this store's returns, most-recent-first.
redo_process_ returnBETA — process a return to actually trigger its outcome (issue the refund / store credit / exchange) for the chosen products.
redo_update_ return_ statusSet a return's status.
redo_create_ webhookCreate OR update a webhook subscription (upserts by externalId).
redo_delete_ webhookDelete a webhook subscription by id (path `webhookId`).
redo_list_ inbound_ shipmentsList inbound shipments (returns/transfers heading to a warehouse — in transit or received).
redo_list_ inventory_ itemsList in-stock inventory items (on-hand quantity > 0).
redo_list_ inventory_ levelsList aggregate product quantities by location (the inventory 'level' per product/variant at a location).
redo_list_ webhooksList the store's registered webhooks.
redo_create_ fulfillmentCreate a fulfillment on an order (path `orderId`) with the shipped line items and optional tracking.
redo_create_ orderCreate (ingest) an order in Redo so returns/exchanges can be made against it — typically for stores not on a natively-synced platform.
redo_get_ orderGet one order including all of its fulfillments.
redo_update_ fulfillment_ statusPost a shipment-status / tracking event for a fulfillment (paths `orderId` + `fulfillmentId`).
redo_get_ customerLook up a customer by email (required query param `email`).
redo_update_ customer_ subscriptionsUpdate a customer's email/SMS marketing (and SMS transactional) subscription status.
redo_upsert_ customerCreate or update a customer.
redo_create_ eventRecord a single custom event (a merchant-defined event Redo can use in automations/segmentation).
redo_get_ coverage_ productsCompute the available Redo coverage products (package protection / returns coverage upsell) for a given cart.
redo_list_ invoicesList the store's Redo billing invoices.
redo_delete_ return_ tagDelete a return tag by name (path `name`, case-sensitive, URL-encoded).
redo_import_ returnsImport returns that were created OUTSIDE Redo (e.g.
redo_upsert_ return_ tagCreate, rename, or recolor a return tag.
redo_get_ inbound_ shipmentGet one inbound shipment by id (path `inboundShipmentId`), including its purchase orders, transfer orders, files, and any receiving discrepancies.
redo_get_ inventory_ itemGet one inventory item by its id (path `inventoryItemId`).
redo_get_ inventory_ levelGet one aggregate inventory level by its id (path `inventoryLevelId`).
redo_get_ webhookGet one webhook by id.
redo_replay_ webhookReplay past events to a webhook (path `webhookId`) — e.g.
redo_update_ webhookUpdate a webhook's callback (path `webhookId`).
redo_delete_ orderDelete an order from Redo by id.
redo_get_ customer_ portal_ urlNavigate to the Redo customer self-service portal (where shoppers start returns/exchanges).
redo_bulk_ create_ eventsRecord up to 100 custom events in one call.
redo_create_ storefront_ eventIngest a storefront browsing/checkout event using the Shopify web-pixel event schema (for attribution/analytics).
redo_get_ checkout_ buttons_ uiGet the rendered HTML/CSS for Redo's returns-coverage checkout buttons (the toggle shown at checkout).
redo_get_ coverage_ info_ urlNavigate to the customer-facing coverage info page.
redo_get_ invoice_ csvDownload one invoice's line items as CSV (path `invoiceId`).
redo_get_ pending_ invoice_ csvDownload the CURRENT (not-yet-finalized) invoice's accrued line items as CSV — the running charges since the last invoice.
redo_bulk_ upload_ productsBulk create/update product families and their variants in Redo (so they can be selected as exchange items, etc.).
redo_get_ merchant_ admin_ urlNavigate to the Redo merchant admin for this store.
Credentials off one Redo screen, then an endpoint your client signs into. Nothing to deploy, and nothing to install.
Paste your Store ID and API Secret, both from the same screen: Redo dashboard → Settings → Developer. No OAuth app, client secret or redirect URL. The secret is scoped to one store, so the MCP is locked to that store.
6691603a8460182719ab678e••••••••••••3f7aRead-only limits the agent to reading returns and stock. Full access adds writes — keep approval on so processing a return, which issues the real refund or credit, waits for a person. Full catalog exposes the rest.
Drop the PopMCP URL into Claude, ChatGPT, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Redo credential never leaves the server.
app.popmcp.com/mcp/…Ask for something harmless before you turn writes on. Once it comes back clean, widen the tool set or switch the connection to full access.
List returns from the past week that are still open and what's in each one
redo_list_returnsok
Then just ask for the work
“List returns from the past week that are still open and what's in each one”
“Approve the three flagged returns from yesterday and leave a note on each”
“Create a return for the damaged mug on order 10482 and comment why”
“How much stock came back into the LA warehouse from returns this month”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Settings → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting Redo behind an AI client.
No. The connect form asks for two values, Store ID and API Secret, and both come from the same screen in the Redo dashboard under Settings → Developer. There is no OAuth app, client secret or redirect URL to register. The secret is scoped to a single store, so the connection is locked to that store.
44 operations across 10 API modules, split 23 read and 21 write. 25 load into your AI client by default and the rest stay searchable, so Redo doesn't crowd out the other servers in your tool list. Returns is the largest module with 12 operations, followed by Webhooks, Inventory and Orders.
Yes. process_return triggers the real outcome for the products you pick, and Redo marks that operation BETA. update_return_status only moves a return's status; it doesn't move money. Read-only mode blocks the money-moving call outright, and approval-required-for-writes holds it for a person to confirm first.
Yes. create_order ingests an order into Redo so returns and exchanges can be made against it, which is the usual path for stores Redo doesn't sync natively. import_returns brings across returns that were created outside Redo. Storefront browsing and checkout events go in through create_storefront_event, which expects the Shopify web-pixel event schema.
Both. list_inventory_items covers in-stock items with on-hand quantity above zero, and list_inventory_levels gives the aggregate quantity per product or variant at each location. On the receiving side, list_inbound_shipments covers returns and transfers heading to a warehouse, and get_inbound_shipment adds that shipment's purchase orders, transfer orders, files and any receiving discrepancies.
get_customer looks a customer up by email, and email is a required query parameter, so you need the address on hand. delete_return_tag takes the tag name in the path, case-sensitive and URL-encoded, so VIP and vip are not the same tag. create_webhook upserts by externalId, which means reusing an externalId updates the existing subscription instead of creating a duplicate.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server — Claude Desktop, Claude Web, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Loading 44 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 25-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. You can switch a connection to the full catalog at any time.
A tool is something your AI calls — there are 44 here. A trigger is something PopMCP watches for you: 12 Redo events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Redo.
Launch a hosted MCP endpoint for Redo, keep tool access under control, and start testing real workflow prompts right away.