Skip to main content

handle-refund-request

Guides an agent through refund, delivery issue, and escalation decisions using the support server's tools. Use it when a customer asks for a refund, reports a damaged or wrong item, reports a delivered order as missing, or asks what can be done about an order problem.

Source facts

Repository
MCPJam/customer-support-skill
Last source activity
August 27, 2026 at 13:34
Detected SKILL.md language
English
Stars
1
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
2 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
handle-refund-request
description
Guides an agent through refund, delivery issue, and escalation decisions using the support server's tools. Use it when a customer asks for a refund, reports a damaged or wrong item, reports a delivered order as missing, or asks what can be done about an order problem.
license
Apache-2.0
metadata
{"version":"1.0.0"}
# Handle a refund request Operational instructions for handling e-commerce support requests with the `skills-over-mcp-support-demo` server. Follow them in order. The server's tools are the only source of order facts. ## When to use this skill Use it whenever the user: - requests a refund, - reports a damaged item, - reports receiving the wrong item, - reports that an order marked delivered is missing, - asks what can be done about a problem with an order. ## Step 1 — Get an order ID If the user has not given an order ID, ask for it before calling any tool. Never call `list_orders` to guess which order belongs to the user. `list_orders` is a demo convenience tool for browsing the sample data; it is not part of this workflow. ## Step 2 — Always call `get_order` first Once an order ID is available, call `get_order` with it before deciding anything. Do this even if the user's opening message already states what is wrong and what they want. Never invent order details. Never restate a fact differently from what the server returned. Tool results are authoritative. ## Step 3 — Consult the policy only when you need it `refund-policy.md` is the source of truth for eligibility rules. Read it lazily: do not read it at the start of the conversation and do not read it just because this skill was loaded. Read it at the moment you actually need to verify an eligibility rule — typically after `get_order` returns and before you tell the user whether a refund is possible. Read it once per conversation; do not re-read it for each order. It is a sibling resource of this file: resolve the relative path `refund-policy.md` against this skill's directory and read that resource. ## Step 4 — Decide from the order state Match the `get_order` result to exactly one case below. ### Order not found - Tell the user the order was not found. - Do not call `create_refund`. - Do not call `escalate_case`. ### Already refunded (`alreadyRefunded: true`) - Tell the user the refund was already processed and give the existing `refundId`. - Do not call `create_refund` again. - Do not create an escalation unless the user reports a separate, still unresolved problem. ### Still in transit (`status: "in_transit"`) - Explain the current status and the estimated delivery date. - Do not create a refund merely because the package has not arrived yet. - Escalate only if the user reports a separate issue that needs manual review, and in that case call `escalate_case` with `conflictsWithRecord: true`. ### Delivered correctly, no reported issue (`deliveryResult: "correct"`) - Explain what the order record shows. - Do not create a refund or an escalation automatically. This holds whether the order is inside or outside the refund window — being older than 30 days is not by itself a reason to do anything. - If the user supplies new information that conflicts with the record (for example: "it actually arrived cracked"), call `escalate_case` with `conflictsWithRecord: true`. Do not attempt to modify the order facts. ### Damaged or wrong item, inside the refund window (`deliveryResult` is `damaged` or `wrong_item`, and `withinRefundWindow` is `true`.) - Explain that the order appears eligible for a refund, citing the order-specific facts `get_order` returned. - Ask the user for explicit confirmation before creating the refund. - **Stop and wait for the user's answer.** End your turn there. - Call `create_refund` only after the user clearly confirms in a later message. - An opening message such as "I want a refund" is **not** confirmation. First retrieve the order, explain the order-specific eligibility result, then obtain explicit confirmation. ### Damaged or wrong item, outside the refund window (`withinRefundWindow` is `false`.) - Do not call `create_refund`. - Call `escalate_case` with a reason describing the situation. - Explain that the case needs manual review because it falls outside the 30-day window. ### Delivered but reported missing (`deliveryResult: "missing"`) - Never issue an automatic refund. - Call `escalate_case` for investigation. - Explain that the case has been sent for manual investigation. ## Step 5 — Report the outcome - State plainly what happened. - Include the `refundId` or `escalationId` returned by the tool. - Never claim success unless the corresponding tool call actually succeeded. If a tool returns an error, report the error and stop. ## Hard rules - Never call both `create_refund` and `escalate_case` for the same issue. - Never call `create_refund` without a separate, explicit user confirmation. - Never set `conflictsWithRecord: true` unless the user has reported facts that contradict the stored order record. - Never use `list_orders` to identify a user's order.
View on GitHub