kind=ENTITY_MENTION) or appear as a speaker (kind=PODCAST_SPEAKER). This is a mutating tool — it creates a real alert in your project.
Watch targets are passed as entity slugs from a resolve tool — the same slug→edge contract as the rest of the surface. Resolve a name once with particle_entity_resolve, particle_person_resolve, or particle_company_resolve, then create the alert with the slug it returns. The tool resolves each slug to its (entity_type, entity_id) internally, so you never handle a raw entity id; the resolved type and name are echoed back in the response.
Every MCP request is scoped to exactly one project by your credential, so the alert is created in that project — there is no project parameter. After creation the alert immediately backfills matches from the past 7 days (visible via particle_alert_list_matches, flagged is_backfilled and never emailed). To see what an alert would catch before committing, run particle_alert_preview first.
Alerts require a plan that includes them (Team, Business, or Enterprise) and an available alert allowance. On a plan without alerts or at the allowance limit, the call returns an
isError result with upgrade guidance.Inputs
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
title | string | yes | — | Human-readable title (e.g. "OpenAI mentions"). Shown in the dashboard and email subject. |
entities | array of strings | yes | — | Entity slugs to watch, from the resolve tools. Person, company, and place/other (knowledge-graph) slugs are all accepted. At least one is required. |
kind | enum | no | ENTITY_MENTION | What to watch for. ENTITY_MENTION fires whenever a watched entity is mentioned on an episode; PODCAST_SPEAKER fires only when a watched person is themself an identified speaker (guest/panelist/correspondent/audience). Fixed at creation — create a new alert to change it. |
delivery_cadence | enum | no | REALTIME | How matches are emailed: REALTIME (one email per match), DAILY (one bundled email each morning), or WEEKLY (one bundled email Monday). |
notifications | array of strings | no | your account email | Email addresses to notify. Each must already be verified for your organization (or belong to an org member). When omitted, defaults to your account email if available; otherwise pass at least one. |
description | string | no | — | Optional longer description of what the alert is for. |
is_active | boolean | no | true | Whether the alert produces matches. Set false to create it paused (the one-time backfill still runs). |
Output
A markdown document rendering the created alert’s full configuration: the title as an H2, then**ID:**, **Kind:**, **Delivery:**, and **Status:** (active/paused) KV rows, an optional **Description:** row, a ### Watching (N) section listing each resolved entity as Name — type · id, and a **Notify:** row with the recipient emails.
The **ID:** row is the alert id — feed it into particle_alert_get, particle_alert_update, particle_alert_delete, and particle_alert_list_matches.
Sample (title="OpenAI mentions", entities=["sam-altman"], delivery_cadence="DAILY"):
output_format: "json" returns the same fields as compact JSON.
Example
Related
- REST equivalent:
POST /v1/projects/{projectId}/alerts. - Resolve watch targets first with
particle_entity_resolve,particle_person_resolve, orparticle_company_resolve. - Size the alert before creating it with
particle_alert_preview. - After creating, see what it caught with
particle_alert_list_matches, or manage it withparticle_alert_get,particle_alert_update, andparticle_alert_delete.