Skip to main content
Glama

Server Details

Podcast intelligence for agents: transcripts, clips, speaker diarization, mention tracking.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 28 tools

Disambiguation4/5

Most tools target a distinct resource+action and the descriptions go out of their way to cross-reference and say when NOT to use a tool (find_mentions vs search_transcripts, list_related vs list_related_episodes, preview vs list_matches). The main overlap is the resolve/get family — person/company/entity_resolve and their matching _get tools — which agents could plausibly confuse despite the guidance.

Naming Consistency5/5

Every tool follows a uniform particle_<resource>_<action> snake_case pattern (company_get, company_resolve, podcast_list_episodes, alert_create, topic_browse). No mixed conventions, camelCase, or vague verbs anywhere in the set.

Tool Count3/5

At 28 advertised tools this sits at the heavy end, and the server's true surface is larger still (reachable via particle_catalog/particle_call). Each individual tool is well-scoped and earns its place in a broad podcast-intelligence domain, but the count is borderline for a single advertised list.

Completeness4/5

Alerts get full lifecycle coverage (create/get/list/update/delete/preview/matches) and podcasts cover resolve, episodes, search, mentions, timeseries, rankings, clips, guests, and relations. Minor gaps remain — topic has only browse with no topic_get, and several categories (publishers, advertising, ratings, bias, suitability) are not advertised but only reachable through the catalog meta-tools.

Available Tools

28 tools
particle_alert_createAInspect

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). Pass the entity slug from a resolve tool — resolve a name with particle_entity_resolve, then create the alert with the slug it returns. An alert watches exactly one entity; to cover several entities, call this tool once per entity.

Use the optional filters object to narrow what gets surfaced on every channel (matches list, realtime email, daily/weekly digest). Four independent axes: languages (BCP-47-like tags like ['en','pt-BR'] — empty means all languages), relevance (EVERYTHING returns on-target + incidental matches, RELEVANT narrows to on-target only — dropping passing mentions), source_popularity (ANY keeps every source, POPULAR keeps only matches from podcasts in the top 5% by chart popularity), and speaker_roles (PODCAST_SPEAKER alerts only — REPLACES the default appearance set GUEST/PANELIST/CORRESPONDENT/AUDIENCE/SOUNDBITE_SPEAKER; sending it on an ENTITY_MENTION alert errors with unprocessable_entity).

After creation the alert immediately backfills matches from the past week (visible via particle_alert_list_matches) without sending emails for them. To see what an alert would catch BEFORE committing, use particle_alert_preview first. The created alert's id feeds particle_alert_get, particle_alert_update, particle_alert_delete, and particle_alert_list_matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoWhat signal to watch for. ENTITY_MENTION (default) fires whenever a watched entity is mentioned on a podcast episode. PODCAST_SPEAKER fires only when a watched person is themself an identified speaker (guest/panelist/correspondent/audience). Kind is fixed at creation.
titleYesHuman-readable title for the alert (e.g. 'OpenAI mentions').
filtersNoPersistent narrowing applied to every surface the alert produces (matches list, realtime email, daily/weekly digest). Omit for no filters — every detected match is surfaced. See AlertFiltersInput for the four axes (languages, relevance, source_popularity, speaker_roles).
entitiesYesThe entity to watch, as a single slug from the resolve tools (particle_entity_resolve, particle_person_resolve, particle_company_resolve). Person, company, and place/other (knowledge-graph) slugs are all accepted; the resolved type is echoed back in the response. Exactly one — an alert watches a single entity, so create one alert per entity.
is_activeNoWhether the alert produces matches. Defaults to true. Set false to create it paused.
descriptionNoOptional longer description of what the alert is for.
notificationsNoEmail 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.
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.
delivery_cadenceNoHow often matches are emailed: REALTIME (default, one email per match), DAILY (one bundled email each morning), or WEEKLY (one bundled email Monday).

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the single destructiveHint=false annotation, the description discloses side effects and constraints: the alert backfills the past week without sending emails, filters apply persistently across all channels, speaker_roles is rejected for ENTITY_MENTION, and kind is fixed at creation. This gives an agent an accurate model of what will happen.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but is organized into a clear purpose paragraph, a filters paragraph, and a behavior/forward-reference paragraph. It is front-loaded with the core action and each section earns its place, though a small amount of duplication with the exhaustive schema is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex creation tool with nine parameters, no output schema, and minimal annotations, the description covers the preconditions, filter semantics, error condition, post-creation backfill, and downstream usage. The response shape is implied by the statement that the created alert id feeds the other alert tools, which is sufficient for the agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema entries are already very detailed, so the description does not need to compensate. It adds useful workflow framing (e.g., entity slugs come from resolve tools, one alert per entity) but mostly restates what the schema already documents, keeping this at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Create an alert that watches a single entity and emails you...' and immediately distinguishes the two kinds (ENTITY_MENTION vs PODCAST_SPEAKER). It also names related tools in the workflow, so the tool's role is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit workflow guidance: resolve an entity first with particle_entity_resolve, then create with the returned slug, and use particle_alert_preview before committing. It also tells the agent to call the tool once per entity and notes that the resulting id feeds subsequent alert tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_alert_deleteA
Destructive
Inspect

Delete an alert. This is a soft delete: the alert stops producing matches and disappears from particle_alert_list, but its past matches and deliveries are retained for audit. To pause an alert instead of removing it, use particle_alert_update with is_active=false.

ParametersJSON Schema
NameRequiredDescriptionDefault
alert_idYesAlert id to delete.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even though destructiveHint=true already signals mutation, the description adds important behavioral nuance: the alert stops producing matches, disappears from particle_alert_list, and past matches and deliveries are retained for audit. This goes well beyond the annotation and gives the agent a clear model of the tool's side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: the core action is stated first, followed by the essential soft-delete semantics, and finally the routing guidance to the sibling tool. Every sentence earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with a clear schema and no output schema requirement, the description fully covers what the tool does, its side effects, and the relevant alternative. Nothing critical is missing for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully documents alert_id with coverage at 100%. The description does not add parameter-specific guidance, but it also does not need to because the single parameter is straightforwardly described in the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Delete') and resource ('an alert') and immediately clarifies the deletion is a soft delete. It distinguishes itself from particle_alert_update by describing the operational difference, so an agent can clearly tell this tool apart from its siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly names the alternative for pausing an alert (particle_alert_update with is_active=false) and contrasts it with removing an alert. This gives clear guidance on when to use this tool versus the most relevant sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_alert_getA
Read-only
Inspect

Fetch a single alert's full configuration — title, kind, cadence, watched entities (with names), notification emails, and any active filters (languages, relevance, source_popularity, speaker_roles). The filters section is omitted when the alert carries none. By default the response is just the configuration; request include=['matches'] to embed the most recent matches it has caught and include=['deliveries'] for the email audit log. For the full, paginated match history with transcript excerpts, use particle_alert_list_matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeNoOptional sections to embed: 'matches' for the most recent matches the alert has caught, 'deliveries' for the email delivery audit log.
alert_idYesAlert id from particle_alert_list or particle_alert_create.
match_limitNoHow many recent matches to embed when include=matches (1-25, default 5). Use particle_alert_list_matches for full pagination and transcript windows.
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes safety, and the description adds valuable behavioral detail: the `filters` section is omitted when no filters exist, the default response is configuration-only, and include options change the payload. This goes beyond the annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three efficiently written sentences, each earning its place: the first enumerates the returned config fields, the second handles the conditional omission of filters, and the third covers include options and the sibling alternative. No redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only getter with 4 parameters and no output schema, the description is nearly complete. It covers the primary purpose, optional embedded sections, and the sibling for deeper history. It does not explicitly state error behavior for nonexistent alerts, but that is not critical for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add much beyond the schema: it repeats the 'include' behavior and points to particle_alert_list_matches for full pagination, which the schema already states. It adds minor clarity about 'recent matches' but does not compensate significantly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Fetch a single alert's full configuration', then enumerates exactly what that includes. It clearly distinguishes this tool from the sibling particle_alert_list_matches by stating that the full paginated match history belongs to that other tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly tells the agent when to use this tool (for a single alert's config) and when to route elsewhere: 'For the full, paginated match history with transcript excerpts, use particle_alert_list_matches.' It also explains the optional include=['matches'] and include=['deliveries'] behaviors, so an agent knows when to request these additions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_alert_listA
Read-only
Inspect

List the alerts in your project, newest first. Each entry carries the alert id — feed it into particle_alert_get for full configuration, particle_alert_list_matches for what it has caught, or particle_alert_update / particle_alert_delete to manage it.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoAlerts per page (1-100, default 25).
cursorNoOpaque pagination cursor from a previous response's cursor field.
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the 'List' action is consistent with that. The description adds valuable behavioral context: results are ordered newest first, and each entry carries only the alert id rather than full configuration, implying the list is a summary view and full detail requires particle_alert_get. This goes beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero redundancy. The first sentence front-loads the core function and ordering, and the second efficiently explains downstream routing. Every clause contributes to agent decision-making.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with fully documented parameters and a readOnlyHint annotation, the description covers the essential behavioral contract: what is returned, in what order, and how the id connects to related tools. There is no output schema, but the description sufficiently hints at the entry shape. Nothing critical is missing for an agent to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents limit, cursor, and output_format. The description adds little beyond what the schema provides, but the context of ordering and id usage indirectly supports understanding the list's purpose. Baseline 3 is appropriate because the schema carries the parameter documentation burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'List the alerts in your project', and adds the ordering constraint 'newest first'. It distinguishes itself from the sibling alert tools by showing how the returned id feeds into get, list_matches, update, and delete, so an agent can clearly tell listing apart from those operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates this tool is the entry point for discovering alert ids, then routes the agent onward to particle_alert_get, particle_alert_list_matches, particle_alert_update, and particle_alert_delete. It does not explicitly state when not to use this tool, but the routing creates strong contextual guidance for choosing the correct sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_alert_list_matchesA
Read-only
Inspect

List the matches an alert has caught, newest first — the payoff of an alert. Each match names the watched entity and the podcast episode it was detected on (with episode and podcast slugs that feed particle_podcast_get_episode and particle_podcast_resolve). Use view=detailed to include the transcript excerpts around each mention, and after/before to scope to a date range. Backfilled matches (from the past-week sweep at creation) are flagged and never triggered an email.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoDetail level. 'summary' (default) returns each match's entity, episode, and counts. 'detailed' also includes the transcript excerpt windows around each mention.
afterNoOnly matches detected on or after this ISO date (e.g. 2026-05-01).
limitNoMatches per page (1-100, default 25).
beforeNoOnly matches detected on or before this ISO date.
cursorNoOpaque pagination cursor from a previous response's cursor field.
alert_idYesAlert id whose matches to list.
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses ordering (newest first), the backfill flag and its implications for email, and the presence of episode/podcast slugs that feed other tools. These are genuinely useful behavioral details not visible in the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the core action, and every clause adds information. It avoids restating schema details and packs ordering, backfill behavior, parameter guidance, and downstream tool links into two efficient sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with no output schema, the description covers what the response contains, how to get more detail, how to filter by date, and how returned slugs connect to other tools. Pagination and formatting defaults are already fully specified in the input schema, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds value by explaining how view=detailed changes the payload, how after/before scope results, and why the slugs matter. This goes slightly beyond the baseline for fully documented schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a precise verb and resource: 'List the matches an alert has caught, newest first'. It clearly distinguishes matches from the alert itself, and the 'payoff of an alert' phrase makes the tool's role obvious relative to sibling alert tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when this tool is relevant: after an alert has caught matches, and it explains downstream use of the slugs. It does not explicitly name alternative tools to exclude, but the context is specific enough that an agent would not confuse it with alert listing or podcast transcript search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_alert_previewA
Read-only
Inspect

Preview how often an alert would fire BEFORE creating it. Sweeps the past N days (default 7, max 30) for the given entity and returns the total match count, a per-day breakdown, and a small sample of the most recent matches with episode context. Use this to size an alert (REALTIME vs DAILY vs WEEKLY cadence) or to confirm the entity slug watches the right thing, then call particle_alert_create with the same entity. Pass the same filters you plan to save so the estimate matches what the alert would surface — the languages and speaker_roles axes narrow the sweep; relevance and source_popularity are read-time projections that don't, so the count is an upper bound when relevance=RELEVANT. Read-only — it creates nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoSignal to preview. Defaults to ENTITY_MENTION.
filtersNoSame as particle_alert_create.filters. Pass the filters you intend to save so the estimate reflects what the alert would actually surface. Only languages and speaker_roles narrow the historical sweep; relevance and source_popularity are read-time projections that don't run on historical episodes, so setting them leaves the count unchanged (the estimate is an upper bound when relevance=RELEVANT).
entitiesYesThe entity to preview, as a single slug (from the resolve tools), same as particle_alert_create.entities — exactly one.
window_daysNoHow many days back to sweep (1-30, default 7).
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true, and the description reinforces it with 'Read-only — it creates nothing.' It adds useful behavioral context about the historical sweep, the returned count/breakdown/sample, and how read-time projections affect the count, going beyond the annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and workflow, then packs the critical filter semantics and read-only note into a compact paragraph. It is detailed but every sentence carries operational value; no filler or repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description compensates by listing the return components (total match count, per-day breakdown, recent sample with episode context). It also covers the window bounds, filter-to-create mapping, and the output_format distinction, making the tool fully callable without external documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the baseline is already strong, and the description adds extra meaning by explaining which filter axes narrow the sweep (languages, speaker_roles) versus which are read-time projections that don't (relevance, source_popularity), and that the count is an upper bound when relevance=RELEVANT. This is exactly the kind of beyond-schema semantic guidance an agent needs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource — 'Preview how often an alert would fire BEFORE creating it' — and immediately distinguishes this from creation by showing the workflow (sweep, then call particle_alert_create). This is unambiguous and separates it from sibling alert tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to use: to size an alert cadence (REALTIME/DAILY/WEEKLY) or confirm the entity slug, and then directs the agent to call particle_alert_create with the same entity. It also says to pass the intended filters so the estimate matches, which is direct operational guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_alert_updateAInspect

Update an existing alert. Only the fields you pass change; the entities and notifications lists, when provided, replace the whole set (pass a single entity slug from the resolve tools, same as particle_alert_create — an alert watches exactly one entity). Use is_active to pause or resume an alert without deleting it. An alert's kind is fixed at creation — to change it, create a new alert.

The optional filters object replaces the alert's filter set wholesale — omit to leave the existing filters unchanged, send {} to clear all filters. Same four axes as particle_alert_create.filters: languages, relevance (EVERYTHING/RELEVANT), source_popularity (ANY/POPULAR), and speaker_roles (PODCAST_SPEAKER alerts only — sending it on an ENTITY_MENTION alert returns unprocessable_entity).

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew title.
filtersNoReplace the alert's filter set wholesale. Omit to leave the existing filters unchanged; send an empty object {} to clear all filters. Same four axes as particle_alert_create.filters (languages, relevance, source_popularity, speaker_roles).
alert_idYesAlert id to update.
entitiesNoReplacement watch target as a single entity slug (from the resolve tools). When provided, replaces the entire existing watch list — exactly one entity; omit to leave entities unchanged.
is_activeNoPause (false) or resume (true) the alert.
descriptionNoNew description.
notificationsNoReplacement notification emails. When provided, replaces the entire existing set; omit to leave them unchanged.
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.
delivery_cadenceNoNew delivery cadence.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses important side-effect semantics beyond annotations: only passed fields change, entities/notifications/filters are replaced wholesale, an alert watches exactly one entity, and speaker_roles on an ENTITY_MENTION alert returns unprocessable_entity. These details let the agent predict behavior and avoid errors. The annotations contain only destructiveHint=false, which is not contradicted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-structured, with the core action and update semantics front-loaded in the first sentence and paragraph, and filters covered in a focused second paragraph. It has almost no filler, though a few details are repeated from the schema descriptions, preventing a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 9 parameters and nested objects, the description is highly complete: it covers replace-vs-merge behavior, constraints, and failure cases, and the schema fully documents every parameter. Since there is no output schema, a brief note on the return value would improve completeness, but correct invocation is well supported.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds cross-parameter meaning that individual schema entries do not fully convey: partial-update vs. replacement, pause/resume semantics, and the invalid filter combination. This moves it above baseline, though the schema already documents most field-level behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Update an existing alert,' a concrete verb and resource. It then distinguishes itself from sibling tools by explaining partial-update semantics, entity replacement, pause/resume via is_active, and the immutability of alert kind, leaving no ambiguity about the operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit alternatives in key cases: use is_active to pause/resume without deleting, and create a new alert to change kind. It also references particle_alert_create.filters for consistency. It does not explicitly contrast against particle_alert_delete or particle_alert_get, but the context is clear enough for an agent to choose this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_callA
Destructive
Inspect

Dispatch any public Particle tool by name. Compatibility fallback for harnesses that block calling tools that weren't advertised on tools/list — every public Particle tool is executable by name, so prefer calling discovered tools directly when your harness allows it. Identical metering and plan gating apply either way. Use particle_catalog to discover tool names and input schemas.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolYesFlat name of any public Particle tool (e.g. 'particle_podcast_get_episode'). Discover names and schemas with particle_catalog.
argumentsNoArguments object for the target tool, matching its input schema.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds useful behavioral context: identical metering and plan gating apply either way, and the target tool's schema governs arguments. However, the destructiveHint=true annotation signals potential mutating/destructive effects without the description elaborating on what destructive behavior may result from dispatching an arbitrary tool. There is no contradiction, but the description could more explicitly warn about the indirect destructive risk.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences with no filler. The purpose, the fallback context, the alternative preference, and the discovery path are all front-loaded and each sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a generic dispatcher tool with no output schema, the description explains the mechanism and the fallback rationale well. It lacks explicit guidance about how errors, return values, or destructive side effects are surfaced, and it doesn't mention whether the arguments object is validated before dispatch. The destructiveHint annotation makes the missing cautionary context more noticeable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers both parameters with 100% description coverage, so the baseline is 3. The description reinforces that arguments must match the target tool's input schema and directs agents to particle_catalog for details, adding modest value beyond the schema fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it dispatches any public Particle tool by name, identifies it as a compatibility fallback, and distinguishes it from direct tool calls. It names particle_catalog as the discovery mechanism, so an agent can tell exactly what this tool does and how it relates to siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to prefer calling discovered tools directly when the harness allows it, and to use this as a fallback for harnesses that block unadvertised tools. It also tells the agent to use particle_catalog to discover names and schemas, providing clear when-to-use and alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_catalogA
Read-only
Inspect

Browse the full Particle tool catalog. Your tools/list shows only the default categories, but EVERY public Particle tool is callable by name regardless of what was advertised — call this tool to discover the rest.

Without arguments: the categorical menu (every category with tool names, one-line summaries, and an line listing each tool's expand options). With category: the full input schema for each of that category's tools, ready to call.

Two conventions the one-line summaries don't convey, so read tools through this lens:

  • Tools are lean by default and EXPAND. Most return a minimal payload and opt into richer sections via an include array (e.g. a company's people, products, and competitors; a person's roles and podcast appearances) or change behavior via a mode/format switch. The line names these — a tool does far more than its summary alone implies.

  • Responses are a graph; slugs are edges. A slug a tool returns (person, company, podcast, episode, publisher, guest) is a valid input to the other tools, so you resolve once and then traverse: company → its people → a person's podcast appearances → that episode's transcript and every entity in it.

Categories on offer:

  • system (always-on): Discovery meta-tools: browse the full tool catalog and call any tool by name.

  • podcasts (default): Resolve podcasts, list and fetch episodes, search transcripts, and find entity mentions.

  • people (default): Resolve people and entities to canonical handles and fetch person profiles.

  • companies (default): Resolve companies and fetch company profiles with people, products, and competitors.

  • topics (default): Browse the hierarchical topic taxonomy used to classify podcast episodes.

  • podcast_rankings (default): Podcast chart rankings: current charts, movers, and ranking history.

  • podcast_guests (default): Podcast guest directory, trending guests, and per-guest appearance profiles.

  • podcast_advertising (opt-in): Podcast advertising intelligence: sponsor rosters, ad presence, and sponsor leaderboards.

  • podcast_publishers (opt-in): Podcast publisher profiles with their shows, bias profile, and suitability profile.

  • podcast_ratings (opt-in): Listener review ratings for podcasts: summaries and recent rating lists.

  • podcast_bias (opt-in): Corpus-wide political-bias views: publisher leaderboards and publishers by bias result.

  • podcast_suitability (opt-in): Corpus-wide GARM brand-suitability views: publisher leaderboards and category exposure.

  • alerts (default): Create and manage alerts that watch entities for podcast mentions or speaker appearances, preview match frequency, and review the matches an alert has caught.

  • radar (opt-in): Display selected research results as embedded Radar cards, with a Markdown fallback. Rendering is free and does not fetch data.

Opt-in categories can also be advertised on tools/list by adding ?include=<category> (comma-separated, or all) to the connection URL, or the X-Particle-Include header. ?exclude= hides default categories; ?tools=<name,...> pins the advertised list to exact tools instead. Discovery is free; tool execution is metered and plan-gated as usual.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoExposure category name (e.g. 'podcast_bias'). When set, the response includes the FULL input schema for every tool in that category — call this before invoking a tool you haven't seen advertised. When omitted, returns the categorical menu: every category with its tools and one-line summaries.
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, and the description adds rich context beyond it: discovery is free while tool execution is metered and plan-gated, responses are graphs where slugs are edges, and tools are lean by default with expand/mode conventions. This materially changes how an agent would call the tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long, but justified for a catalog tool whose job is to describe the whole API surface. It is front-loaded with the core purpose and the two conventions before the category list, and each section earns its place. A tighter category list would be possible, hence not a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a discovery tool: both modes, the expand convention, the graph/slug traversal model, all categories with default/opt-in status, and the mechanism to advertise opt-in categories are covered. No output schema exists, so the description's explanation of the markdown vs json return shapes fills that gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema documents both parameters well. The description adds value beyond the schema by explaining the behavioral difference of each mode (menu vs full schemas) and by advising json format only for programmatic chaining. Slight deduction for not detailing the exact categorical menu structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Browse the full Particle tool catalog') and clearly distinguishes itself from the sibling tool surface by explaining that tools/list only advertises default categories while this tool discovers the rest. The two operating modes (menu without args, schemas with category) are explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent when to call this tool ('call this before invoking a tool you haven't seen advertised') and names the alternatives — advertising opt-in categories via ?include=, ?exclude=, and ?tools= on the connection URL or X-Particle-Include header. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_company_getA
Read-only
Inspect

Return a bundled profile for one company: identifiers (slug, ticker, domain, CIK, QID, linked entity), name, and description.

Request optional sections via include: 'people' for current leadership and notable people (person slugs feed particle_person_get), 'products' for the three-level product hierarchy, 'competitors' for the competitor list, 'external_links' for the company's LinkedIn, social profiles, domain, Wikidata QID, SEC CIK and tickers. The default response is lean — include only what you need.

For sponsor/advertising analytics on this company, use particle_company_get_podcast_ad_presence instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeNoOptional response sections: 'people' (current leadership and notable people), 'products' (three-level product hierarchy), 'competitors' (competitor list), 'podcast_recommendations' (the ten podcasts the company could advertise on next, with the shows it already buys that led there; premium), 'external_links' (LinkedIn, social profiles, domain, Wikidata QID, SEC CIK and tickers). Default response is lean — request only what you need.
company_slugYesCompany identifier — accepts slug (e.g. 'nvidia'), domain (e.g. 'nvidia.com'), or canonical ID. If you already know the domain you can call this tool directly without first running particle_company_resolve.
product_statusNoComma-separated lifecycle filter for include=products (e.g. 'active' or 'active,announced'). Allowed values: active, announced, discontinued, rumored. Defaults to 'active'.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, so the description must carry the rest — and it does add real behavioral context: the default response is lean, a section is flagged as premium (`podcast_recommendations`), and `people` slugs feed `particle_person_get`. It stops short of covering pagination, rate limits, or error behavior, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core purpose before the optional sections and the alternative-tool note. The include enumeration largely duplicates the schema, which is mild redundancy, but nothing is wasted or buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the burden of describing the return payload — and it does, itemizing the identifiers, name, and description, plus what each optional section yields. Combined with the routing guidance, an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100%, setting a baseline of 3, but the description adds value the schema does not: it explains the cross-tool linkage (person slugs feed `particle_person_get`) and reinforces the lean-by-default include semantics. `product_status` filtering is left to the schema, which fully documents it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Return a bundled profile for one company') and enumerates exactly what the bundle contains (identifiers, name, description). It also routes away from a near-neighbor by naming `particle_company_get_podcast_ad_presence` for sponsor analytics, so the agent can distinguish it without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use guidance for each optional section via `include`, states the default is lean and to request only what is needed, notes you can skip `particle_company_resolve` when the domain is known, and names an alternative tool for a different use case. When/when-not/alternative are all covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_company_resolveA
Read-only
Inspect

Resolve a company by free-text name, ticker, SEC CIK, Wikidata QID, or domain. Returns candidates with the agent-facing identifier (slug, falling back to domain or id) you should pass to particle_company_get, particle_company_get_podcast_ad_presence, particle_podcast_find_mentions (as company_slug), or particle_podcast_list_episodes.

At least one identifier is required. Multiple are ANDed together — useful for disambiguating (e.g. ticker plus a name hint). For people or other knowledge-graph entities (not companies) use particle_entity_resolve instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
cikNoSEC Central Index Key (e.g. '0000320193'). Comma-separated for bulk.
qidNoWikidata QID (e.g. 'Q312'). Comma-separated for bulk.
limitNoMaximum candidates to return (1-25, default 5).
queryNoFree-text company name (case-insensitive). Use for human-typed names.
domainNoCompany website domain (e.g. 'apple.com'). Comma-separated for bulk.
tickerNoStock ticker symbol (e.g. 'NVDA', 'AAPL'). Comma-separated for multi-ticker lookup.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint=true annotation already establishes that this is a safe read operation. The description adds valuable behavioral context beyond the annotation: it returns candidate matches, requires at least one identifier, ANDs multiple identifiers together, and explains the agent-facing identifier fallback chain (slug -> domain -> id). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact paragraphs with no filler. The first sentence front-loads the core purpose and identifier scope; the rest covers downstream usage, constraints, and sibling differentiation. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a resolve-style tool with no output schema, the description covers what the agent needs: accepted identifier types, required input semantics, output identifier fallback, downstream tools to use with the result, and the relevant alternative for non-company entities. The annotations cover safety, so no further behavioral disclosure is essential.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented in the schema. The description adds meaningful cross-parameter semantics that the schema does not: at least one identifier is required, multiple identifiers are ANDed for disambiguation, and the output identifier should be forwarded to downstream tools. This exceeds the baseline for schema-covered parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Resolve a company' and enumerates the identifier types supported. It also distinguishes itself from particle_entity_resolve by specifying that people and other knowledge-graph entities are out of scope. This makes it easy for an agent to know exactly what the tool does and what it does not do.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: resolve companies by name/ticker/CIK/QID/domain, and pass the returned identifier to specific downstream tools. It also gives a clear when-not-to-use alternative: 'For people or other knowledge-graph entities (not companies) use particle_entity_resolve instead.' This is strong routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_entity_getA
Read-only
Inspect

One knowledge-graph entity's profile: name, kind, description, and Wikipedia link. Use it to confirm what a slug from particle_entity_resolve actually refers to — especially for the long tail that isn't a person or company (places, organizations, events, products, concepts).

When the entity is a linked person or company the response carries the person_slug / company_slug — prefer particle_person_get / particle_company_get for those, which return the full profiles. Entity slugs feed particle_podcast_find_mentions, particle_podcast_get_episode_timeseries, and the alert tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_slugYesKnowledge-graph entity slug or encoded ID from particle_entity_resolve, episode entity listings, or mention payloads (e.g. 'germany', 'bitcoin').
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes the operation is safe, and the description adds useful behavioral context: what fields the response contains, the conditional presence of person_slug/company_slug, and that linked entities should be handled through other tools. This goes beyond the annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: first the core function, then the primary use case, then explicit routing to siblings and downstream consumers. Every sentence adds information without redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only entity lookup with two well-documented parameters and no output schema, the description covers the return content, the intended use case, the alternatives, and downstream integration. An agent has enough context to select and invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The tool description itself adds little parameter-specific meaning beyond the schema, though the entity_slug schema description supplies examples and sources, and the output_format schema description explains the markdown/json tradeoff.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: retrieving a single knowledge-graph entity's profile with name, kind, description, and Wikipedia link. It also distinguishes itself from the person/company getter siblings by explicitly noting those return fuller profiles for linked entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: confirm what a slug from particle_entity_resolve refers to, especially for non-person/non-company entities. It also names the preferred alternatives for person and company entities, and even lists downstream tools that consume entity slugs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_entity_resolveA
Read-only
Inspect

Resolve any named thing — person, company, place, or other entity — by free-text name in one union search. Each candidate carries a type and the canonical slug for that type:

  • person: the canonical person slug. Feed it into particle_person_get, every person_slug parameter (particle_podcast_find_mentions, particle_podcast_search_transcripts, particle_podcast_list_episodes), or particle_podcast_get_guest's guest_slug.

  • company: the canonical company slug. Feed it into particle_company_get and every company_slug parameter.

  • place/other: a bare entity slug. Feed it into the entity_slug parameter on particle_podcast_find_mentions, particle_podcast_search_transcripts, and particle_podcast_list_episodes to filter by that entity.

Use this first whenever you only have a name and don't know what kind of thing it names. If you already know it's a person, particle_person_resolve ranks people only; for companies with a known ticker, domain, CIK, or QID, particle_company_resolve has more identifier surface.

For bulk resolution, pass a comma-separated query (e.g. "sam altman, nvidia, davos") — each name is resolved independently in a single call and limit applies per query.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum candidates per query (1-10, default 5).
queryYesFree-text name(s) of a person, organization, place, or company to resolve (e.g. 'sam altman', 'nvidia'). Case-insensitive. Comma-separated for bulk lookup (e.g. 'sam altman, kara swisher, marc andreessen') — each query is resolved independently and grouped in the response.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description goes well beyond that by disclosing the return behavior: each candidate carries a type and canonical slug, slugs route into specific downstream tool parameters, and bulk queries are resolved independently with limit applying per query. No contradiction exists with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a clear purpose, uses compact bullets for slug routing, and includes only decision-relevant guidance. Every section earns its place, with no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description defines the essential contract: candidates expose type and canonical slug, and it maps each slug to the exact parameters and sibling tools that consume it. Combined with usage guidance and bulk behavior, the agent has everything needed to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage of both parameters, including examples, case-insensitivity, default limit, and grouping behavior. The description's bulk and per-query-limit statements largely restate this, adding emphasis but little new semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description immediately states a specific action and resource: resolving any named thing by free-text name in one union search. It clearly distinguishes itself from sibling resolve tools by covering person, company, place, and other entities, and by explaining that candidates carry a type and canonical slug.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent to use this tool first when only a name is known and the entity kind is unknown. It also names the alternatives for known-person and known-company cases, and gives concrete bulk-resolution usage guidance, making the selection criteria unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_person_getA
Read-only
Inspect

Return a person's profile: name, current role, and bio, keyed by the canonical person slug from particle_person_resolve.

Request optional sections via include: 'external_links' for LinkedIn/Wikipedia/social profiles, 'podcast_appearances' for their most recent podcast appearances (episode and podcast slugs included for follow-up calls), 'companies' for the full role history. The default response is lean.

For podcast-guest analytics (appearance stats, suitability exposure, co-appearance graph) use particle_podcast_get_guest with the same slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeNoOptional response sections: 'external_links' (LinkedIn, Wikipedia, social profiles), 'podcast_appearances' (recent podcast appearances with episode and podcast slugs), 'companies' (the full role history, current role included and marked). Default response is lean — request only what you need.
person_slugYesCanonical person slug from particle_person_resolve (e.g. 'sam-altman'), or the encoded person ID.
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint: true, so the description carries the burden of behavioral detail. It adds valuable context: the default response is lean, optional sections require explicit requests, podcast appearances include follow-up slugs, and `output_format` choices affect LLM readability versus programmatic use.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the core purpose, and every sentence serves a function: scope, optional sections, default behavior, and sibling-tool routing. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only lookup with complete schema documentation, no output schema, and no nested objects, the description supplies all necessary calling context: what the profile contains, how to get optional sections, what follow-up data is included, and when to use a different tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description need not re-document parameters. It adds some contextual reinforcement around `include` sections, but mostly repeats the schema descriptions rather than providing new parameter-level meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Return a person's profile: name, current role, and bio, keyed by the canonical person slug.' It clearly distinguishes from related tools by naming `particle_person_resolve` as the slug source and `particle_podcast_get_guest` as the analytics-focused alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit routing guidance: use `particle_podcast_get_guest` for podcast-guest analytics with the same slug, and implies `particle_person_resolve` as a prerequisite for obtaining the canonical slug. It also explains when to request optional `include` sections.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_person_resolveA
Read-only
Inspect

Resolve a person by free-text name. Returns ranked candidates with the canonical person slug — the stable handle accepted by particle_person_get, by every person_slug parameter (particle_podcast_find_mentions, particle_podcast_search_transcripts, particle_podcast_list_episodes), and by particle_podcast_get_guest's guest_slug.

For bulk resolution, pass a comma-separated query — each name resolves independently in one call.

For organizations, places, or mixed/unknown entity kinds use particle_entity_resolve; for companies with a known ticker or domain use particle_company_resolve.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum candidates per query (1-10, default 5).
queryYesFree-text person name (e.g. 'sam altman'). Case-insensitive. Comma-separated for bulk lookup — each name is resolved independently and grouped in the response.
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals no mutation; the description adds valuable behavioral context: it returns ranked candidates, produces a canonical stable slug, and explains that bulk queries resolve independently in one call. This gives an agent a clear mental model of the tool's behavior without contradicting the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tightly structured and front-loaded: purpose first, then output semantics, then bulk mode, then tool-selection alternatives. Every sentence serves a distinct purpose with no repetition or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only resolve tool with no output schema, the description covers the essential decision points: what it returns, how the slug is used downstream, how to do bulk lookups, and which alternatives to choose. The only minor gap is a precise description of the ranked-candidate response structure, but the schema and slug explanation compensate adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents query, limit, and output_format well. The description reinforces the comma-separated bulk behavior and the purpose of the slug, but adds little semantic value beyond what the parameter descriptions already provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Resolve a person by free-text name.' It clearly distinguishes this tool from the related entity and company resolvers, and explains what the output is (ranked candidates with a canonical person slug).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage guidance is explicit and actionable. It names particle_entity_resolve for organizations, places, and mixed/unknown kinds, and particle_company_resolve for companies with a known ticker/domain. It also documents the bulk-resolution use case via comma-separated queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_podcast_find_mentionsA
Read-only
Inspect

Find dialogue lines where a specific person or company is named in podcast transcripts.

Two response modes

format="summary" (default, wide scan). Returns up to limit episodes (reverse-chronological), each with metadata + the first 10 mention-only lines (just the lines naming the entity, no surrounding dialogue). Use this to see what's been said across episodes and decide which episodes are worth reading in full. Paginate older episodes with cursor.

format="detail" (narrow drill-in). Requires episode_slug. Returns the full mention windows with context_lines of surrounding dialogue around each mention. Pass one slug for a single episode, or up to 10 comma-separated slugs (e.g. episode_slug="all-in-200,all-in-201,all-in-202") to multi-get several episodes in one call. limit/cursor don't apply.

Workflow

Two patterns, depending on what you already know:

  • No specific episode in mind: call format="summary" first to scan, then call format="detail" with the slug(s) of the episodes worth reading in full. For most questions (sentiment, recurring themes, who said what when), summary alone has enough signal and the second call isn't needed.

  • Already have the episode slug (e.g. user mentioned the episode by name, or you have it from another tool like particle_podcast_get_episode or particle_podcast_search_transcripts): skip summary entirely and call format="detail" with episode_slug directly.

Examples

Wide scan, then drill in: User asks "what has All-In said about OpenAI recently?". Call format="summary", company_slug="openai", podcast_slug="all-in", since="2025-11-01", limit=20. Read the mention lines per episode; if 2-3 episodes have substantive discussion, call format="detail", episode_slug="slug1,slug2,slug3" for full context in one round-trip.

Direct drill-in: User says "In All-In #200 they discuss OpenAI's strategy — pull the full quotes". Call format="detail", episode_slug="all-in-200", company_slug="openai" directly — no summary needed.

When NOT to use this tool

For dialogue that discusses a topic without naming a specific person or company (paraphrase-tolerant search), use particle_podcast_search_transcripts instead — that one ranks segments by relevance to a free-text query.

Required inputs

One of person_slug, company_slug, or entity_slug is required: person_slug for a person, company_slug for a company, entity_slug for any other knowledge-graph entity (places, organizations, events, concepts). Resolve a name to a slug first with particle_person_resolve, particle_company_resolve, or particle_entity_resolve. Slugs are case-insensitive on input.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoConstrain how the entity participates: guest, host, panelist, correspondent, or mention.
limitNoEpisodes per page (1-50, default 10). Summary mode only — detail returns one episode regardless.
sinceNoOnly episodes published on or after this ISO 8601 date (e.g. 2025-01-01).
untilNoOnly episodes published on or before this ISO 8601 date.
cursorNoOpaque pagination cursor from a previous summary response's cursor field. Summary mode only.
formatNoResponse shape. 'summary' (default) returns many episodes (reverse chron) with metadata plus the first few mention-only lines per episode — use this to scan and pick episodes to drill into. 'detail' requires episode_slug and returns one episode's full mention windows with surrounding dialogue context.
languageNoRestrict to episodes of podcasts in this language — ISO 639-1 code (e.g. 'fr'). Matches the podcast's primary language subtag, so 'fr' covers 'fr-FR'.
entity_slugNoKnowledge-graph entity slug from particle_entity_resolve for the long tail that isn't a person or company — places, organizations, events, products, concepts (e.g. 'germany'). Use person_slug for people and company_slug for companies.
person_slugNoPerson slug or encoded person ID from particle_person_resolve, particle_entity_resolve, or the guest tools (e.g. 'sam-altman'). One of person_slug, company_slug, or entity_slug is required.
company_slugNoCompany slug, domain, or canonical ID (e.g. 'nvidia' or 'nvidia.com'). Resolves to the company's linked entity.
episode_slugNoEpisode slug(s) or canonical ID(s). For format='detail', required: pass one slug for a single drill-in or up to 10 comma-separated slugs (e.g. 'all-in-200,all-in-201,all-in-202') for a multi-episode drill-in in one call. For format='summary', optional filter to one episode.
podcast_slugNoRestrict mentions to a single podcast by slug, internal ID, or numeric iTunes ID.
context_linesNoSurrounding dialogue lines around each mention (1-20, default 2). Detail mode only — ignored in summary.
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses concrete behavior: summary returns episode metadata plus the first 10 mention-only lines, detail returns full mention windows with context_lines, limit/cursor apply only to summary, and up to 10 comma-separated episode slugs can be passed. It also explains pagination, output_format trade-offs, and case-insensitive slugs—none of which are visible from the annotation alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long, but every block earns its place: purpose, mode semantics, workflow, examples, exclusion rule, and required inputs are clearly separated with headers. The core purpose and the most important distinction (summary vs detail) are front-loaded before the examples.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter tool with no output schema and only a readOnly annotation, the description is remarkably complete. It defines response shapes for both modes, explains when each mode is appropriate, states required inputs and slug-resolution prerequisites, covers pagination and multi-episode drill-in, and documents the sibling to use instead. Nothing essential for correct invocation or interpretation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds substantial meaning on top: the format parameter selects two very different response shapes, episode_slug supports comma-separated multi-get in detail mode, limit/cursor are summary-only, context_lines is detail-only, and one of person_slug/company_slug/entity_slug must be resolved first. This goes well beyond the baseline expected when the schema already documents each field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names the verb and resource precisely: 'Find dialogue lines where a specific person or company is named in podcast transcripts.' The two response modes and the explicit 'When NOT to use' section differentiate it from the paraphrase-tolerant search sibling, so an agent can distinguish it from particle_podcast_search_transcripts without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a full workflow: use summary first when no episode is known, then drill in with detail; skip summary when an episode slug is already available from tools like particle_podcast_get_episode. It also names the alternative for topic-level conversations ('use particle_podcast_search_transcripts instead'), making the selection rule explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_podcast_get_episodeA
Read-only
Inspect

Return a bundled overview of one podcast episode: title, podcast, speakers (with entity slugs), top mentioned entities, and segment/clip counts.

By default the response is lean — counts plus the top mentioned entities. Request optional sections via include: 'segments' for the structural outline with timestamps, 'entities' for the complete entity list, 'clips' for engagement-ranked highlight clips, 'topics' for topic classifications with slugs, or 'transcript' for the dialogue transcript (narrow it by speaker or time range via transcript_speaker / transcript_start / transcript_end — full transcripts are large).

For "every line about X in this episode" use particle_podcast_find_mentions with episode_slug instead — that returns the dialogue around each mention with is_mention flags. For the ad reads inside the episode use particle_podcast_get_episode_ads (premium).

ParametersJSON Schema
NameRequiredDescriptionDefault
includeNoOptional response sections: 'transcript' (bounded dialogue transcript — large for long episodes; narrow it with the transcript_* sub-params), 'segments' (structural outline with timestamps), 'entities' (complete mentioned-entity list instead of the top 20), 'clips' (engagement-ranked highlight clips), 'topics' (topic classifications with slugs), 'related' (the five episodes from OTHER shows most related to this one — slug, show, score, band; for the full ranked list with the basis behind each match call particle_podcast_list_related_episodes). Default response is lean — request only what you need.
episode_slugYesEpisode slug or canonical ID.
transcript_endNoTranscript end clip in seconds.
transcript_startNoTranscript start clip in seconds.
transcript_formatNoTranscript format for include=transcript. Defaults to text.
transcript_speakerNoFilter the transcript to one speaker (name or entity slug).

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, it discloses that the default response is intentionally lean, that full transcripts are large and should be narrowed with transcript_speaker/transcript_start/transcript_end, and that 'entities' returns the complete list instead of the top 20. No trait contradicts the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence, and each subsequent sentence provides actionable routing or behavioral detail. The description is long, but the length is earned by the number of optional sections and alternatives it must disambiguate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description supplies a solid mental model of the return payload and optional response sections. It also covers the two important edge behaviors — transcript size and the difference between the included related episodes and the full ranked list — so an agent can call it correctly without more context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema already covers all 6 parameters, the description adds operational meaning: it explains what each include value yields, notes defaults, flags transcript size, and clarifies that episode_slug can be a slug or canonical ID. This goes well beyond the structured definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names the exact operation ('Return a bundled overview of one podcast episode') and enumerates the payload: title, podcast, speakers with entity slugs, top mentioned entities, and segment/clip counts. It distinguishes itself from sibling tools by later stating that mention-level queries belong to particle_podcast_find_mentions and ad-read queries to particle_podcast_get_episode_ads.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance for optional include sections and names direct alternatives with conditions: use particle_podcast_find_mentions for 'every line about X in this episode' and particle_podcast_get_episode_ads for ad reads. It also tells the agent to call particle_podcast_list_related_episodes when the full ranked related list with match basis is needed rather than the five included via 'related'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_podcast_get_episode_timeseriesA
Read-only
Inspect

Time-bucketed episode counts — the purpose-built answer to "how often is X discussed over time". Counts episodes matching the same filters as particle_podcast_list_episodes (person, company, entity, podcast, keyword, language, duration, transcript availability) per day, week, or month, plus range totals. keyword_search additionally counts matching transcript segments per bucket (exact counts); semantic_search does the same by meaning, with the same similarity threshold as particle_podcast_search_transcripts (lower bounds for pathologically broad queries), and requires published_after. The two cannot be combined.

Use this for appearance, publication, or topic trend lines instead of paging particle_podcast_list_episodes, particle_podcast_find_mentions, or particle_podcast_search_transcripts once per period. Buckets are UTC-aligned, zero-filled, and Monday-aligned for weeks; ranges are capped at 1000 buckets. At least one of podcast_slug, person_slug, company_slug, entity_slug, keyword_search, or semantic_search is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoRole filter when person_slug, company_slug, or entity_slug is set.
intervalNoBucket width. Weeks start on Monday; all buckets are UTC-aligned. Defaults to week.
languageNoRestrict to episodes of podcasts in this language — ISO 639-1 code (e.g. 'fr'). Matches the podcast's primary language subtag, so 'fr' covers 'fr-FR'.
entity_slugNoKnowledge-graph entity slug from particle_entity_resolve for the long tail that isn't a person or company (e.g. 'germany'). Use person_slug for people and company_slug for companies.
person_slugNoPerson slug or encoded person ID (e.g. 'sam-altman'). Counts episodes featuring the person as a speaker — and, when the person has a linked knowledge-graph entity, episodes that mention them.
company_slugNoCompany slug, domain, or ID. Resolves to the linked entity.
max_durationNoMaximum episode duration in seconds.
min_durationNoMinimum episode duration in seconds.
podcast_slugNoPodcast slug, internal ID, or numeric iTunes ID. Restrict to one podcast.
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.
has_transcriptNoOnly count episodes with a completed transcript.
keyword_searchNoKeyword filter over transcript content. Double-quoted substrings must appear as exact phrases; unquoted terms must all appear in one transcript segment. Adds per-bucket mention counts to the response. Cannot be combined with semantic_search.
published_afterNoInclusive range start as an ISO 8601 date or date-time. Omit to aggregate all time.
semantic_searchNoVector-similarity filter by meaning over transcript content — the counting twin of particle_podcast_search_transcripts' semantic_search, using the same similarity threshold. Describe the topic the way you'd say it to a colleague; paraphrase tolerant. Adds per-bucket mention counts to the response. Requires published_after (ranges up to ~2 years). Cannot be combined with keyword_search.
published_beforeNoRange end as an ISO 8601 date or date-time. Defaults to now.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only readOnlyHint provided, the description carries the full behavioral burden and delivers: UTC-aligned, zero-filled, Monday-aligned week buckets, a 1000-bucket cap, range totals, exact vs semantic per-bucket counts, and the same similarity threshold as search_transcripts. This goes well beyond what annotations or schema alone convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well structured: opening purpose, filter parity, search-mode caveats, usage guidance, bucketing behavior, and required-filter constraint. Every sentence earns its place, and the most important identification cues are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter tool with no output schema, the description covers filters, time semantics, caps, and invocation constraints thoroughly. It falls just short of fully specifying the returned payload structure beyond 'counts', 'range totals', and per-bucket mention counts, though the high-level return contract is clear enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by noting that filters are shared with list_episodes, that at least one of six filters is required, and that keyword/semantic searches add per-bucket mention counts. This is meaningful additional context, though not exhaustive per-parameter color.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise, purpose-built definition: time-bucketed episode counts for answering 'how often is X discussed over time'. It clearly distinguishes this aggregation tool from the list/search siblings by focusing on trend lines over paging.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to use this tool for trend lines instead of paging particle_podcast_list_episodes, particle_podcast_find_mentions, or particle_podcast_search_transcripts. It also states the required filter condition and the exclusive search-mode constraints, leaving no ambiguity about when to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_podcast_get_guestA
Read-only
Inspect

A guest's podcast-appearance profile: lifetime stats (appearances, distinct podcasts, first/last appearance) plus their most frequent podcasts. Guests are people — the same slug works with particle_person_get for the biographical profile.

Request optional sections via include: 'appearances' for the most recent episode appearances (episode and podcast slugs included for follow-up calls), 'podcasts' for the per-podcast rollup, 'suitability' for brand-suitability exposure across the podcasts they appear on, 'recommended_podcasts' for the five shows they could plausibly appear on next — shows related to the ones they have guested on, minus those, with the venues behind each pick (the pitch list; branch on each row's band).

Returns not_found for people who exist but have never appeared on a podcast — use particle_person_get for those.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeNoOptional response sections: 'appearances' (most recent episode appearances with episode/podcast slugs), 'podcasts' (per-podcast rollup of where they appear), 'suitability' (brand-suitability exposure across the podcasts they appear on), 'recommended_podcasts' (the five shows they could plausibly appear on next — shows related to the ones they have guested on, minus those, each with the venues that led there; the pitch list). Default response is the profile + lifetime stats.
guest_slugYesPerson slug (e.g. 'sam-altman') from particle_podcast_list_guests, particle_person_resolve, or particle_entity_resolve.
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint: true, and the description adds meaningful behavior beyond that: the not_found case for non-guests, the default response profile plus optional include sections, and the recommended_podcasts pitch-list behavior. It does not contradict the annotation and gives the agent enough to anticipate the response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, then organized by optional sections and finally the error-routing note. Every sentence adds distinct information; the length is justified by the number of include options and the not_found behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only getter with three parameters and no output schema, the description covers all essential context: default response, optional sections, slug source, behavior for no appearances, and the sibling fallback. No critical operational detail seems missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description enriches parameter meaning: it explains that episode/podcast slugs in 'appearances' enable follow-up calls, and it clarifies the recommended_podcasts pitch-list structure with 'branch on each row's band'. It also gives slug provenance via list_guests/person_resolve/entity_resolve.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pairing: it fetches a guest's podcast-appearance profile and enumerates the contained stats (lifetime appearances, distinct podcasts, first/last appearance, frequent podcasts). It explicitly distinguishes itself from particle_person_get by noting that the same slug returns the biographical profile, so an agent can tell them apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit selection guidance: use particle_person_get for biographical profiles and for people who exist but have never appeared on a podcast (not_found), implying particle_podcast_get_guest is for podcast-appearance data. It also names follow-up call possibilities from the include sections, which helps an agent decide when to request appearances.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_podcast_get_rankingsA
Read-only
Inspect

Podcast chart rankings from Apple Podcasts and Spotify, in four modes:

  • chart (default): the current chart for a source/country/category slot, or — with podcast_slug — every chart slot that podcast currently holds.

  • movers: the biggest rank changes over window_days (risers, fallers, debuts, exits).

  • history: past snapshots for a chart slot, or — with podcast_slug — one podcast's chart history over time.

  • slots: the valid slot values — every source, country, and category_slug with live chart data — so filter values are discovered, not guessed. source narrows the country/category listings; other filters are ignored.

Each row carries the matched podcast_slug when the chart entry is in the catalog — feed it into particle_podcast_resolve or any podcast tool. For a single podcast's at-a-glance chart presence, particle_podcast_resolve with include: ["rankings"] is one call instead of two.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoWhat to return. 'chart' (default): the current chart — or, with podcast_slug, every chart slot the podcast currently holds. 'movers': biggest rank changes over window_days (risers, fallers, debuts, exits). 'history': past chart snapshots for a slot — or, with podcast_slug, one podcast's chart history. 'slots': the valid chart-slot values — every source, country, and category_slug with live data — for discovering filter values before a chart/movers/history call.
limitNoRows per page (1-100, default 25).
sinceNoMode=history only: only snapshots captured on or after this ISO 8601 timestamp.
untilNoMode=history only: only snapshots captured on or before this ISO 8601 timestamp.
changeNoMode=movers only: filter by change type. Defaults to all.
cursorNoOpaque pagination cursor from a previous response. Not supported by mode=movers.
sourceNoRanking source platform. Defaults to apple.
countryNoISO 3166-1 alpha-2 country code (e.g. 'us', 'gb', 'jp'). Defaults to us.
window_daysNoMode=movers only: comparison window in days (1-30, default 1 = vs. yesterday).
podcast_slugNoPodcast slug, internal ID, or numeric iTunes ID. With mode=chart: that podcast's current chart appearances across every slot. With mode=history: that podcast's chart history.
category_slugNoCategory slug (e.g. 'comedy', 'business'). Omit for the overall chart.
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation is consistent with the description, and the description adds substantial behavior beyond the annotation: slots mode ignores other filters, cursor is unsupported in movers mode, since/until apply only to history, and returned rows carry podcast_slug for chaining into other tools. It also discloses the markdown-vs-json output_format tradeoff.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with bulleted modes and a clear closing paragraph, which is appropriate for a complex 12-parameter tool. It loses a point because the mode bullets partially restate the mode parameter's schema description, but there is no fluff or irrelevant detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description covers mode interactions, parameter constraints, filter discovery, podcast_slug chaining, and output-format behavior—strong coverage for a read-only tool. The main gap is that the full return row shape beyond podcast_slug is left implicit, which an output schema or a clarifying sentence would close.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 12 parameters are already individually documented. The description adds valuable cross-parameter semantics, such as how podcast_slug alters chart/history behavior, which parameters are mode-specific, and how source narrows country/category listings in slots mode.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear resource ('Podcast chart rankings from Apple Podcasts and Spotify') and immediately enumerates the four modes, making the tool's function unmistakable. It also differentiates itself from sibling podcast tools by explicitly routing single-podcast chart lookups to particle_podcast_resolve.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete when-to-use and when-not-to-use guidance: for at-a-glance chart presence, use particle_podcast_resolve with include:['rankings'] instead of this tool. It also instructs the agent to use slots mode first to discover valid filter values rather than guessing them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_podcast_list_clipsA
Read-only
Inspect

Browse AI-extracted highlight clips across the catalog, ranked by engagement potential — the shareable moments. Filter by podcast, episode, clip type (FUNNY, CONTROVERSIAL, INSIGHTFUL, ...), minimum engagement score, or speaker — speaker takes a person slug and returns only clips of that person talking ('an insightful Sam Altman clip').

Pass clip_id for one clip's full detail (description, social-hook intro, speaker, audio URL), plus include: ["transcript"] for its dialogue.

For text-based clip discovery — finding clips about a topic or entity — use particle_podcast_search_transcripts instead: matching clips arrive inline on each search result. Episode slugs on every row feed particle_podcast_get_episode.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoClip type filter.
limitNoClips per page (1-50, default 10).
cursorNoOpaque pagination cursor from a previous response.
clip_idNoReturn one clip's full detail instead of a listing. Clip IDs come from this tool, particle_podcast_get_episode with include=clips, and search-result overlapping clips.
includeNoWith clip_id only: 'transcript' attaches the clip's dialogue transcript.
speakerNoRestrict the listing to clips whose primary speaker is this person — a person slug (e.g. 'sam-altman' from particle_person_resolve), a knowledge-graph entity slug for the same person, or an ID.
episode_slugNoRestrict the listing to one episode (slug or ID).
podcast_slugNoRestrict the listing to one podcast (slug, internal ID, or numeric iTunes ID).
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.
min_engagementNoMinimum engagement potential score (0-100). Above 70 is typical for a strong clip.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide readOnlyHint=true; the description adds meaningful behavioral context beyond that, including the engagement-ranked listing behavior, the clip_id detail mode, transcript inclusion semantics, and the practical warning that JSON output is noisier for LLM reading. No annotation contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight paragraphs front-load the core purpose, then cover the detail mode and the sibling alternative. Every sentence earns its place; no filler or redundant restating of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 10 optional parameters and no output schema, the description covers the main usage modes, filtering dimensions, pagination cursor, and routing to related tools. It could be slightly richer about what the listing rows contain beyond episode slugs, but the schema and provided detail-mode field list make it sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuinely useful semantics: speaker expects a person slug and returns only clips of that person talking, clip_id switches to detail mode, include only applies with clip_id, and output_format has LLM-facing vs programmatic tradeoffs. This goes beyond the schema's brief field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource — 'Browse AI-extracted highlight clips' — and clearly distinguishes this from text-based discovery via particle_podcast_search_transcripts. It also clarifies the detail-mode variant via clip_id, so an agent can immediately tell what the tool is for.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent when to use this tool vs alternatives: use particle_podcast_search_transcripts for topic/entity discovery, and use clip_id here for full clip detail. It also routes episode slugs to particle_podcast_get_episode, giving clear selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_podcast_list_episodesA
Read-only
Inspect

List episodes across the catalog with rich filters: by podcast, person, company, language, date range, duration, or transcript availability.

Use this for episode-level discovery when you only need metadata (title, duration, speakers, counts). For dialogue around a person in any episode, use particle_podcast_find_mentions. For ranked retrieval by topic, use particle_podcast_search_transcripts.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoRole filter when person_slug or company_slug is set.
limitNoEpisodes per page (1-50, default 10).
cursorNoOpaque pagination cursor from a previous response.
languageNoRestrict to episodes of podcasts in this language — ISO 639-1 code (e.g. 'fr'). Matches the podcast's primary language subtag, so 'fr' covers 'fr-FR'.
entity_slugNoKnowledge-graph entity slug from particle_entity_resolve for the long tail that isn't a person or company — places, organizations, events, products, concepts (e.g. 'germany'). Use person_slug for people and company_slug for companies.
person_slugNoPerson slug or encoded person ID from particle_person_resolve, particle_entity_resolve, or the guest tools (e.g. 'sam-altman'). Episodes featuring or mentioning the person.
company_slugNoCompany slug, domain, or ID. Resolves to the linked entity.
max_durationNoMaximum episode duration in seconds.
min_durationNoMinimum episode duration in seconds.
podcast_slugNoPodcast slug, internal ID, or numeric iTunes ID. Restrict to one podcast.
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.
has_transcriptNoOnly include episodes with a completed transcript.
published_afterNoISO 8601 date or date-time.
published_beforeNoISO 8601 date or date-time.

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes the safety profile, so the description does not need to restate that. The description adds useful context about scope ('across the catalog') and the kind of metadata returned ('title, duration, speakers, counts'), but it does not disclose pagination behavior, output shape, or any rate-limit considerations. This is adequate but not rich beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the first sentence states the core function and filter categories, and the second sentence gives actionable routing to alternatives. No word is wasted, and every sentence contributes either to understanding or usage. It is appropriately sized given the tool's 14 parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with no required parameters and a fully described schema, the description provides the missing high-level framing: what kind of discovery this is for, what data is returned, and which siblings to use instead. The absence of an output schema is mitigated by the explicit mention of metadata fields. An agent has enough context to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all 14 parameters thoroughly with examples, defaults, and constraints. The description merely summarizes filter categories ('podcast, person, company, language, date range, duration, or transcript availability') that are already present in the schema, adding no new semantic meaning. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'List episodes across the catalog with rich filters.' It also distinguishes itself from nearby siblings by naming particle_podcast_find_mentions and particle_podcast_search_transcripts as alternatives for different needs. An agent can immediately understand what this tool does and how it differs from similar tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage context: 'Use this for episode-level discovery when you only need metadata.' It also provides clear when-not-to-use guidance by pointing to particle_podcast_find_mentions for dialogue around a person and particle_podcast_search_transcripts for ranked retrieval by topic. This is direct routing to alternatives, not just vague context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_podcast_list_guestsA
Read-only
Inspect

Browse podcast guests across the catalog, in two opinionated modes:

  • directory (default): the guest directory ranked by lifetime appearances (guests with 2+ appearances).

  • trends: who's making the rounds right now — guests with appearances on 2+ distinct podcasts in the last 30 days, which surfaces cross-show press tours rather than show regulars. The press-tour shape is enforced: every in-window appearance must be on a different podcast, each needs 5+ minutes of identified speaking time, mononymous catch-all people are excluded, and the in-window rate must be a 2x spike over the guest's lifetime baseline.

podcast_slug switches the directory to one show's roster: every guest who has appeared on that podcast, ranked by appearances on the show (one-off guests included). topic_slug narrows either corpus mode to guests appearing on episodes about that topic. Guest slugs ARE person slugs — feed them into particle_podcast_get_guest for the appearance profile or particle_person_get for the person profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoWhat to return. 'directory' (default): the guest directory ranked by lifetime appearances. 'trends': guests trending right now — appearances on 2+ distinct podcasts in the last 30 days (cross-show press tours, not regulars).
limitNoGuests per page (1-50, default 20).
cursorNoOpaque pagination cursor from a previous response.
topic_slugNoRestrict to guests with appearances on episodes classified under this topic (slug from particle_topic_browse, e.g. 'technology/artificial-intelligence'). Ignored when podcast_slug is set.
podcast_slugNoReturn one show's guest roster instead of the corpus directory: every guest who has appeared on this podcast, ranked by appearances on the show (no lifetime-appearance floor). Slug from particle_podcast_resolve. Only valid with the default directory mode.
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, but the description discloses far richer behavior: the 2+ appearance floor in directory mode, the exact press-tour shape in trends mode (distinct podcasts, 5+ minutes speaking time, mononymous exclusions, 2x spike over baseline), and the one-off guest inclusion when podcast_slug is used. This goes well beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but information-dense, front-loaded with the core purpose and then structured as two clear mode bullets. Subsequent sentences explain parameter interactions and downstream tool usage. Every sentence adds value, though the trends bullet is slightly verbose and could be trimmed without losing essential criteria.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex, multi-mode tool with two enums, four optional filters, and no output schema, the description covers all essential behavior: default mode, mode-specific thresholds, parameter combinations (podcast_slug switching to a show roster, topic_slug narrowing), and the read-only nature. The only omitted specifics, like podcast_slug being ignored in trends mode, are already present in the schema parameter descriptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful context for mode, podcast_slug, and topic_slug, including how they interact and what changes in each mode. It also explains the intent behind output_format's markdown vs json distinction. It does not repeat trivial details for limit/cursor, which is acceptable given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Browse podcast guests across the catalog' — a specific verb and resource — and immediately distinguishes two modes, directory and trends. It clearly differentiates this from sibling tools like particle_podcast_get_guest (which focuses on a single guest) and podcast list tools for episodes/clips by centering on guests across the catalog or one show.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance on when to use each mode: directory for lifetime rankings, trends for cross-show press tours with defined criteria. It also advises feeding guest slugs into particle_podcast_get_guest or particle_person_get, showing downstream routing. It does not explicitly contrast with all sibling list tools, but the mode selection and parameter constraints are clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_podcast_resolveA
Read-only
Inspect

Find a podcast by free-text title, exact slug, iTunes ID, or RSS feed URL. Returns slug, title, episode count, bias, and the top recurring speakers (with entity slugs). Use the slug as the agent-facing handle to feed into other podcast tools (particle_podcast_find_mentions, particle_podcast_list_episodes, particle_podcast_get_sponsors).

Free-text matching is forgiving — typos, missing or extra words, and pasted episode titles all work. Results are ordered best-match-first; text matches carry a match_quality field, and an empty list means the catalog has no plausible candidate.

With all identifiers omitted, returns the most recently updated podcasts — useful for browsing the catalog when you don't have a name in mind. Narrow free-text browsing with topic_slug (topic concentration, descendants included), suitability_tier, or min_popularity (global popularity percentile over charting podcasts).

Optional hydrations attach extra data to each result in the same call:

  • include: ["external_links"]: third-party platform presences (directories, social profiles, video channels, publisher websites) with resolved URLs and audience metrics.

  • include: ["suitability"]: per-category brand-suitability breakdown (12 categories with prevalence, treatment, derived risk level, reasoning, and evidence excerpts) — premium-grade data, requires a plan with premium endpoints. The high-level suitability_tier enum (SAFE / LIMITED / SENSITIVE / UNSAFE) is rendered on every result without opt-in.

  • include: ["ratings_summary"]: listener-review aggregate (average stars, count, per-platform breakdown).

  • include: ["bias"]: full political-bias analysis (the high-level bias enum is always rendered without opt-in).

  • include: ["rankings"]: current chart positions across sources/countries/categories — premium-grade data, requires a plan with premium endpoints. For movers and history use particle_podcast_get_rankings.

  • include: ["format"]: the show's format profile — how often episodes feature guests, detected production formats (interview, panel, call_in, solo_narrated), ad and video presence, episode-length distribution, publishing cadence, and the publish-day pattern.

  • recent_episodes: N: inline this many of each result's most recent episodes (slug, title, published_at, duration) — skip the follow-up particle_podcast_list_episodes call when you only need the most recent tail.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoExact slug match for a known handle (e.g. 'all-in').
limitNoMaximum candidates to return (1-25, default 5).
queryNoFree-text search across podcast titles and descriptions (case-insensitive partial match). Omit to fall back to the most recently updated podcasts.
includeNoOptional non-parameterized hydrations to attach to each result. 'external_links' adds third-party platform presences (directories, social profiles, video channels, publisher websites). 'suitability' adds the per-category brand-suitability breakdown (premium-grade data — requires a plan with premium endpoints). 'ratings_summary' adds the listener-review aggregate. 'bias' adds the full political-bias analysis. 'rankings' adds current chart positions (premium-grade data — requires a plan with premium endpoints). 'format' adds the format profile (guest frequency, interview/panel/call-in/solo formats, ads, video, episode length, cadence, publish days). 'related' adds the five most related shows (slug, score, band) — for the full ranked list with the basis behind each pair call particle_podcast_list_related. 'recommended_guests' adds the five guests the show could book next — people who have guested on its related shows but never on it (person slug, score, band, and the related shows that booked them); the booking pipeline. 'recommended_sponsors' adds the five advertisers the show could pitch — sponsors that run on its related shows but not on it (sponsor, linked company, score, band, ads and most recent ad across those shows, and which shows); the prospecting list (premium-grade data — requires a plan with premium endpoints). The high-level suitability_tier and bias enums are always rendered without opt-in. Off by default; opt in only when needed.
rss_urlNoCanonical RSS feed URL. Resolves directly to the matching podcast.
itunes_idNoNumeric Apple Podcasts / iTunes ID (e.g. '1502871393'). Resolves directly to the matching podcast.
topic_slugNoFilter candidates by topic (slug from particle_topic_browse, e.g. 'technology/artificial-intelligence'). Matches podcasts where the topic — or any of its descendants — accounts for a meaningful share of episodes, ranked by concentration.
min_popularityNoRestrict candidates to podcasts whose global popularity percentile is at least this value (0-1]. Popularity is a cume_dist ranking over currently-charting podcasts; non-charting podcasts are excluded when set. Omit or 0 to disable.
recent_episodesNoInline this many of each result's most recent episodes (slug, title, published_at, duration). 0 (default) means none — call particle_podcast_list_episodes if you need more than the inline tail. Capped at 25.
suitability_tierNoFilter candidates by brand-suitability tier. Podcasts without a suitability analysis are excluded when set.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description reveals important behavior: forgiving free-text matching, best-match-first ordering, the match_quality marker, empty-list semantics, the recently-updated fallback when no identifiers are provided, and premium-endpoint requirements for certain hydrations. It also clarifies that high-level bias and suitability enums are always returned without opt-in. No contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and return fields, then organized into scannable bullets for hydrations. It is fairly long, but the complexity of 10 optional parameters and 7 include options justifies the length. Some redundancy with the schema's include descriptions keeps it from being maximally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema, the description carries the burden of explaining return behavior and does so thoroughly: lookup modes, returned fields, matching tolerance, empty-list meaning, browsing mode, filters, hydration options, premium-plan caveats, and downstream tool usage. Minor gaps like error behavior for invalid exact identifiers do not undermine selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes all 10 parameters in detail (100% coverage), so the baseline is 3. The description adds some extra parameter-selection guidance, such as the all-identifiers-omitted browsing mode, the agent-facing slug handle, and grouping topic_slug/suitability_tier/min_popularity as narrowing filters. However, much of the hydration detail repeats the schema, so it does not reach a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific lookup verb and resource: 'Find a podcast by free-text title, exact slug, iTunes ID, or RSS feed URL.' It also states the returned payload (slug, title, episode count, bias, recurring speakers) and positions the slug as the handle for downstream podcast tools, making its role distinct from the other resolve-type siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool for identifier-based lookup, when to browse by omitting identifiers, and how to narrow browsing via topic_slug, suitability_tier, or min_popularity. It explicitly routes follow-up work to sibling tools, e.g. using particle_podcast_get_rankings for movers/history, particle_podcast_list_episodes for more episodes, and particle_podcast_find_mentions/list_episodes/get_sponsors once a slug is resolved.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_podcast_search_transcriptsA
Read-only
Inspect

Search the podcast catalog by what is said in episodes — by meaning (semantic_search), by exact phrase (keyword_search), or both at once (hybrid ranking). This is THE way to retrieve relevant dialogue, segments, and clips: each result is one segment of one episode with bounded transcript windows pinpointing the highest-relevance lines, plus any highlight clips that overlap the segment inline on the match.

Segments partition an episode's transcript — where start_line and end_line are present, every spoken line belongs to exactly one segment and one segment's end_line + 1 is the next one's start_line. They are contiguous in transcript lines, not in wall-clock seconds: the seconds between one segment's end_seconds and the next's start_seconds contain no transcribed speech. These matches do not carry the line ranges themselves — fetch them with particle_podcast_get_episode and include: ["segments"], where their absence marks an episode segmented by an earlier version, a small share of which do leave lines uncovered. Clips are sparse, engagement-ranked highlights that overlap some segments. There is no separate clip-search tool — relevant clips arrive on these matches, and a known episode's full clip list is particle_podcast_get_episode with include: ["clips"].

A match window defaults to one line of context around each matched line; raise context to widen windows in place instead of fetching the full transcript.

Use this for "find dialogue about a topic". For "every line naming a person or company" use particle_podcast_find_mentions instead — person_slug and company_slug here narrow ranked results, they don't drive the ranking.

Choosing your query. At least one of semantic_search or keyword_search is required, and they do different jobs:

  • semantic_search carries the idea. Write it as a sentence describing what should be discussed, in the vocabulary a speaker would use. It is paraphrase-tolerant, so it finds the topic however it happens to be worded.

  • keyword_search carries words that must be literally spoken. Every word must occur in the same passage, so it is for one or two exact tokens — a ticker, a product name — not for a description. Putting a sentence here returns nothing.

  • Use both when a topic must also contain an exact term. The result is their intersection, which is narrow by design; if that comes back empty, keyword_match: "ranked" relaxes the keyword side to a relevance hint.

Do not put a name in semantic_search. Resolve it (particle_person_resolve, particle_company_resolve, particle_entity_resolve) and pass the slug — searching for "Sam Altman" as text finds passages that sound like him, while person_slug finds the episodes actually featuring him.

Start broad, then narrow. Every filter compounds, and each one can silently remove all results. Issue the query with semantic_search alone first, then add filters once you know the topic has coverage. If a search returns nothing because of your filters, the error names the specific parameter responsible and the retry to make — act on it rather than re-issuing variations of the same query.

Note on role. It describes how someone relates to the episode: guest/host/panelist/correspondent mean they spoke, mention means they were talked about. Omitting role covers both and is almost always what you want.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoHow the entity must relate to the episode. Speaking roles: 'guest', 'host', 'panelist', 'correspondent', or 'speaker' for any of them. 'mention' means the entity is talked about rather than speaking. Omit to match both — usually what you want.
sortNoSort order. Defaults to relevance.
limitNoResults per page (1-50, default 10).
sinceNoOnly segments from episodes published on or after this ISO 8601 date.
untilNoOnly segments from episodes published on or before this ISO 8601 date.
cursorNoOpaque pagination cursor from a previous response.
contextNoLines of surrounding dialogue around each matched line (1-15, default 1). Widens each match window in place — use a larger value instead of fetching the full transcript when a match needs more context.
languageNoRestrict to episodes of podcasts in this language — ISO 639-1 code (e.g. 'fr'). Matches the podcast's primary language subtag, so 'fr' covers 'fr-FR'.
entity_slugNoKnowledge-graph entity slug from particle_entity_resolve for the long tail that isn't a person or company — places, organizations, events, products, concepts (e.g. 'germany'). Use person_slug for people and company_slug for companies.
entity_typeNoNarrow to dialogue in episodes that mention any entity of this category — e.g. 'book', 'company', 'movie', 'school'. Use for 'discussions of X that reference some book'. Ignored when person_slug/company_slug/entity_slug names a specific entity, which is strictly narrower. Categories come from particle_catalog.
person_slugNoPerson slug or encoded person ID from particle_person_resolve, particle_entity_resolve, or the guest tools (e.g. 'sam-altman'). Filters results to dialogue featuring this person. For 'every line about X' use particle_podcast_find_mentions instead.
company_slugNoCompany slug, domain, or ID. Resolves to the company's linked entity and applies as a filter.
episode_slugNoFilter to a specific episode by slug or ID.
podcast_slugNoPodcast slug, internal ID, or numeric iTunes ID.
segment_typeNoSegment type filter.
keyword_matchNoHow UNQUOTED keyword_search words are applied. 'required' (default) excludes any passage missing one of them, which also makes a hybrid call an intersection with semantic_search. Switch to 'ranked' when keyword_search is a loose bag of related words that will not co-occur — then those words only steer relevance. Quoted phrases still filter in both modes: to relax a phrase, remove its quotes rather than switching mode.
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.
keyword_searchNoWords that must literally be spoken. Use for exact tokens a paraphrase would miss — tickers, product names, drug names, model numbers. Every word must appear in the same passage (see keyword_match), so keep it to the one or two words that must be said and put the rest of the idea in semantic_search. Wrap words in double quotes to also require them adjacent and in order in the segment's spoken dialogue — only for short exact strings, never for a sentence. A quoted name matches segments where the name appears in the dialogue, not segments that person speaks in; use person_slug or particle_podcast_find_mentions for a person's appearances. There is no boolean OR: 'a OR b' requires the literal word 'OR', so issue one call per alternative.
semantic_searchNoVector-similarity search by meaning. Express the query the way you'd describe the topic to a colleague — paraphrase tolerant. Combine with keyword_search for hybrid ranking. Describe a topic, not a name: to find a specific person/company/entity, filter with person_slug / company_slug / entity_slug (or use particle_podcast_find_mentions for every line about them) — and for an exact token like a ticker, use keyword_search.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, so the description carries the full burden of behavioral disclosure. It delivers substantial detail: segment contiguity and partition semantics, match-window context defaults, how `keyword_match: "ranked"` relaxes the keyword side, how `role` distinguishes speaking vs mentioned entities, the difference between `output_format` modes, and even error behavior ('the error names the specific parameter responsible'). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured: it front-loads the core purpose, uses bolded section headers ('Choosing your query', 'Start broad', 'Note on role'), and organizes parameter guidance coherently. There is minor redundancy with the schema (e.g., `context` and `output_format` described in both places), but no wasted filler; the length is justified by the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 19 parameters and no output schema, the description is unusually complete. It covers the shape of results (segments + clips), how segments map to transcript lines, how to get full segment line ranges via `particle_podcast_get_episode`, the closed interplay between search modes, filter compounding risks, pagination behavior is left to schema but search strategy is fully explained. An agent has enough context to call this tool correctly in most scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description significantly enriches parameter meaning. It explains that `semantic_search` carries the idea while `keyword_search` requires literally spoken words, warns against putting names in `semantic_search`, clarifies quoted phrases, and explains `keyword_match`, `role`, `context`, and `output_format` in ways the schema does not. This materially improves correct parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Search the podcast catalog by what is said in episodes,' and clearly defines the three search modes and the unit of output ('one segment of one episode with bounded transcript windows... plus any highlight clips'). It also names the sibling alternative `particle_podcast_find_mentions`, so an agent can distinguish this tool from related ones without reading schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage guidance is explicit and actionable: 'Use this for "find dialogue *about* a topic". For "every line *naming* a person or company" use `particle_podcast_find_mentions` instead.' It also routes segment/clip retrieval to `particle_podcast_get_episode`, states 'There is no separate clip-search tool,' and gives a clear query workflow ('Start broad, then narrow'). This goes well beyond implied usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

particle_topic_browseA
Read-only
Inspect

Navigate the topic taxonomy. Without parent_slug, returns the top-level roots (Politics, Business, Technology, etc.). With parent_slug set, returns the direct children of that topic. Topic slugs use a parent/child convention (e.g. politics/elections) and let agents browse the hierarchy to find well-named categories.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoTopics per page (1-100, default 50).
cursorNoOpaque pagination cursor from a previous response.
parent_slugNoTopic slug or ID. Returns the direct children of this topic. Omit for top-level roots (Politics, Business, Technology, etc.).
output_formatNoOutput serialization. 'markdown' (default) returns the LLM-facing rendering. 'json' returns the structured payload as JSON text — use only for programmatic chaining where exact field extraction matters; the JSON shape is larger and noisier for an LLM to read.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true covering the safety profile, the description adds meaningful behavioral context: it lists top-level examples, states 'direct children,' and explains the parent/child slug convention. It doesn't address pagination or malformed parent_slug, but those are not critical for a read-only browse operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences front-load the purpose and then give the two modes and the slug convention with no filler. The final purpose clause is a minor echo of 'navigate,' but it is short and does not hurt clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, zero-required-parameter browse tool, the description covers the core behavior and invocation modes; the schema handles limit, cursor and output_format. No output schema exists, but the output_format parameter description already explains the markdown/JSON distinction, so the agent has what it needs to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the slug convention ('parent/child' and the example politics/elections) and how parent_slug selects a level, going slightly beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Navigate the topic taxonomy') and precisely defines behavior for both invocation modes: top-level roots without parent_slug, direct children with parent_slug. This clearly distinguishes it from the unrelated alert/podcast/person siblings around it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear, explicit context for when to call: to browse or locate well-named topic categories, with parameter-dependent modes. It names no alternative or exclusion, but no sibling tool offers the same hierarchy-browse role, so a 4 is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedparticle_company_get2 fields changed
      • changedInput schema / properties / include / description
        Previous value: -"Optional response sections: 'people' (current leadership and notable people), 'products' (three-level product hierarchy), 'competitors' (competitor list), 'podcast_recommendations' (the ten podcasts the company could advertise on next, with the shows it already buys that led there; premium). Default response is lean — request only what you need."New value: +"Optional response sections: 'people' (current leadership and notable people), 'products' (three-level product hierarchy), 'competitors' (competitor list), 'podcast_recommendations' (the ten podcasts the company could advertise on next, with the shows it already buys that led there; premium), 'external_links' (LinkedIn, social profiles, domain, Wikidata QID, SEC CIK and tickers). Default response is lean — request only what you need."
      • changedInput schema / properties / include / items / enum
        Previous value: -[
        -  "people",
        -  "products",
        -  "competitors",
        -  "podcast_recommendations"
        -]New value: +[
        +  "people",
        +  "products",
        +  "competitors",
        +  "podcast_recommendations",
        +  "external_links"
        +]
  2. 28 tool updates
    • First observedparticle_alert_create
    • First observedparticle_alert_delete
    • First observedparticle_alert_get
    • First observedparticle_alert_list
    • First observedparticle_alert_list_matches
    • First observedparticle_alert_preview
    • First observedparticle_alert_update
    • First observedparticle_call
    • First observedparticle_catalog
    • First observedparticle_company_get
    • First observedparticle_company_resolve
    • First observedparticle_entity_get
    • First observedparticle_entity_resolve
    • First observedparticle_person_get
    • First observedparticle_person_resolve
    • First observedparticle_podcast_find_mentions
    • First observedparticle_podcast_get_episode
    • First observedparticle_podcast_get_episode_timeseries
    • First observedparticle_podcast_get_guest
    • First observedparticle_podcast_get_rankings
    • First observedparticle_podcast_list_clips
    • First observedparticle_podcast_list_episodes
    • First observedparticle_podcast_list_guests
    • First observedparticle_podcast_list_related
    • First observedparticle_podcast_list_related_episodes
    • First observedparticle_podcast_resolve
    • First observedparticle_podcast_search_transcripts
    • First observedparticle_topic_browse

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources