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
Filter object
filters is an optional object with up to four independent axes. Omit filters (or any individual field) to leave that axis unfiltered. The same shape is accepted on particle_alert_update and is echoed back on every read tool (particle_alert_get, particle_alert_list). See Alerts → Filtering matches for the wire-level spec.
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. When the alert has any active filters, a ### Filters section follows with one bullet per configured axis (**Languages:**, **Relevance:**, **Source popularity:**, **Speaker roles:**).
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.