approve_return
ChatGPTApprove 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
ChatGPTAsk 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
ChatGPTClose 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
ChatGPTStart 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.
delete_return_tag
ChatGPTPermanently 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
ChatGPTGet 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
ChatGPTReturn 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
ChatGPTResolve 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
ChatGPTReturn 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
ChatGPTGet 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
ChatGPTReturn 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
ChatGPTGet detailed customer information, including contact methods, marketing consent, linked accounts, tags, segment memberships, addresses, custom fields, and loyalty details.
get_discount_config
ChatGPTGet 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
ChatGPTGet 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
ChatGPTGet 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
ChatGPTGet 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
ChatGPTGet 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
ChatGPTGet 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
ChatGPTList 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
ChatGPTList 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
ChatGPTSearch 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
ChatGPTSearch 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
ChatGPTList 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
ChatGPTSearch 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
ChatGPTList 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
ChatGPTConfigure 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
ChatGPTProcess 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
ChatGPTReopen 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
ChatGPTSubmit 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
ChatGPTUpdate 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
ChatGPTCreate, 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.