# Resend order email (`resend_order_email`)

Queues the order email for one order again, marked as a resend. It goes to the recipient each customiser on the order is configured for: the customiser order email, its assigned manufacturer, or the Store email. The caller cannot choose or change the recipient. The email reaches a party outside Sign Customiser and cannot be recalled, so the call needs confirm: true and an idempotency_key that makes an exact repeat replay the original response without a second email. Each connection can queue two resends a minute. It requires the orders:write scope.

- Source URL: https://www.signcustomiser.com/help/mcp/tools/resend_order_email/
- Markdown URL: https://www.signcustomiser.com/help/mcp/tools/resend_order_email.md
- MCP endpoint: https://mcp.signcustomiser.com
- Required scope: `orders:write`
- Behaviour: destructive write

## Purpose

Send the production hand-off for an existing order to its manufacturer again.

## Annotations

| Hint | Value |
| --- | --- |
| readOnlyHint | false |
| destructiveHint | true |
| idempotentHint | true |
| openWorldHint | true |

## Prerequisites

- An order id from list_orders or get_order.
- A merchant has connected this store and approved the orders:write scope.

## Side effects

- Queues the order email again, marked as a resend, for the recipient each customiser on the order is configured for.
- The email reaches a party outside Sign Customiser and cannot be recalled.
- Changes no order.
- Uses one of the two resends this connection may queue in a minute. A replay uses none.
- Claims the idempotency_key for at least 24 hours.

## Arguments

| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `order_id` | integer | yes | The order id, from list_orders. |
| `confirm` | boolean | yes | Must be true to apply the change, because the order email reaches its manufacturer again, and an email that has been sent cannot be recalled. Without it the call returns a confirmation_required error and changes nothing. |
| `idempotency_key` | string | yes | A client-generated key unique to this logical write, such as a UUID. Required: repeating the call with the same key and the same arguments replays the original result instead of writing twice, and the same key with different arguments is an idempotency_key_conflict. |

## Result

The order id and the queued status. The response does not name the recipient, and queued does not mean delivered.

| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `request_id` | string | yes |  |
| `store` | object | yes |  |
| `store.id` | integer | yes |  |
| `store.name` | string | yes |  |
| `order_id` | integer | yes |  |
| `status` | string | yes | Always queued: the email is sent by a background job. One of: `queued`. |
| `idempotent_replay` | boolean | no | True when this call replayed a previously recorded response for the same idempotency_key instead of applying the write again. |

## Error cases

| Code | Recovery |
| --- | --- |
| `confirmation_required` | Send confirm: true. The email cannot be recalled. |
| `insufficient_scope` | The connection was approved without orders:write. |
| `rate_limited` | This connection has queued two resends in the last minute. Wait retry_after seconds. |
| `resource_not_found` | No order with that id belongs to this store. Call list_orders to find a valid id. |

## Example: Resend an order to its manufacturer

Request:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "resend_order_email",
    "arguments": {
      "order_id": 8801,
      "confirm": true,
      "idempotency_key": "6f7a8b9c-0d1e-4f2a-9b3c-4d5e6f7a8b9c"
    }
  }
}
```

Response:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "structuredContent": {
      "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t",
      "store": {
        "id": 12,
        "name": "Demo Signs"
      },
      "order_id": 8801,
      "status": "queued",
      "idempotent_replay": false
    }
  }
}
```

## Example: Without confirmation no email is queued (error)

Request:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "resend_order_email",
    "arguments": {
      "order_id": 8801,
      "confirm": false,
      "idempotency_key": "6f7a8b9c-0d1e-4f2a-9b3c-4d5e6f7a8b9c"
    }
  }
}
```

Response:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "isError": true,
    "structuredContent": {
      "error": {
        "code": "confirmation_required",
        "title": "Confirmation required",
        "detail": "Resending order 8801 emails its manufacturer again, and an email that has been sent cannot be recalled.",
        "recovery": "This operation changes something consequential. Send confirm: true once the merchant has agreed to it.",
        "parameter": "confirm",
        "allowed_values": [
          "true"
        ]
      }
    }
  }
}
```
