100+ integrations are ready to connect to your AI.Connect your first MCP

Loop Returns MCP server for your AI

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

Why did shoppers send things back last month, and which products came back most

Supported Loop Returns tools

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_return

Retrieves a draft return as a draft return.

loop_returns_initialize_draft_return

Initialize a new draft return and receive a response.

loop_returns_cancel_return

Cancel a return in Loop.

loop_returns_check_order_return_eligibility

Report per-line-item return eligibility for an order, by its order name, without starting a return.

loop_returns_close_return

Close a return.

loop_returns_create_fraud_report

Attach a fraud report to a return.

loop_returns_create_return_deep_link

Create a deep link URL.

loop_returns_create_return_note

Post a new note to a return.

loop_returns_create_return_qr_code

Generate 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_returns

Find returns by shopper email, order name, SKU, return reason or outcome.

loop_returns_flag_return

Flag a return in Loop for review.

loop_returns_get_return

Get 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_notices

This endpoint will pull all packages by tracking statuses/timeframe.

loop_returns_list_return_notes

Get notes on a specific return using the return's ID.

loop_returns_list_returns

Pull a detailed list of returns created within a given timeframe.

loop_returns_process_return

Process a return in Loop based on the return ID.

loop_returns_remove_return_line_items

Remove one or more line items from an open return.

loop_returns_return_overview

See 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_summary

Report 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_label

Queue label generation for a return.

loop_returns_list_label_requests

Retrieve a list of label requests.

loop_returns_regenerate_return_label

Queue 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_item

Create an allowlist entry.

loop_returns_create_blocklist_item

Create a blocklist entry.

loop_returns_delete_allowlist_item

Delete an allowlist entry.

loop_returns_delete_blocklist_item

Delete a blocklist entry.

loop_returns_list_allowlist_items

Retrieve a list of paginated allowlist entries.

loop_returns_list_blocklist_items

Retrieve a list of paginated blocklist entries.

loop_returns_create_webhook

Create a new webhook subscription.

loop_returns_delete_webhook

Delete a webhook subscription.

loop_returns_list_destinations

Retrieve all destinations.

loop_returns_list_webhooks

Get all webhook subscriptions.

loop_returns_list_happy_returns_shipments

Get information about all Happy Returns shipments created within a given timeframe.

loop_returns_assess_return_item_dispositions

Assess return line item dispositions.

loop_returns_grade_return_items

Grade the condition of return line items.

loop_returns_get_api_key_info

Show which Loop shop this API key belongs to and which scopes it has.

loop_returns_accept_draft_return_policy

Records the customer's acceptance of the return policy.

loop_returns_add_draft_return_cart_item

Adds an item to the draft return's cart.

loop_returns_add_draft_return_exchange_item

Adds an exchange item for a specific returning item to the cart.

loop_returns_add_draft_return_item

Adds a specific item to the draft return's ReturningItems.

loop_returns_cancel_draft_return

Cancel a draft return.

loop_returns_create_draft_return_in_one_call

Create 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_intent

Creates a payment intent for the draft return.

loop_returns_finalize_draft_return_items

Finalizes the returning items and cart items of the draft return.

loop_returns_get_draft_return_totals

Returns the computed monetary totals for the draft return.

loop_returns_list_draft_return_order_items

Returns 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_returns

Returns a collection describing the draft-return actions available for the shop.

loop_returns_remove_draft_return_cart_item

Removes a specific item from the draft return's cart.

loop_returns_remove_draft_return_item

Removes a specific item from the draft return's ReturningItems.

loop_returns_remove_draft_return_payment_intent

Removes a payment intent from the draft return.

loop_returns_select_draft_return_carrier_method

Selects the carrier label format for a previously selected return method.

loop_returns_select_draft_return_method

Selects a return method for the draft return.

loop_returns_set_draft_return_address

Sets the return shipping address for the draft return.

loop_returns_set_draft_return_cart

Sets the entire cart for the draft return in a single request.

loop_returns_set_draft_return_credit_type

Sets the credit type for the draft return.

loop_returns_set_draft_return_customer

Sets the customer information for the draft return.

loop_returns_set_draft_return_item_reason

Sets the return reason for a specific returning item.

loop_returns_set_draft_return_item_type

Sets the return type for a specific returning item.

loop_returns_set_draft_return_item_user_input

Adds user input for a specific returning item.

loop_returns_set_draft_return_language

Sets the display language for the draft return.

loop_returns_set_draft_return_processing_type

Sets the processing type (regular or instant) of the draft return.

loop_returns_submit_draft_return

Submits the draft return.

loop_returns_unfinalize_draft_return_items

Reopens the returning items and cart items of the draft return for modification.

loop_returns_unset_draft_return_credit_type

Removes the credit type selection from the draft return.

loop_returns_upload_draft_return_item_image

Upload an image answer for a returning item's photo question on a draft return.

loop_returns_retract_fraud_report

Retract the fraud report on a return, the one added with create_fraud_report.

loop_returns_create_product

Create a new product.

loop_returns_create_product_variant

Create a new product variant.

loop_returns_delete_product

Delete a product.

loop_returns_delete_product_by_external_id

Delete a product by its commerce external_id.

loop_returns_delete_product_variant

Delete a product variant.

loop_returns_delete_product_variant_by_external_id

Delete a product variant by the parent product's commerce external_id and the variant's commerce external_id.

loop_returns_get_product

Get the details about a single product.

loop_returns_get_product_by_external_id

Get the details about a single product by its commerce external_id.

loop_returns_get_product_variant

Get the details about a single product variant.

loop_returns_get_product_variant_by_external_id

Get 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_variants

Retrieve a list of product variants.

loop_returns_list_products

Retrieve a list of products.

loop_returns_update_product

Update a product.

loop_returns_update_product_variant

Update a product variant.

loop_returns_upsert_product

Upsert a product, identified using the product's external_id.

loop_returns_upsert_product_variant

Upsert a product variant, identified using the product's external_id.

loop_returns_upsert_product_variant_by_product_external_id

Upsert a product variant under a parent product identified by its commerce external_id.

loop_returns_add_product_to_collection

Attach a product to a collection.

loop_returns_add_product_to_collection_by_external_ids

Attach a product to a collection by commerce external_id.

loop_returns_create_collection

Create a new collection.

loop_returns_delete_collection

Delete a collection.

loop_returns_delete_collection_by_external_id

Delete a collection by its commerce external_id.

loop_returns_get_collection

Get details about a single collection.

loop_returns_get_collection_by_external_id

Get details about a single collection by its commerce external_id.

loop_returns_list_collections

Retrieve a list of collections.

loop_returns_remove_product_from_collection

Delete a product from a collection.

loop_returns_remove_product_from_collection_by_external_ids

Delete a product from a collection by commerce external_id.

loop_returns_update_collection

Update a collection.

loop_returns_upsert_collection

Upsert a collection, identified using the collection's name and external_id.

loop_returns_create_label

Create a label for a label request.

loop_returns_create_ship_by_loop_order

Create a Ship by Loop order for a shipment.

loop_returns_get_label_request

Get details about a single label request.

loop_returns_get_ship_by_loop_services

Get the Ship by Loop services available for a shipment.

loop_returns_report_label_request_error

Report a label generation failure against a label request.

loop_returns_update_label_status

Push a status update for a label.

loop_returns_create_customer

Create a new customer.

loop_returns_create_inventory

Upsert inventory details for a product variant by location.

loop_returns_create_location

Create a new location.

loop_returns_create_order

Create a new order.

loop_returns_delete_customer

Delete a customer.

loop_returns_delete_customer_by_external_id

Delete a customer by its commerce external_id.

loop_returns_delete_inventory

Delete an inventory.

loop_returns_delete_inventory_by_external_ids

Delete an inventory record identified by the product variant's external_id and the location's external_id.

loop_returns_delete_location

Delete a location.

loop_returns_delete_location_by_external_id

Delete a location by its commerce external_id.

loop_returns_delete_order

Delete a specific order.

loop_returns_delete_order_by_external_id

Delete a specific order by its commerce external_id.

loop_returns_get_allowlist_item

Retrieve an allowlist entry.

loop_returns_get_blocklist_item

Retrieve a blocklist entry.

loop_returns_get_customer

Get details about a single customer.

loop_returns_get_customer_by_external_id

Get details about a single customer by its commerce external_id.

loop_returns_get_inventory

Get inventory details for a product variant by location.

loop_returns_get_inventory_by_external_ids

Get 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_location

Get the details about a single location.

loop_returns_get_location_by_external_id

Get the details about a single location by its commerce external_id.

loop_returns_get_order

Get details about a specific order.

loop_returns_get_order_by_external_id

Get details about a specific order by its commerce external_id.

loop_returns_list_customers

Retrieve a list of customers.

loop_returns_list_inventories

Retrieve a list of inventories.

loop_returns_list_locations

Retrieve a list of locations.

loop_returns_list_orders

List all orders.

loop_returns_update_customer

Update a customer.

loop_returns_update_location

Update a location.

loop_returns_update_order

Update a specific order.

loop_returns_upsert_customer

Upsert a customer, identified using the customer's external_id.

loop_returns_upsert_inventory

Upsert inventory details for a product variant by location.

loop_returns_upsert_inventory_by_external_ids

Upsert 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_location

Upsert a location, identified using the location's external_id.

loop_returns_upsert_order

Upsert an order using the external_id.

loop_returns_create_destination

Create a destination.

loop_returns_delete_destination

Delete a destination.

loop_returns_get_destination

Get details for a single destination.

loop_returns_get_webhook_samples

Get example payloads for each webhook topic, to build and test a handler without waiting for a real event.

loop_returns_update_destination

Update a destination.

loop_returns_update_webhook

Update a webhook subscriptions.

loop_returns_create_bulk_operation

Create a new bulk operation.

loop_returns_create_cart

Create a cart object and populate it with one or more product variants.

loop_returns_delete_cart

Delete a Shop Now cart by its token.

loop_returns_get_bulk_operation

Get the details about a specific bulk operation.

loop_returns_get_cart

Get a Shop Now cart by its token.

loop_returns_list_bulk_operation_jobs

Retrieve a list of bulk operation jobs.

loop_returns_list_bulk_operations

Retrieve a list of bulk operations.

loop_returns_update_cart

Replace the product variants in a Shop Now cart.

loop_returns_analyze_checkout_plus_cart

Price Checkout+ order protection for a cart and open or reuse an offer session.

loop_returns_get_checkout_plus_session

Read a Checkout+ offer session without re-analyzing the cart.

loop_returns_get_happy_returns_shipment

Get high level information from a Happy Returns shipment.

loop_returns_get_order_protection_config

Read the shop's Checkout+ order protection settings.

loop_returns_list_happy_returns_shipment_items

Get all items for a Happy Returns shipment.

Connect Loop Returns to Claude, ChatGPT and Claude Code

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.

API key••••••••••••3f7a
ConnectionVerified

Then just ask for the work

  • “Why did shoppers send things back last month, and which products came back most”

    • list_returns
    • get_return
  • “Look up the return on order 1042, add a note that the box arrived damaged, and flag it for review”

    • get_return
    • create_return_note
    • flag_return
  • “Process the open return on order 2210, then check that it closed”

    • get_return
    • process_return
  • “Block this email from future returns and report their latest return as fraud”

    • list_returns
    • create_blocklist_item
    • create_fraud_report

Use Loop Returns from the assistant you already open

One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.

Claude DesktopCustom connector

Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.

Claude WebCustom connector

The same endpoint, registered in the browser. Nothing to install on the machine you are working from.

ChatGPTCustom connector

Register PopMCP as a custom connector, then let ChatGPT read and update the account.

CodexDesktop & CLI

Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.

OpenCodeCoding agent

Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.

ZCodeDesktop app

Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.

Loop Returns MCP server questions

What teams ask before putting Loop Returns behind an AI client.

What do I need to connect Loop Returns?

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.

How many Loop operations can the agent call?

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.

Can the agent actually refund a shopper?

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.

Why did a tool return Unauthorized when my key works elsewhere?

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 has its own MCP server. How is this different?

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.

Can the agent create a return for a shopper?

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.

Do I have to run or host the Loop Returns MCP server myself?

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.

Which AI clients can use this MCP server?

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.

How do I connect Loop Returns to Claude Code?

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.

Why do only 36 of the 154 tools load by default?

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.

What is the difference between a tool and a trigger?

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.

Connect Loop Returns to your AI in minutes

Launch a hosted MCP endpoint for Loop Returns, keep tool access under control, and start testing real workflow prompts right away.

Connect your first MCP