loop_returns_ get_ draft_ returnRetrieves a draft return as a draft return.
Find any return, see why shoppers send things back, process refunds and exchanges, flag the suspicious ones, and keep your allow and block lists current.
PopMCPLoop Returns
Every return, draft return, label, grading, webhook and commerce data call Loop publishes, plus the return and label events PopMCP can watch.
154 tools in the full catalog: 56 read and 98 write. 36 load by default, and the rest are found with tool search.
loop_returns_ get_ draft_ returnRetrieves a draft return as a draft return.
loop_returns_ initialize_ draft_ returnInitialize a new draft return and receive a response.
loop_returns_ cancel_ returnCancel a return in Loop.
loop_returns_ check_ order_ return_ eligibilityReport per-line-item return eligibility for an order, by its order name, without starting a return.
loop_returns_ close_ returnClose a return.
loop_returns_ create_ fraud_ reportAttach a fraud report to a return.
loop_returns_ create_ return_ deep_ linkCreate a deep link URL.
loop_returns_ create_ return_ notePost a new note to a return.
loop_returns_ create_ return_ qr_ codeGenerate a link to a QR code image file that, when scanned, will take the user directly to their order in Loop so they can initiate a return without requiring them to enter their order information.
loop_returns_ find_ returnsFind returns by shopper email, order name, SKU, return reason or outcome.
loop_returns_ flag_ returnFlag a return in Loop for review.
loop_returns_ get_ returnGet the details of a specific return based on a return's ID, an order name, or an order ID from the commerce provider (e.g. Shopify) depending on the query value of the call.
loop_returns_ list_ advanced_ shipping_ noticesThis endpoint will pull all packages by tracking statuses/timeframe.
loop_returns_ list_ return_ notesGet notes on a specific return using the return's ID.
loop_returns_ list_ returnsPull a detailed list of returns created within a given timeframe.
loop_returns_ process_ returnProcess a return in Loop based on the return ID.
loop_returns_ remove_ return_ line_ itemsRemove one or more line items from an open return.
loop_returns_ return_ overviewSee one return in full: state, outcome, order, shopper, totals, each item with its reason and condition, exchanges, tracking and label, and the notes on it.
loop_returns_ returns_ summaryReport on returns for a date range: how many, by state, outcome and reason, the most returned SKUs, and refund, gift card, exchange and return totals per currency.
loop_returns_ generate_ return_ labelQueue label generation for a return.
loop_returns_ list_ label_ requestsRetrieve a list of label requests.
loop_returns_ regenerate_ return_ labelQueue a new Loop label for a return that already has one, for example when the original label expired before the shopper dropped off the package.
loop_returns_ create_ allowlist_ itemCreate an allowlist entry.
loop_returns_ create_ blocklist_ itemCreate a blocklist entry.
loop_returns_ delete_ allowlist_ itemDelete an allowlist entry.
loop_returns_ delete_ blocklist_ itemDelete a blocklist entry.
loop_returns_ list_ allowlist_ itemsRetrieve a list of paginated allowlist entries.
loop_returns_ list_ blocklist_ itemsRetrieve a list of paginated blocklist entries.
loop_returns_ create_ webhookCreate a new webhook subscription.
loop_returns_ delete_ webhookDelete a webhook subscription.
loop_returns_ list_ destinationsRetrieve all destinations.
loop_returns_ list_ webhooksGet all webhook subscriptions.
loop_returns_ list_ happy_ returns_ shipmentsGet information about all Happy Returns shipments created within a given timeframe.
loop_returns_ assess_ return_ item_ dispositionsAssess return line item dispositions.
loop_returns_ grade_ return_ itemsGrade the condition of return line items.
loop_returns_ get_ api_ key_ infoShow which Loop shop this API key belongs to and which scopes it has.
loop_returns_ accept_ draft_ return_ policyRecords the customer's acceptance of the return policy.
loop_returns_ add_ draft_ return_ cart_ itemAdds an item to the draft return's cart.
loop_returns_ add_ draft_ return_ exchange_ itemAdds an exchange item for a specific returning item to the cart.
loop_returns_ add_ draft_ return_ itemAdds a specific item to the draft return's ReturningItems.
loop_returns_ cancel_ draft_ returnCancel a draft return.
loop_returns_ create_ draft_ return_ in_ one_ callCreate a draft return with everything set in one request, instead of the step-by-step initialize_draft_return flow.
loop_returns_ create_ draft_ return_ payment_ intentCreates a payment intent for the draft return.
loop_returns_ finalize_ draft_ return_ itemsFinalizes the returning items and cart items of the draft return.
loop_returns_ get_ draft_ return_ totalsReturns the computed monetary totals for the draft return.
loop_returns_ list_ draft_ return_ order_ itemsReturns the order's line items in the context of the draft return, including return and warranty eligibility, available return reasons, variant details, and advanced-exchange options.
loop_returns_ list_ draft_ returnsReturns a collection describing the draft-return actions available for the shop.
loop_returns_ remove_ draft_ return_ cart_ itemRemoves a specific item from the draft return's cart.
loop_returns_ remove_ draft_ return_ itemRemoves a specific item from the draft return's ReturningItems.
loop_returns_ remove_ draft_ return_ payment_ intentRemoves a payment intent from the draft return.
loop_returns_ select_ draft_ return_ carrier_ methodSelects the carrier label format for a previously selected return method.
loop_returns_ select_ draft_ return_ methodSelects a return method for the draft return.
loop_returns_ set_ draft_ return_ addressSets the return shipping address for the draft return.
loop_returns_ set_ draft_ return_ cartSets the entire cart for the draft return in a single request.
loop_returns_ set_ draft_ return_ credit_ typeSets the credit type for the draft return.
loop_returns_ set_ draft_ return_ customerSets the customer information for the draft return.
loop_returns_ set_ draft_ return_ item_ reasonSets the return reason for a specific returning item.
loop_returns_ set_ draft_ return_ item_ typeSets the return type for a specific returning item.
loop_returns_ set_ draft_ return_ item_ user_ inputAdds user input for a specific returning item.
loop_returns_ set_ draft_ return_ languageSets the display language for the draft return.
loop_returns_ set_ draft_ return_ processing_ typeSets the processing type (regular or instant) of the draft return.
loop_returns_ submit_ draft_ returnSubmits the draft return.
loop_returns_ unfinalize_ draft_ return_ itemsReopens the returning items and cart items of the draft return for modification.
loop_returns_ unset_ draft_ return_ credit_ typeRemoves the credit type selection from the draft return.
loop_returns_ upload_ draft_ return_ item_ imageUpload an image answer for a returning item's photo question on a draft return.
loop_returns_ retract_ fraud_ reportRetract the fraud report on a return, the one added with create_fraud_report.
loop_returns_ create_ productCreate a new product.
loop_returns_ create_ product_ variantCreate a new product variant.
loop_returns_ delete_ productDelete a product.
loop_returns_ delete_ product_ by_ external_ idDelete a product by its commerce external_id.
loop_returns_ delete_ product_ variantDelete a product variant.
loop_returns_ delete_ product_ variant_ by_ external_ idDelete a product variant by the parent product's commerce external_id and the variant's commerce external_id.
loop_returns_ get_ productGet the details about a single product.
loop_returns_ get_ product_ by_ external_ idGet the details about a single product by its commerce external_id.
loop_returns_ get_ product_ variantGet the details about a single product variant.
loop_returns_ get_ product_ variant_ by_ external_ idGet the details about a single product variant by the parent product's commerce external_id and the variant's commerce external_id.
loop_returns_ list_ product_ variantsRetrieve a list of product variants.
loop_returns_ list_ productsRetrieve a list of products.
loop_returns_ update_ productUpdate a product.
loop_returns_ update_ product_ variantUpdate a product variant.
loop_returns_ upsert_ productUpsert a product, identified using the product's external_id.
loop_returns_ upsert_ product_ variantUpsert a product variant, identified using the product's external_id.
loop_returns_ upsert_ product_ variant_ by_ product_ external_ idUpsert a product variant under a parent product identified by its commerce external_id.
loop_returns_ add_ product_ to_ collectionAttach a product to a collection.
loop_returns_ add_ product_ to_ collection_ by_ external_ idsAttach a product to a collection by commerce external_id.
loop_returns_ create_ collectionCreate a new collection.
loop_returns_ delete_ collectionDelete a collection.
loop_returns_ delete_ collection_ by_ external_ idDelete a collection by its commerce external_id.
loop_returns_ get_ collectionGet details about a single collection.
loop_returns_ get_ collection_ by_ external_ idGet details about a single collection by its commerce external_id.
loop_returns_ list_ collectionsRetrieve a list of collections.
loop_returns_ remove_ product_ from_ collectionDelete a product from a collection.
loop_returns_ remove_ product_ from_ collection_ by_ external_ idsDelete a product from a collection by commerce external_id.
loop_returns_ update_ collectionUpdate a collection.
loop_returns_ upsert_ collectionUpsert a collection, identified using the collection's name and external_id.
loop_returns_ create_ labelCreate a label for a label request.
loop_returns_ create_ ship_ by_ loop_ orderCreate a Ship by Loop order for a shipment.
loop_returns_ get_ label_ requestGet details about a single label request.
loop_returns_ get_ ship_ by_ loop_ servicesGet the Ship by Loop services available for a shipment.
loop_returns_ report_ label_ request_ errorReport a label generation failure against a label request.
loop_returns_ update_ label_ statusPush a status update for a label.
loop_returns_ create_ customerCreate a new customer.
loop_returns_ create_ inventoryUpsert inventory details for a product variant by location.
loop_returns_ create_ locationCreate a new location.
loop_returns_ create_ orderCreate a new order.
loop_returns_ delete_ customerDelete a customer.
loop_returns_ delete_ customer_ by_ external_ idDelete a customer by its commerce external_id.
loop_returns_ delete_ inventoryDelete an inventory.
loop_returns_ delete_ inventory_ by_ external_ idsDelete an inventory record identified by the product variant's external_id and the location's external_id.
loop_returns_ delete_ locationDelete a location.
loop_returns_ delete_ location_ by_ external_ idDelete a location by its commerce external_id.
loop_returns_ delete_ orderDelete a specific order.
loop_returns_ delete_ order_ by_ external_ idDelete a specific order by its commerce external_id.
loop_returns_ get_ allowlist_ itemRetrieve an allowlist entry.
loop_returns_ get_ blocklist_ itemRetrieve a blocklist entry.
loop_returns_ get_ customerGet details about a single customer.
loop_returns_ get_ customer_ by_ external_ idGet details about a single customer by its commerce external_id.
loop_returns_ get_ inventoryGet inventory details for a product variant by location.
loop_returns_ get_ inventory_ by_ external_ idsGet inventory details for a product variant at a location, identified by the variant's external_id and the location's external_id.
loop_returns_ get_ locationGet the details about a single location.
loop_returns_ get_ location_ by_ external_ idGet the details about a single location by its commerce external_id.
loop_returns_ get_ orderGet details about a specific order.
loop_returns_ get_ order_ by_ external_ idGet details about a specific order by its commerce external_id.
loop_returns_ list_ customersRetrieve a list of customers.
loop_returns_ list_ inventoriesRetrieve a list of inventories.
loop_returns_ list_ locationsRetrieve a list of locations.
loop_returns_ list_ ordersList all orders.
loop_returns_ update_ customerUpdate a customer.
loop_returns_ update_ locationUpdate a location.
loop_returns_ update_ orderUpdate a specific order.
loop_returns_ upsert_ customerUpsert a customer, identified using the customer's external_id.
loop_returns_ upsert_ inventoryUpsert inventory details for a product variant by location.
loop_returns_ upsert_ inventory_ by_ external_ idsUpsert inventory details for a product variant at a location, identified by the variant's external_id and the location's external_id.
loop_returns_ upsert_ locationUpsert a location, identified using the location's external_id.
loop_returns_ upsert_ orderUpsert an order using the external_id.
loop_returns_ create_ destinationCreate a destination.
loop_returns_ delete_ destinationDelete a destination.
loop_returns_ get_ destinationGet details for a single destination.
loop_returns_ get_ webhook_ samplesGet example payloads for each webhook topic, to build and test a handler without waiting for a real event.
loop_returns_ update_ destinationUpdate a destination.
loop_returns_ update_ webhookUpdate a webhook subscriptions.
loop_returns_ create_ bulk_ operationCreate a new bulk operation.
loop_returns_ create_ cartCreate a cart object and populate it with one or more product variants.
loop_returns_ delete_ cartDelete a Shop Now cart by its token.
loop_returns_ get_ bulk_ operationGet the details about a specific bulk operation.
loop_returns_ get_ cartGet a Shop Now cart by its token.
loop_returns_ list_ bulk_ operation_ jobsRetrieve a list of bulk operation jobs.
loop_returns_ list_ bulk_ operationsRetrieve a list of bulk operations.
loop_returns_ update_ cartReplace the product variants in a Shop Now cart.
loop_returns_ analyze_ checkout_ plus_ cartPrice Checkout+ order protection for a cart and open or reuse an offer session.
loop_returns_ get_ checkout_ plus_ sessionRead a Checkout+ offer session without re-analyzing the cart.
loop_returns_ get_ happy_ returns_ shipmentGet high level information from a Happy Returns shipment.
loop_returns_ get_ order_ protection_ configRead the shop's Checkout+ order protection settings.
loop_returns_ list_ happy_ returns_ shipment_ itemsGet all items for a Happy Returns shipment.
Credentials off one Loop Returns screen, then an endpoint your client signs into. Nothing to deploy, and nothing to install.
Paste one API key from Loop admin: Returns management, then Tools & integrations, then Developer tools, then Generate API key. Tick the scopes you want the AI to use. The key belongs to one shop, so there is nothing else to choose.
••••••••••••3f7aProcessing a return issues the real refund, gift card or exchange the moment the AI calls it. The scopes on your Loop key set the outer limit, and a read-only connection in PopMCP hides every tool that changes anything.
Drop the PopMCP URL into Claude, ChatGPT, Claude Code, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Loop Returns credential never leaves the server.
app.popmcp.com/mcpAsk for something harmless before the agent changes anything. Writes run as soon as it calls them, so confirm it reads the right account first.
Why did shoppers send things back last month, and which products came back most
loop_returns_list_returnsok
Then just ask for the work
“Why did shoppers send things back last month, and which products came back most”
“Look up the return on order 1042, add a note that the box arrived damaged, and flag it for review”
“Process the open return on order 2210, then check that it closed”
“Block this email from future returns and report their latest return as fraud”
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 Customize → 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 Loop Returns behind an AI client.
One API key. In Loop admin, open Returns management, then Tools & integrations, then Developer tools, and choose Generate API key. Tick the scopes you want the AI to use and paste the key into PopMCP. There is no app to register and no redirect URL. Loop's help center says the Developers page may not be available on every plan, so ask your Loop contact if you do not see it.
151 operations across 18 API modules, split 53 read and 98 write. 33 load into your AI client by default, along with three tools that do multi-step jobs: a full view of one return, a search by shopper, order or SKU, and a report on reasons and refunds. The rest stay searchable, so Loop doesn't crowd out your other servers.
Yes. process_return fulfills the outcomes on a return, which means refunds, gift cards and exchange orders. Loop queues that work, so a successful answer means it was accepted, and the agent can confirm the result by reading the return until it is closed. close_return ends a return without fulfilling anything, and cancel_return frees the items for a new return. Use a read-only connection to block all of these.
Loop answers 401 Unauthorized both for a wrong key and for a good key missing the scope that tool needs. get_api_key_info lists the scopes on your key, and PopMCP names the scope a tool needs when it is refused. You can add scopes to the same key in Developer tools without making a new one.
Loop's own server signs in through OAuth, works only from the clients Loop lists, and has a focused set of tools for returns, lists, workflows and fraud. This one uses your API key and covers Loop's public REST API, including draft returns, labels, grading, destinations, webhooks, Commerce Data and Checkout+, alongside your other PopMCP servers on one URL.
Yes, through Loop's Return Create API, if it is included for your shop. initialize_draft_return starts from the order name and a secondary detail such as the zip code, and each answer names the steps that are allowed next. submit_draft_return creates the real return. Commerce Data and Checkout+ are also turned on by Loop for each shop, so those tools answer only once that has happened.
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, Claude Code, 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.
Connect Loop Returns in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking Loop Returns on the consent screen. The Loop Returns tools are then available in that session, and no Loop Returns credential is stored on your machine.
Loading 154 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 36-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.
A tool is something your AI calls, and there are 154 here. A trigger is something PopMCP watches for you: 16 Loop Returns 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 Loop Returns.
Launch a hosted MCP endpoint for Loop Returns, keep tool access under control, and start testing real workflow prompts right away.