> For the complete documentation index, see [llms.txt](https://playbook.nativemsg.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://playbook.nativemsg.com/mcp/tool-reference/blasts.md).

# Blasts

A **blast** is a reusable broadcast: created in `draft` status, targeted by tags, delivered through channels, sent now or scheduled. Status moves `draft → scheduled → processing → sent`. A blast reaches contacts that carry **any of its tags** and are **subscribed to one of its channels**.

## Lifecycle

| Tool                    | What it does                                                                                                                                                                                 | Key inputs                                                                                                                                                                |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `create_blast`          | Create a draft. Nothing is sent                                                                                                                                                              | `title` (≤100), `experience_id` (whose channels it sends through), one of `message` (Message Object) or `template_id`, optional `fallback_message` for non-RCS recipients |
| `update_blast`          | Change a **draft's** title, experience, or message. A scheduled blast must be cancelled first                                                                                                | `blast_id`, fields                                                                                                                                                        |
| `delete_blast`          | Delete. Cannot be undone. A scheduled blast is refused unless `force: true` (which also cancels the schedule); a sending blast is refused unless `force: true` (which stops remaining sends) | `blast_id`, `force`                                                                                                                                                       |
| `send_blast`            | Send now. Delivers to every recipient; cannot be recalled. Returns `{ requestId }` for `get_message_status`                                                                                  | `blast_id`                                                                                                                                                                |
| `schedule_blast`        | Send at a future time; cancellable until it fires                                                                                                                                            | `blast_id`, `scheduled_date_iso`, `misfire_type` / `misfire_period`                                                                                                       |
| `cancel_blast_schedule` | Cancel a not-yet-fired schedule (no effect after firing)                                                                                                                                     | `blast_id`                                                                                                                                                                |

## Targeting

| Tool                                    | What it does                                                                                                   | Key inputs                           |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
| `assign_blast_tags`                     | **Replace** the blast's whole tag set (tags not passed are removed; passing neither argument clears every tag) | `blast_id`, `tag_names` or `tag_ids` |
| `assign_blast_channels`                 | **Replace** the blast's whole channel set (empty list removes every channel)                                   | `blast_id`, `channel_ids`            |
| `get_blast_tags` / `get_blast_channels` | Current targeting                                                                                              | `blast_id`                           |

## Inspection

| Tool                         | What it does                                                                                                                                                                       | Key inputs         |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
| `list_blasts`                | All blasts: `title`, `status`, `recipientsNumber`, `sendingProgress`, dates (message body omitted)                                                                                 | paging             |
| `get_blast`                  | One blast with message body, schedule, status                                                                                                                                      | `blast_id`         |
| `get_blast_recipients`       | Targeted contacts with per-recipient `messageStatus`                                                                                                                               | `blast_id`, paging |
| `get_blast_recipients_count` | Recipient count — **check this before every send**. Draft/scheduled/sent: single integer; processing: per-status counts (read/pending/queued/accepted/delivered/failed/sent/total) | `blast_id`         |

## The safe loop

1. `create_blast` → 2. `assign_blast_tags` + `assign_blast_channels` → 3. `get_blast_recipients_count` and confirm the number → 4. test on a tester device → 5. `schedule_blast` (preferred over immediate send — the gap is your cancel window) → 6. track with `get_message_status`.

**Assignment is replace, not add:** `assign_blast_tags`/`assign_blast_channels` set the entire list each call. To add one tag, pass the full set including existing ones (read them first with `get_blast_tags`).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://playbook.nativemsg.com/mcp/tool-reference/blasts.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
