MCP App Store
Business
Redo icon

Redo

by https://redo.com

Overview

Redo's reverse logistics server gives AI assistants direct access to your end-to-end returns operation. Query return requests, track shipments, and surface customer insights without leaving your workflow. Reduce manual effort, resolve returns faster, and connect your AI tools to the software and physical logistics network that powers a better post-purchase experience.

Tools

approve_return

ChatGPT
Approve a return so that the customer can proceed with shipping items back. Before calling this tool, you MUST: (1) call get_return to verify the return exists and check its current status, (2) confirm all items are in 'open' status — only open items can be approved, (3) confirm with the user that they want to approve the return. Optionally, you can specify per-item configuration (e.g., whether the customer must ship each item back). If no items are specified, all items are approved with default settings (ship back required). You can also include customerNotes to share a message with the customer upon approval. For customerNotes: ONLY include the user's exact words if they provide a message. NEVER generate or fabricate customerNotes — omit the field if the user declines or doesn't provide one.

ask_redo

ChatGPT
Ask the Redo support AI any question about the merchant's account, settings, policies, or platform features. Also use this for ANY analytics question — return rates, revenue, exchanges, upsell, product/variant performance, customer return behavior — and for generating or exporting custom analytics reports or CSVs. The AI will ask clarifying questions and require confirmation before running a report. Use this when the user's question cannot be answered by the other return-specific tools. Use threadId to continue an existing conversation, or omit it to start a new thread.

close_return

ChatGPT
Close a return by marking it as complete. This marks all return items as complete and closes the return without performing any processing actions (no refunds, exchanges, etc.). Use this when a merchant wants to close out a return without taking further action. Cannot be used on returns that are already in a closed state (complete, rejected, or deleted). Confirm with the user before closing.

create_draft_return

ChatGPT
Start a new return for a customer's order. Accepts an internal order ID, Shopify order ID, or Shopify/display order name such as '#1234'. If an order name does not resolve or you need to disambiguate, call list_orders with providerOrderName, then pass the returned order id here. This creates a draft return that must be configured step-by-step before submission. After creating the draft, use manage_draft_return to configure it, then submit_draft_return to finalize.

create_return_comment

ChatGPT
Add a comment to a return's timeline. If the message follows the format '{product_title} - {variant_title} disposition: {grade}', it will automatically update the matching product's grade (used for 2Boxes-style disposition notes). Use get_return first to verify the return exists and to get product details if writing a disposition note.

delete_return_tag

ChatGPT
Permanently delete a return tag (matched by name) from the authenticated team's tag library. This also strips the tag from every return that referenced it and from every saved view filter. This action cannot be undone — always confirm with the user before calling.

get_automation

ChatGPT
Get detailed information about an automation, including enabled state, category/schema, timestamps, and step configuration. Use list_automations first to find the automation ID if needed. If a step has an opaque template/config ID, call get_automation_step_configuration with that automation ID and step ID.

get_automation_performance

ChatGPT
Return per-automation performance metrics plus overall totals (with a comparison to the prior period of equal length) for a given date range. Metrics include revenue, spend, ROI, revenue per recipient, and counts of orders/clicks/opens/sends. This is automation-level analytics, not per-step Recover metrics.

get_automation_step_configuration

ChatGPT
Resolve linked configuration for a specific automation step. Use this after get_automation when a step has an opaque template/config ID. Resolves Recover steps into scenarios, fallback messaging, agent/brand settings, and discount ID; email steps into subject, preview, and builder sections; and SMS steps into message content, prefix, AI config, and attachments.

get_automation_step_performance

ChatGPT
Return step-level automation performance for a metric family. Use metricType='recover_conversation' and stepTypes=['recover'] for Recover questions like recovered revenue, reply rate, conversion rate, or which Recover step is performing better.

get_campaign

ChatGPT
Get detailed information about a specific marketing campaign, including its templates (email subject lines or SMS content variants), audiences (customer groups), status, and schedule. Use list_campaigns first to find the campaign ID if you don't have it.

get_campaign_performance

ChatGPT
Return per-campaign performance metrics plus overall totals (with a comparison to the prior period of equal length) for a given date range. Metrics include revenue, spend, ROI (as a percentage), revenue per recipient, and counts of orders / clicks / opens / sends. Currency values are plain numbers in the store's currency. Use campaignId to filter rows to a single campaign; totals remain period-level.

get_customer

ChatGPT
Get detailed customer information, including contact methods, marketing consent, linked accounts, tags, segment memberships, addresses, custom fields, and loyalty details.

get_discount_config

ChatGPT
Get the reusable discount configuration from the shared Discount collection. Use this after campaign, automation, template, or generated-code tools return a discountId and you need the actual offer, code/prefix, provider, expiration, eligibility, usage limits, or stacking rules.

get_generated_discount_code

ChatGPT
Get an issued/generated discount code and its usage records. Use this for questions like whether a generated code was used, which customer/order used it, when it expires, what generated it, or what base discount configuration it came from. Provide either generatedDiscountCodeId or discountCode.

get_order

ChatGPT
Get detailed information about a specific order including its customer, items, totals, discounts, shipping cost, and taxes. Use list_orders first to find the order ID if you don't have it.

get_return

ChatGPT
Get detailed information about a specific return including its items, status, compensation totals, and associated order details. Returns the item IDs needed for process_return. Use list_returns first to find the return ID if you don't have it.

get_segment

ChatGPT
Get detailed configuration for a marketing segment/audience, including counts and the dynamic condition tree when applicable. Use this after list_segments or after get_campaign returns included/excluded audience IDs.

get_template

ChatGPT
Get an email or SMS marketing template by ID. Use this to inspect subject lines, email builder sections, SMS content, prefix content, attachments, and AI config when a campaign or automation references a template ID.

list_automations

ChatGPT
List automations for the merchant's team. Returns automation IDs, names, enabled state, category/schema, step count, and unique step types. Use the stepTypes filter to discover automations for a feature, such as ['recover'], then call get_automation for the full step configuration.

list_campaigns

ChatGPT
List marketing campaigns for the merchant's team. Filter by channel (email/sms), status, name substring, or scheduled-date range. Returns a summary for each campaign (id, name, channel, status, scheduledAt, sentAt, variant counts, audience counts). Use get_campaign with a specific campaign ID for full details, or get_campaign_performance for per-campaign metrics.

list_customers

ChatGPT
Search and list customer records for the merchant. Use this to find customer IDs before calling get_customer, or to answer questions about customers by name, email, phone, or segment membership.

list_orders

ChatGPT
Search and list orders, sorted by most recent first. Filter by order name, customer email, or date range. Returns summary information for each order; use get_order with a specific order ID for full details. Supports pagination via the pageNext cursor in the response.

list_return_tags

ChatGPT
List every return tag defined for the authenticated team. Use this to resolve the exact stored name (case-sensitive) before calling upsert_return_tag or delete_return_tag when the user refers to a tag loosely.

list_returns

ChatGPT
Search and list returns, sorted by most recent first. This is the starting point for finding returns — filter by order name, customer email, status, or date range. Returns summary information for each return; use get_return with a specific return ID for full details. Supports pagination via the pageNext cursor in the response.

list_segments

ChatGPT
List marketing segments/audiences for the merchant's team. Use this to discover segment IDs before calling get_segment, or to inspect the audiences included/excluded on a campaign.

manage_draft_return

ChatGPT
Configure a draft return step-by-step. This tool acts as a state machine — it only accepts actions valid for the current step and advances the flow automatically. Each response tells you the current step, available actions, and relevant data. Steps proceed in order: select items → walk return flow (reason/questions per item) → choose compensation → set merchant overrides → choose shipment method → configure exchange (if applicable). Use go_back to return to a previous step. The response always includes availableActions telling you exactly what you can do next.

process_return

ChatGPT
Process a return's products by accepting or rejecting each one. Before calling this tool, you MUST: (1) call get_return to retrieve the return's items and their IDs, (2) check that items are in an 'open' status — if items show as 'rejected' or 'complete' on an open return, the return is in an inconsistent state; explain this to the merchant and ask if they want you to re-process the items (accept them) or close the return instead, (3) confirm with the user which products to process and whether each should be accepted or rejected, (4) for accepted products, ask whether to restock. Grade is optional and does not need to be asked unless the user mentions it, and (5) if rejecting any products, ask the user if they'd like to include a message to the customer explaining the rejection. Each product in the request needs either reject:true OR a processInput object, not both. For customerNotes: ONLY include the user's exact words if they provide a message. NEVER generate or fabricate customerNotes — omit the field if the user declines or doesn't provide one.

reopen_return

ChatGPT
Reopen a return that was previously completed or rejected. This resets all processed/rejected items back to open, clears pending processing info, resets the expiration date, and marks the return as reopened. Important: reopening does NOT reverse any refunds, exchanges, or other actions performed during processing. The team must have the 'Allow reopen after processing' setting enabled for processed returns. Confirm with the user before reopening.

submit_draft_return

ChatGPT
Submit a fully configured draft return to create the actual return. Only succeeds when all required steps are complete (currentStep must be 'ready'). Call this after configuring the draft return via manage_draft_return. Returns the created return ID.

update_return_status

ChatGPT
Update the status of a return. Valid statuses: in_transit, delivered, needs_review, in_review, flagged, pre-shipment. For reopening a return (setting to open), use the reopen_return tool instead. For closing a return (setting to complete), use the close_return tool instead. Confirm the desired status with the user before calling this tool.

upsert_return_tag

ChatGPT
Create, update, or rename a return tag for the authenticated team. If no tag with name exists, a new one is created. If a tag with name exists and newName is omitted, only its pillTheme is updated. If a tag with name exists and newName is provided, the tag is renamed to newName and cascaded to every return that referenced it and every saved view filter. Confirm with the user before creating a new tag or renaming one.

App Stats

32

Tools

3

Prompts

May 7, 2026

First seen

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily