Skip to main content
Create an alert that watches a single entity and emails you whenever it is mentioned on a podcast episode (kind=ENTITY_MENTION) or appears as a speaker (kind=PODCAST_SPEAKER). An alert watches exactly one entity — to cover several entities, create one alert per entity. When a name has no entity slug, or its entity has no podcast coverage, create a kind=KEYWORD_MENTION alert that watches a keyword instead (see Keyword alerts). This is a mutating tool — it creates a real alert in your project. The watch target is passed as an entity slug 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 the 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.
Creating an active alert can move an eligible organization’s subscription from its credit/trial phase to paid fixed-fee billing. Explain this possible billing change and obtain the user’s explicit confirmation before creating an active alert. Creating a paused alert (is_active=false) does not trigger this transition, although the historical backfill still runs.
Alerts are not covered by zero data retention: the alert’s definition and its matched results are stored as part of the alerts feature. See Alerts → Data retention.
The tool advertises destructiveHint: true because of this possible billing transition. This annotation does not add a server-side confirmation check.

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.

Keyword alerts

A KEYWORD_MENTION alert watches a phrase rather than an entity, for names the resolve tools don’t know — a startup whose brand differs from its legal name, a product, a drug, a code name. It matches the way a double-quoted keyword_search phrase on particle_podcast_search_transcripts does, not the looser unquoted match: the phrase’s words adjacent and in order, ignoring case and punctuation, on whole words, in topic-discussion and interview segments only (never ad reads, intros, or outros). It watches spoken dialogue, never speaker names. Because a keyword can collide with an unrelated use of the same word, set description to say what the phrase means. A phrase too broad to alert on — more than 700 matching episodes in the past week, such as a common word or a household name — returns an unprocessable_entity error; watch a well-known person or company with an entity alert instead. Run particle_alert_preview with the same kind and keyword first to see what it would catch.

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 (a **Keyword:** row instead on keyword alerts), 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"):
Passing output_format: "json" returns the same fields as compact JSON.

Example