> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reply.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Improve sequences every cycle

> Operate running sequences — A/B variants, per-step stats, pausing losers, promoting winners.

**Outcome:** sequences that measurably improve every cycle — data-picked copy on every step, losers
paused, winners promoted to templates.

## Best interface

<Note>
  **CLI for ops loops** — [`reply api`](/cli/overview#raw-api-access) against the stats and
  lifecycle endpoints composes with `jq` and cron for continuous
  optimization. **MCP interactively** — inspect steps and variants, compare sequences, pause/start
  conversationally.
</Note>

## Steps

<Steps>
  <Step title="Create A/B variants on the steps that matter">
    Openers and first follow-ups move the numbers hardest. Add message variants via the Sequences
    API (see [API Reference](/api-reference/introduction)); inspect existing ones via MCP:
    `reply_get_sequence_steps` → `reply_get_sequence_step_variants`.
  </Step>

  <Step title="Let traffic split">
    Run the sequence; the platform distributes contacts across enabled variants automatically.
  </Step>

  <Step title="Read per-variant and per-sequence performance">
    ```bash theme={null}
    reply api /v3/sequences/12345/stats \
      --body '{"filters":{"dateRangePreset":"lastMonth"}}' --json
    ```

    MCP: `reply_get_sequence_stats` for one, `reply_compare_sequence_performance` for up to 25
    side by side.
  </Step>

  <Step title="Pause the losers — no need to stop the sequence">
    ```bash theme={null}
    reply api /v3/sequences/stats --body '{"filters":{"dateRangePreset":"lastMonth"}}' --json \
      | jq -r '.data[] | select(.status == "active" and .emailOverview.repliedPercentage < 1) | .sequenceId' \
      | xargs -I{} reply api /v3/sequences/{}/pause --method POST
    ```

    The list endpoint accepts only `lastWeek` or `lastMonth`. Disable underperforming variants
    mid-flight via the API; pause whole sequences as above or via MCP.
  </Step>

  <Step title="Promote the winners">
    Save winning messages as email templates so every future sequence starts from proven copy —
    Templates via the [API](/api-reference/introduction).
  </Step>

  <Step title="Verify the lift">
    Confirm the aggregate effect over time with `POST /v3/reporting/emails/overview`, or the
    [analyze-performance skill](/skills/catalog#analyze-performance).
  </Step>
</Steps>

## Availability notes

* Everything here is **available today**. Per-contact status changes inside a sequence
  (pause one person, mark finished) are richest via MCP: `reply_change_status_in_sequence`.

## Related

* [Decide what to scale or fix](/guides/analyze-performance) — the diagnosis layer
* [Launch multichannel outreach](/guides/launch-outreach) — starting new sequences
