# Particle API > Podcast intelligence — podcasts, episodes, transcripts, guests, chart rankings, advertising, listener ratings, and political-bias and brand-suitability analytics — alongside company and people data and a topic taxonomy, exposed as one connected knowledge graph through a REST API and an MCP server. REST API: `https://api.particle.pro`, data endpoints under `/v1/`. MCP server: `https://mcp.particle.pro`, Streamable HTTP. Setting a client up: https://api.particle.pro/agents.md. Page index of the documentation: https://docs.particle.pro/llms.txt. ## Authentication - **API key.** `X-API-Key: pp_…` (or `Authorization: Bearer pp_…`) on REST requests that require authentication (the free endpoints below take none; the alert landing endpoints return more to a member's key), and on MCP for headless agents. A signed-in person creates keys at https://platform.particle.pro/tokens; each is shown once. A missing, mistyped, revoked, or expired key returns 401 `api_key_required`. - **OAuth 2.1 (MCP, interactive clients).** Point the client at `https://mcp.particle.pro`; it registers, opens the browser for approval, and refreshes tokens itself. Access tokens are bound to the MCP server and are not accepted by the REST API. Recipe: https://api.particle.pro/auth.md - **x402 (no account).** A keyless request to a billable endpoint returns `402` with the USDC payment terms (Base) in `PAYMENT-REQUIRED`; sign the transfer and retry with `PAYMENT-SIGNATURE`. The prices below are per call; a request that fails is never charged. https://docs.particle.pro/x402.md ## Instructions for LLM agents - **Pick the right surface.** Building an agent loop (Claude Code, Cursor, Codex, ChatGPT, a custom MCP client)? Use the MCP server at `https://mcp.particle.pro` — slug-first inputs, bundled responses, markdown output. Building a service (server-to-server, scheduled jobs)? Use the REST API at `https://api.particle.pro` with an API key — typed JSON, OpenAPI schema. Building a frontend? Route calls through your own backend so the API key stays server-side — never embed keys in browser or mobile code. Connecting a client for someone? Follow `https://api.particle.pro/agents.md`. The endpoint and tool map with per-call prices is `https://api.particle.pro/llms.txt`. - **No API key? Pay per request.** Every billable REST endpoint and `POST /mcp` accept an x402 USDC micropayment (Base) in place of a credential: a keyless call returns `402` with the payment requirements in the `PAYMENT-REQUIRED` header; sign the transfer and retry with `PAYMENT-SIGNATURE`, and the receipt comes back in `PAYMENT-RESPONSE`. Each REST call and each MCP `tools/call` costs its per-call price, a whole number of cents from $0.01 (MCP `initialize` and `tools/list` are free, and `particle_catalog` lists every tool with its price); a request whose every call fails is never charged, while a batch with any successful call settles in full. Free endpoints stay free; alerts and enterprise surfaces still need an account. Sending any credential — even an invalid one — takes the normal auth path instead. Discovery: `/.well-known/x402` and `/.well-known/x402.json` on api.particle.pro and mcp.particle.pro list the payable endpoints and terms; every payable operation in https://api.particle.pro/openapi.json carries `x-payment-info` and a `402` response; each 402 carries a Bazaar declaration, so the endpoints are searchable in the Coinbase x402 Bazaar. See https://docs.particle.pro/x402.md. - **Tools are lean by default and expand.** Most MCP tools 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 a `mode`/`format` switch — a tool does far more than its name implies. Check the tool's input schema before assuming a capability is missing. - **Responses form a graph; slugs are edges.** A slug a tool returns (person, company, podcast, episode, publisher, guest) is a valid input to the other tools. Resolve a free-text name once (`particle_entity_resolve`, `particle_person_resolve`, `particle_company_resolve`, `particle_podcast_resolve`), then traverse: company → its people → a person's podcast appearances → that episode's transcript and the entities named in it. Never guess or fabricate a slug — resolve it. Slugs are short handles Particle assigns, not names slugified: 20VC is `the-twenty-minute-vc`, Lenny's Podcast is `lennys`, All-In is `all-in`. Take them from responses; a constructed slug returns 404, and trying other spellings never resolves it. A podcast slug is not an episode id: list the show's episodes to get one. - **Choose search by intent.** `particle_podcast_search_transcripts` finds dialogue *about* a topic (semantic, keyword, or hybrid; relevant clips arrive inline on matches). `particle_podcast_find_mentions` finds lines *naming* a resolved entity — a person, company, or any other resolvable slug (places, organizations, events, concepts) — its default `format="summary"` previews the first ~10 mention lines per episode for scanning; call back with `format="detail"` and an `episode_slug` for an episode's complete mention set with context. `particle_podcast_list_episodes` is filter-driven episode discovery (podcast, person, company, language, date, duration). Don't put an entity name in `semantic_search` — that's a topic field; resolve the name and pass it as a `person_slug`/`company_slug`/`entity_slug` filter, or use `particle_podcast_find_mentions`. For "how often over time" questions, use `particle_podcast_get_episode_timeseries` instead of paging search or mentions once per period. For "shows like this show", use `particle_podcast_list_related` (add `include: ["basis"]` for the reasons) or `include: ["related"]` on `particle_podcast_resolve` — not a topic or semantic search; for "who else covered this episode", `particle_podcast_list_related_episodes` or `include: ["related"]` on `particle_podcast_get_episode`. For where a guest could appear next, use `include: ["recommended_podcasts"]` on `particle_podcast_get_guest`; for who a show could book, `include: ["recommended_guests"]` on `particle_podcast_resolve`; for advertisers a show could pitch, `include: ["recommended_sponsors"]` on `particle_podcast_resolve` (premium). Within a search, `semantic_search` carries the idea (a sentence, paraphrase-tolerant) while `keyword_search` carries words that must be literally spoken — every word must occur in the same passage, so keep it to one or two exact tokens and never put a sentence there; `keyword_match="ranked"` relaxes it to a relevance hint. Add filters only after a broad query shows the topic has coverage: when filters empty a search, the error names the parameter responsible and the retry to make, so act on it rather than re-issuing variations. - **Most tools are read-only; the `particle_alert_*` tools are the writable exception.** They create and manage alerts that each watch a single entity for podcast mentions or speaker appearances, and they act on the one project your credential is scoped to — no project parameter, no way to reach another project's alerts. Resolve a name to a slug, optionally preview match frequency with `particle_alert_preview`, then `particle_alert_create` to start watching it. Alerts accept a persistent `filters` object on create and update — narrow what gets surfaced by language, relevance (`EVERYTHING`|`RELEVANT`), source popularity (`ANY`|`POPULAR`), and (for `PODCAST_SPEAKER` alerts) `speaker_roles`. `particle_alert_create`/`particle_alert_update` mutate and `particle_alert_delete` is a destructive soft delete. - **Discovery is free; execution is metered.** A bare connection advertises the default categories, but every public tool is callable by name. `particle_catalog` (free) lists every category and tool with expand options, plus full input schemas per category; opt-in categories advertise on `tools/list` via the MCP URL, e.g. `?include=podcast_advertising,podcast_publishers,podcast_ratings,podcast_bias,podcast_suitability` (use these canonical tokens — unknown values are silently ignored). - **Errors course-correct.** Tool errors lead with a stable `**Error code:** ` line and a suggestion naming the next call (404 → re-resolve the slug; 400/422 → check the schema via `particle_catalog`). REST errors are RFC 9457 `application/problem+json` with a stable `error_code` and, when there is a self-service fix, a `resolve` object naming the action, URL, method, and endpoint; a 404 on a slug means re-resolve it, a 422 names the parameter at fault, and a 429 carries `Retry-After`. Follow the suggestion instead of blind-retrying, and never retry-loop an `internal_error`. - **Reading these docs?** Append `.md` to any docs URL for raw markdown (e.g. `https://docs.particle.pro/mcp/overview.md`), fetch the entire corpus from `https://docs.particle.pro/llms-full.txt`, or start from the page index at `https://docs.particle.pro/llms.txt`. ## REST endpoints Grouped by resource. Each line: the documentation page, the operation, the pricing tier, and the keyless x402 price where the endpoint is payable per request; keyed calls meter to the organization's plan instead. Base URL `https://api.particle.pro`. Schema: https://api.particle.pro/openapi.json. ### Podcasts - [List and search podcasts](https://docs.particle.pro/api-reference/podcasts/list-and-search-podcasts): `GET /v1/podcasts` — standard tier, x402 $0.01 per call - [Search podcasts](https://docs.particle.pro/api-reference/podcasts/search-podcasts): `GET /v1/podcasts/search` — standard tier, x402 $0.01 per call - [List podcast topics](https://docs.particle.pro/api-reference/podcasts/list-podcast-topics): `GET /v1/podcasts/topics` — standard tier, x402 $0.03 per call - [Look up podcasts by external platform identifier](https://docs.particle.pro/api-reference/podcasts/look-up-podcasts-by-external-platform-identifier): `GET /v1/podcasts/lookup` — standard tier, x402 $0.01 per call - [Get a podcast](https://docs.particle.pro/api-reference/podcasts/get-a-podcast): `GET /v1/podcasts/{id}` — standard tier, x402 $0.01 per call - [List episodes for a podcast](https://docs.particle.pro/api-reference/podcasts/list-episodes-for-a-podcast): `GET /v1/podcasts/{id}/episodes` — standard tier, x402 $0.03 per call - [List entity mentions in a podcast](https://docs.particle.pro/api-reference/podcasts/list-entity-mentions-in-a-podcast): `GET /v1/podcasts/{id}/mentions` — standard tier, x402 $0.03 per call - [Get podcast advertising profile](https://docs.particle.pro/api-reference/podcasts/get-podcast-advertising-profile): `GET /v1/podcasts/{id}/advertising` — premium tier, x402 $0.03 per call - [List sponsors a podcast could pitch](https://docs.particle.pro/api-reference/podcasts/list-sponsors-a-podcast-could-pitch): `GET /v1/podcasts/{id}/recommendations/sponsors` — premium tier, x402 $0.03 per call - [Get a podcast's format profile](https://docs.particle.pro/api-reference/podcasts/get-a-podcasts-format-profile): `GET /v1/podcasts/{id}/format` — standard tier, x402 $0.03 per call - [List related podcasts](https://docs.particle.pro/api-reference/podcasts/list-related-podcasts): `GET /v1/podcasts/{id}/related` — standard tier, x402 $0.03 per call - [Get a podcast's latest bias analysis](https://docs.particle.pro/api-reference/podcasts/get-a-podcasts-latest-bias-analysis): `GET /v1/podcasts/{id}/bias` — standard tier, x402 $0.03 per call - [Get a podcast's latest brand suitability assessment](https://docs.particle.pro/api-reference/podcasts/get-a-podcasts-latest-brand-suitability-assessment): `GET /v1/podcasts/{id}/suitability` — premium tier, x402 $0.04 per call - [List a podcast's third-party platform presences](https://docs.particle.pro/api-reference/podcasts/list-a-podcasts-third-party-platform-presences): `GET /v1/podcasts/{id}/external-links` — standard tier, x402 $0.04 per call - [Get podcast catalog statistics](https://docs.particle.pro/api-reference/podcasts/get-podcast-catalog-statistics): `GET /v1/podcasts/stats` — free, no credential needed ### Podcast Episodes - [List episodes](https://docs.particle.pro/api-reference/podcast-episodes/list-episodes): `GET /v1/podcasts/episodes` — standard tier, x402 $0.01 per call - [Poll the episode feed](https://docs.particle.pro/api-reference/podcast-episodes/poll-the-episode-feed): `GET /v1/podcasts/episodes/feed` — standard tier, x402 $0.01 per call - [Get episode timeseries](https://docs.particle.pro/api-reference/podcast-episodes/get-episode-timeseries): `GET /v1/podcasts/episodes/timeseries` — standard tier, x402 $0.01 per call - [Look up episodes by external identifier](https://docs.particle.pro/api-reference/podcast-episodes/look-up-episodes-by-external-identifier): `GET /v1/podcasts/episodes/lookup` — standard tier, x402 $0.01 per call - [Get an episode](https://docs.particle.pro/api-reference/podcast-episodes/get-an-episode): `GET /v1/podcasts/episodes/{id}` — standard tier, x402 $0.01 per call - [List speakers in an episode](https://docs.particle.pro/api-reference/podcast-episodes/list-speakers-in-an-episode): `GET /v1/podcasts/episodes/{id}/speakers` — standard tier, x402 $0.03 per call - [List entities in an episode](https://docs.particle.pro/api-reference/podcast-episodes/list-entities-in-an-episode): `GET /v1/podcasts/episodes/{id}/entities` — standard tier, x402 $0.03 per call - [List topics for an episode](https://docs.particle.pro/api-reference/podcast-episodes/list-topics-for-an-episode): `GET /v1/podcasts/episodes/{id}/topics` — standard tier, x402 $0.03 per call - [List related episodes](https://docs.particle.pro/api-reference/podcast-episodes/list-related-episodes): `GET /v1/podcasts/episodes/{id}/related` — standard tier, x402 $0.03 per call - [List ads in an episode](https://docs.particle.pro/api-reference/podcast-episodes/list-ads-in-an-episode): `GET /v1/podcasts/episodes/{id}/ads` — premium tier, x402 $0.03 per call - [Stream episodes](https://docs.particle.pro/api-reference/podcast-episodes/stream-episodes): `GET /v1/podcasts/episodes/stream` — Enterprise plan - [Stream episodes (POST)](https://docs.particle.pro/api-reference/podcast-episodes/stream-episodes-post): `POST /v1/podcasts/episodes/stream` — Enterprise plan ### Podcast Episode Search - [Search podcast episode content](https://docs.particle.pro/api-reference/podcast-episode-search/search-podcast-episode-content): `GET /v1/podcasts/episodes/search` — standard tier, x402 $0.03 per call - [Get mention timeseries](https://docs.particle.pro/api-reference/podcast-episode-search/get-mention-timeseries): `GET /v1/podcasts/mentions/timeseries` — standard tier, x402 $0.04 per call - [Search podcast dialogue for entity mentions](https://docs.particle.pro/api-reference/podcast-episode-search/search-podcast-dialogue-for-entity-mentions): `GET /v1/podcasts/mentions` — standard tier, x402 $0.04 per call ### Podcast Transcripts - [Get episode transcript](https://docs.particle.pro/api-reference/podcast-transcripts/get-episode-transcript): `GET /v1/podcasts/episodes/{id}/transcript` — standard tier, x402 $0.03 per call - [Get word-level transcript](https://docs.particle.pro/api-reference/podcast-transcripts/get-word-level-transcript): `GET /v1/podcasts/episodes/{id}/transcript/words` — standard tier, x402 $0.03 per call - [Get a transcript excerpt around a moment](https://docs.particle.pro/api-reference/podcast-transcripts/get-a-transcript-excerpt-around-a-moment): `GET /v1/podcasts/episodes/{id}/transcript/preview` — standard tier, x402 $0.01 per call - [Get segment transcript](https://docs.particle.pro/api-reference/podcast-transcripts/get-segment-transcript): `GET /v1/podcasts/segments/{id}/transcript` — standard tier, x402 $0.03 per call - [Get clip transcript](https://docs.particle.pro/api-reference/podcast-transcripts/get-clip-transcript): `GET /v1/podcasts/clips/{id}/transcript` — standard tier, x402 $0.03 per call - [Get entity mentions in transcript](https://docs.particle.pro/api-reference/podcast-transcripts/get-entity-mentions-in-transcript): `GET /v1/podcasts/episodes/{id}/transcript/mentions` — standard tier, x402 $0.03 per call ### Podcast Segments - [List segments](https://docs.particle.pro/api-reference/podcast-segments/list-segments): `GET /v1/podcasts/segments` — standard tier, x402 $0.01 per call - [Get a segment](https://docs.particle.pro/api-reference/podcast-segments/get-a-segment): `GET /v1/podcasts/segments/{id}` — standard tier, x402 $0.01 per call - [List segments for an episode](https://docs.particle.pro/api-reference/podcast-segments/list-segments-for-an-episode): `GET /v1/podcasts/episodes/{id}/segments` — standard tier, x402 $0.03 per call ### Podcast Clips - [List clips](https://docs.particle.pro/api-reference/podcast-clips/list-clips): `GET /v1/podcasts/clips` — standard tier, x402 $0.03 per call - [Get a clip](https://docs.particle.pro/api-reference/podcast-clips/get-a-clip): `GET /v1/podcasts/clips/{id}` — standard tier, x402 $0.03 per call - [List clips for an episode](https://docs.particle.pro/api-reference/podcast-clips/list-clips-for-an-episode): `GET /v1/podcasts/episodes/{id}/clips` — standard tier, x402 $0.01 per call ### Podcast Guests - [List podcast guests](https://docs.particle.pro/api-reference/podcast-guests/list-podcast-guests): `GET /v1/podcasts/guests` — standard tier, x402 $0.03 per call - [Get a podcast guest profile](https://docs.particle.pro/api-reference/podcast-guests/get-a-podcast-guest-profile): `GET /v1/podcasts/guests/{id}` — standard tier, x402 $0.03 per call - [List appearances for a podcast guest](https://docs.particle.pro/api-reference/podcast-guests/list-appearances-for-a-podcast-guest): `GET /v1/podcasts/guests/{id}/appearances` — standard tier, x402 $0.03 per call - [List podcasts a guest has appeared on](https://docs.particle.pro/api-reference/podcast-guests/list-podcasts-a-guest-has-appeared-on): `GET /v1/podcasts/guests/{id}/podcasts` — standard tier, x402 $0.04 per call - [List the guest roster for a podcast](https://docs.particle.pro/api-reference/podcast-guests/list-the-guest-roster-for-a-podcast): `GET /v1/podcasts/{id}/guests` — standard tier, x402 $0.03 per call - [List podcasts a guest could plausibly appear on next](https://docs.particle.pro/api-reference/podcast-guests/list-podcasts-a-guest-could-plausibly-appear-on-next): `GET /v1/podcasts/guests/{id}/recommendations/podcasts` — standard tier, x402 $0.03 per call - [List guests a podcast could plausibly book](https://docs.particle.pro/api-reference/podcast-guests/list-guests-a-podcast-could-plausibly-book): `GET /v1/podcasts/{id}/recommendations/guests` — standard tier, x402 $0.03 per call - [List trending podcast guests](https://docs.particle.pro/api-reference/podcast-guests/list-trending-podcast-guests): `GET /v1/podcasts/guests/trends` — standard tier, x402 $0.04 per call - [Get a guest's brand-suitability exposure profile](https://docs.particle.pro/api-reference/podcast-guests/get-a-guests-brand-suitability-exposure-profile): `GET /v1/podcasts/guests/{id}/suitability` — standard tier, x402 $0.04 per call ### Podcast Rankings - [List podcast rankings](https://docs.particle.pro/api-reference/podcast-rankings/list-podcast-rankings): `GET /v1/podcasts/rankings` — premium tier, x402 $0.03 per call - [List current rankings for a podcast](https://docs.particle.pro/api-reference/podcast-rankings/list-current-rankings-for-a-podcast): `GET /v1/podcasts/{id}/rankings` — premium tier, x402 $0.03 per call - [Summarize a podcast's chart presence](https://docs.particle.pro/api-reference/podcast-rankings/summarize-a-podcasts-chart-presence): `GET /v1/podcasts/{id}/rankings/summary` — premium tier, x402 $0.03 per call - [List ranking sources](https://docs.particle.pro/api-reference/podcast-rankings/list-ranking-sources): `GET /v1/podcasts/rankings/sources` — standard tier, x402 $0.01 per call - [List ranking countries](https://docs.particle.pro/api-reference/podcast-rankings/list-ranking-countries): `GET /v1/podcasts/rankings/countries` — standard tier, x402 $0.01 per call - [List ranking categories](https://docs.particle.pro/api-reference/podcast-rankings/list-ranking-categories): `GET /v1/podcasts/rankings/categories` — standard tier, x402 $0.01 per call - [Get chart slot history](https://docs.particle.pro/api-reference/podcast-rankings/get-chart-slot-history): `GET /v1/podcasts/rankings/history` — premium tier, x402 $0.04 per call - [Get historical rankings for a podcast](https://docs.particle.pro/api-reference/podcast-rankings/get-historical-rankings-for-a-podcast): `GET /v1/podcasts/{id}/rankings/history` — premium tier, x402 $0.04 per call - [List ranking movers](https://docs.particle.pro/api-reference/podcast-rankings/list-ranking-movers): `GET /v1/podcasts/rankings/movers` — premium tier, x402 $0.04 per call ### Podcast Ratings - [List ratings for a podcast](https://docs.particle.pro/api-reference/podcast-ratings/list-ratings-for-a-podcast): `GET /v1/podcasts/{id}/ratings` — standard tier, x402 $0.01 per call - [Summarize a podcast's ratings](https://docs.particle.pro/api-reference/podcast-ratings/summarize-a-podcasts-ratings): `GET /v1/podcasts/{id}/ratings/summary` — standard tier, x402 $0.03 per call ### Podcast Advertising - [Get publisher advertising profile](https://docs.particle.pro/api-reference/podcast-advertising/get-publisher-advertising-profile): `GET /v1/podcasts/publishers/{id}/advertising` — premium tier, x402 $0.03 per call - [List sponsors for a publisher](https://docs.particle.pro/api-reference/podcast-advertising/list-sponsors-for-a-publisher): `GET /v1/podcasts/publishers/{id}/advertising/sponsors` — premium tier, x402 $0.04 per call - [List publisher's podcasts ranked by ad volume](https://docs.particle.pro/api-reference/podcast-advertising/list-publishers-podcasts-ranked-by-ad-volume): `GET /v1/podcasts/publishers/{id}/advertising/podcasts` — premium tier, x402 $0.03 per call - [List sponsors](https://docs.particle.pro/api-reference/podcast-advertising/list-sponsors): `GET /v1/podcasts/advertising/sponsors` — premium tier, x402 $0.03 per call - [List trending sponsors](https://docs.particle.pro/api-reference/podcast-advertising/list-trending-sponsors): `GET /v1/podcasts/advertising/sponsors/trends` — premium tier, x402 $0.04 per call - [Get a sponsor](https://docs.particle.pro/api-reference/podcast-advertising/get-a-sponsor): `GET /v1/podcasts/advertising/sponsors/{id}` — premium tier, x402 $0.03 per call - [List podcasts for a sponsor](https://docs.particle.pro/api-reference/podcast-advertising/list-podcasts-for-a-sponsor): `GET /v1/podcasts/advertising/sponsors/{id}/podcasts` — premium tier, x402 $0.03 per call - [List sponsors advertising on a podcast](https://docs.particle.pro/api-reference/podcast-advertising/list-sponsors-advertising-on-a-podcast): `GET /v1/podcasts/{id}/advertising/sponsors` — premium tier, x402 $0.04 per call - [List ad segments for a sponsor](https://docs.particle.pro/api-reference/podcast-advertising/list-ad-segments-for-a-sponsor): `GET /v1/podcasts/advertising/sponsors/{id}/segments` — premium tier, x402 $0.03 per call - [Get advertising leaderboard](https://docs.particle.pro/api-reference/podcast-advertising/get-advertising-leaderboard): `GET /v1/podcasts/advertising/leaderboard` — premium tier, x402 $0.04 per call - [Get advertising leaderboard preview](https://docs.particle.pro/api-reference/podcast-advertising/get-advertising-leaderboard-preview): `GET /v1/podcasts/advertising/leaderboard/preview` — standard tier, x402 $0.01 per call - [Get advertising timeseries](https://docs.particle.pro/api-reference/podcast-advertising/get-advertising-timeseries): `GET /v1/podcasts/advertising/timeseries` — premium tier, x402 $0.04 per call - [Get sponsor co-occurrence](https://docs.particle.pro/api-reference/podcast-advertising/get-sponsor-co-occurrence): `GET /v1/podcasts/advertising/co-occurrence` — premium tier, x402 $0.04 per call - [List publishers for a sponsor](https://docs.particle.pro/api-reference/podcast-advertising/list-publishers-for-a-sponsor): `GET /v1/podcasts/advertising/sponsors/{id}/publishers` — premium tier, x402 $0.03 per call - [Get publisher advertising leaderboard](https://docs.particle.pro/api-reference/podcast-advertising/get-publisher-advertising-leaderboard): `GET /v1/podcasts/advertising/publishers/leaderboard` — premium tier, x402 $0.04 per call ### Podcast Publishers - [List podcast publishers](https://docs.particle.pro/api-reference/podcast-publishers/list-podcast-publishers): `GET /v1/podcasts/publishers` — standard tier, x402 $0.03 per call - [Get a podcast publisher](https://docs.particle.pro/api-reference/podcast-publishers/get-a-podcast-publisher): `GET /v1/podcasts/publishers/{id}` — standard tier, x402 $0.03 per call - [List podcasts for a publisher](https://docs.particle.pro/api-reference/podcast-publishers/list-podcasts-for-a-publisher): `GET /v1/podcasts/publishers/{id}/podcasts` — standard tier, x402 $0.04 per call - [Get a publisher's brand suitability profile](https://docs.particle.pro/api-reference/podcast-publishers/get-a-publishers-brand-suitability-profile): `GET /v1/podcasts/publishers/{id}/suitability` — premium tier, x402 $0.04 per call - [List a publisher's podcasts with their suitability verdicts](https://docs.particle.pro/api-reference/podcast-publishers/list-a-publishers-podcasts-with-their-suitability-verdicts): `GET /v1/podcasts/publishers/{id}/suitability/podcasts` — premium tier, x402 $0.03 per call ### Podcast Bias - [Get publisher political bias profile](https://docs.particle.pro/api-reference/podcast-bias/get-publisher-political-bias-profile): `GET /v1/podcasts/publishers/{id}/bias` — premium tier, x402 $0.03 per call - [List analyzed podcasts for a publisher](https://docs.particle.pro/api-reference/podcast-bias/list-analyzed-podcasts-for-a-publisher): `GET /v1/podcasts/publishers/{id}/bias/podcasts` — premium tier, x402 $0.03 per call - [Rank publishers by political bias metric](https://docs.particle.pro/api-reference/podcast-bias/rank-publishers-by-political-bias-metric): `GET /v1/podcasts/bias/publishers/leaderboard` — premium tier, x402 $0.04 per call - [List publishers with podcasts in a bias bucket](https://docs.particle.pro/api-reference/podcast-bias/list-publishers-with-podcasts-in-a-bias-bucket): `GET /v1/podcasts/bias/{result}/publishers` — premium tier, x402 $0.03 per call ### Podcast Brand Suitability - [Get a cross-publisher suitability leaderboard](https://docs.particle.pro/api-reference/podcast-brand-suitability/get-a-cross-publisher-suitability-leaderboard): `GET /v1/podcasts/suitability/publishers/leaderboard` — premium tier, x402 $0.04 per call - [Get publishers ranked by exposure to a brand-safety category](https://docs.particle.pro/api-reference/podcast-brand-suitability/get-publishers-ranked-by-exposure-to-a-brand-safety-category): `GET /v1/podcasts/suitability/categories/{code}/publishers` — premium tier, x402 $0.04 per call ### Entities - [List entities](https://docs.particle.pro/api-reference/entities/list-entities): `GET /v1/entities` — standard tier, x402 $0.01 per call - [Search entities](https://docs.particle.pro/api-reference/entities/search-entities): `GET /v1/entities/search` — standard tier, x402 $0.01 per call - [List entity types](https://docs.particle.pro/api-reference/entities/list-entity-types): `GET /v1/entities/types` — standard tier, x402 $0.01 per call - [Get an entity](https://docs.particle.pro/api-reference/entities/get-an-entity): `GET /v1/entities/{id}` — standard tier, x402 $0.01 per call ### People - [Get a Person](https://docs.particle.pro/api-reference/people/get-a-person): `GET /v1/people/{id}` — standard tier, x402 $0.01 per call - [List a Person's external profiles](https://docs.particle.pro/api-reference/people/list-a-persons-external-profiles): `GET /v1/people/{slug}/external-links` — standard tier, x402 $0.04 per call ### Companies - [List companies](https://docs.particle.pro/api-reference/companies/list-companies): `GET /v1/companies` — standard tier, x402 $0.01 per call - [Get a company](https://docs.particle.pro/api-reference/companies/get-a-company): `GET /v1/companies/{id}` — standard tier, x402 $0.01 per call - [List company products](https://docs.particle.pro/api-reference/companies/list-company-products): `GET /v1/companies/{id}/products` — standard tier, x402 $0.03 per call - [Get company advertising profile](https://docs.particle.pro/api-reference/companies/get-company-advertising-profile): `GET /v1/companies/{id}/podcast/advertising` — premium tier, x402 $0.03 per call - [List podcasts carrying company advertising](https://docs.particle.pro/api-reference/companies/list-podcasts-carrying-company-advertising): `GET /v1/companies/{id}/podcast/advertising/podcasts` — premium tier, x402 $0.03 per call - [List podcasts a company could advertise on next](https://docs.particle.pro/api-reference/companies/list-podcasts-a-company-could-advertise-on-next): `GET /v1/companies/{id}/podcast/recommendations` — premium tier, x402 $0.03 per call - [List company podcast advertising placements](https://docs.particle.pro/api-reference/companies/list-company-podcast-advertising-placements): `GET /v1/companies/{id}/podcast/advertising/placements` — premium tier, x402 $0.03 per call - [List company competitors](https://docs.particle.pro/api-reference/companies/list-company-competitors): `GET /v1/companies/{id}/competitors` — premium tier, x402 $0.03 per call - [List company people](https://docs.particle.pro/api-reference/companies/list-company-people): `GET /v1/companies/{id}/people` — standard tier, x402 $0.03 per call ### Topics - [List topics](https://docs.particle.pro/api-reference/topics/list-topics): `GET /v1/topics` — standard tier, x402 $0.01 per call - [Get a topic](https://docs.particle.pro/api-reference/topics/get-a-topic): `GET /v1/topics/{id}` — standard tier, x402 $0.01 per call ### Alerts - [Create an alert](https://docs.particle.pro/api-reference/alerts/create-an-alert): `POST /v1/projects/{projectId}/alerts` — standard tier, included with plans that carry the feature - [List alerts](https://docs.particle.pro/api-reference/alerts/list-alerts): `GET /v1/projects/{projectId}/alerts` — standard tier, included with plans that carry the feature - [Get an alert](https://docs.particle.pro/api-reference/alerts/get-an-alert): `GET /v1/alerts/{id}` — standard tier, included with plans that carry the feature - [Update an alert](https://docs.particle.pro/api-reference/alerts/update-an-alert): `PATCH /v1/alerts/{id}` — standard tier, included with plans that carry the feature - [Delete an alert](https://docs.particle.pro/api-reference/alerts/delete-an-alert): `DELETE /v1/alerts/{id}` — standard tier, included with plans that carry the feature - [Send a test webhook](https://docs.particle.pro/api-reference/alerts/send-a-test-webhook): `POST /v1/alerts/{id}/test-webhook` — standard tier, included with plans that carry the feature - [List matches for an alert](https://docs.particle.pro/api-reference/alerts/list-matches-for-an-alert): `GET /v1/alerts/{id}/matches` — standard tier, included with plans that carry the feature - [List deliveries for an alert](https://docs.particle.pro/api-reference/alerts/list-deliveries-for-an-alert): `GET /v1/alerts/{id}/deliveries` — standard tier, included with plans that carry the feature - [Get a single alert delivery](https://docs.particle.pro/api-reference/alerts/get-a-single-alert-delivery): `GET /v1/alerts/deliveries/{id}` — free, no credential needed - [Get the exact JSON a webhook delivery POSTed](https://docs.particle.pro/api-reference/alerts/get-the-exact-json-a-webhook-delivery-posted): `GET /v1/alerts/deliveries/{id}/webhook-payload` — free, no credential needed - [Get a single alert match](https://docs.particle.pro/api-reference/alerts/get-a-single-alert-match): `GET /v1/alerts/matches/{id}` — free, no credential needed - [Preview match frequency for an alert before creating it](https://docs.particle.pro/api-reference/alerts/preview-match-frequency-for-an-alert-before-creating-it): `POST /v1/projects/{projectId}/alerts/preview` — standard tier, included with plans that carry the feature - [Get the status and result of an alert preview](https://docs.particle.pro/api-reference/alerts/get-the-status-and-result-of-an-alert-preview): `GET /v1/alerts/preview/{previewId}` — standard tier, included with plans that carry the feature - [Preview alert disable action](https://docs.particle.pro/api-reference/alerts/preview-alert-disable-action): `GET /v1/alerts/disable` — free, no credential needed - [Disable an alert via email-footer token](https://docs.particle.pro/api-reference/alerts/disable-an-alert-via-email-footer-token): `POST /v1/alerts/disable` — free, no credential needed ### Webhook Connections - [Create a webhook connection](https://docs.particle.pro/api-reference/webhook-connections/create-a-webhook-connection): `POST /v1/projects/{projectId}/webhooks/connections` — standard tier, included with plans that carry the feature - [List webhook connections for a project](https://docs.particle.pro/api-reference/webhook-connections/list-webhook-connections-for-a-project): `GET /v1/projects/{projectId}/webhooks/connections` — standard tier, included with plans that carry the feature - [Get a webhook connection](https://docs.particle.pro/api-reference/webhook-connections/get-a-webhook-connection): `GET /v1/projects/{projectId}/webhooks/connections/{id}` — standard tier, included with plans that carry the feature - [Delete a webhook connection](https://docs.particle.pro/api-reference/webhook-connections/delete-a-webhook-connection): `DELETE /v1/projects/{projectId}/webhooks/connections/{id}` — standard tier, included with plans that carry the feature - [Rotate a webhook connection's signing secret](https://docs.particle.pro/api-reference/webhook-connections/rotate-a-webhook-connections-signing-secret): `POST /v1/projects/{projectId}/webhooks/connections/{id}/secret/rotate` — standard tier, included with plans that carry the feature ### Slack Connections - [Initiate a Slack workspace OAuth install](https://docs.particle.pro/api-reference/slack-connections/initiate-a-slack-workspace-oauth-install): `POST /v1/projects/{projectId}/slack/connections/initiate` — standard tier, included with plans that carry the feature - [Complete a Slack workspace OAuth install](https://docs.particle.pro/api-reference/slack-connections/complete-a-slack-workspace-oauth-install): `GET /v1/slack/connections/callback` — free, no credential needed - [List Slack connections for a project](https://docs.particle.pro/api-reference/slack-connections/list-slack-connections-for-a-project): `GET /v1/projects/{projectId}/slack/connections` — standard tier, included with plans that carry the feature - [List channels for a Slack connection](https://docs.particle.pro/api-reference/slack-connections/list-channels-for-a-slack-connection): `GET /v1/projects/{projectId}/slack/connections/{id}/channels` — standard tier, included with plans that carry the feature - [Delete a Slack connection](https://docs.particle.pro/api-reference/slack-connections/delete-a-slack-connection): `DELETE /v1/projects/{projectId}/slack/connections/{id}` — standard tier, included with plans that carry the feature ### Embed - [Get clip embed](https://docs.particle.pro/api-reference/embed/get-clip-embed): `GET /v1/embed/clips/{id}` — free, no credential needed - [Get clip embed transcript](https://docs.particle.pro/api-reference/embed/get-clip-embed-transcript): `GET /v1/embed/clips/{id}/transcript` — free, no credential needed - [Get episode embed code](https://docs.particle.pro/api-reference/embed/get-episode-embed-code): `GET /v1/embed/episodes/{episode_id}/code` — free, no credential needed ## MCP tools Flat `particle_*` names; every public tool is callable by name even when `tools/list` did not advertise it. Default categories advertise on a bare connection; opt-in categories advertise with `?include=` on the MCP URL. Each line: the documentation page, what the tool does, its tier, and the keyless x402 price per `tools/call`. `initialize` and `tools/list` are free. ### system (always on) - [`particle_call`](https://docs.particle.pro/mcp/tools/system/call): Dispatch any public Particle tool by name — free to call; a keyless call pays the dispatched tool's x402 price; writes; destructive - [`particle_catalog`](https://docs.particle.pro/mcp/tools/system/catalog): Browse the full Particle tool catalog — free ### podcasts (default) - [`particle_podcast_find_mentions`](https://docs.particle.pro/mcp/tools/podcasts/podcast-find-mentions): Find dialogue lines where a specific person or company is named in podcast transcripts — standard tier, x402 $0.04 per call - [`particle_podcast_get_episode`](https://docs.particle.pro/mcp/tools/podcasts/podcast-get-episode): Return a bundled overview of one podcast episode: title, podcast, speakers (with entity slugs), top mentioned entities, and segment/clip counts — standard tier, x402 $0.01 per call - [`particle_podcast_get_episode_timeseries`](https://docs.particle.pro/mcp/tools/podcasts/podcast-get-episode-timeseries): Time-bucketed episode counts — the purpose-built answer to "how often is X discussed over time" — standard tier, x402 $0.01 per call - [`particle_podcast_list_clips`](https://docs.particle.pro/mcp/tools/podcasts/podcast-list-clips): Browse AI-extracted highlight clips across the catalog, ranked by engagement potential — the shareable moments — standard tier, x402 $0.01 per call - [`particle_podcast_list_episodes`](https://docs.particle.pro/mcp/tools/podcasts/podcast-list-episodes): List episodes across the catalog with rich filters: by podcast, person, company, language, date range, duration, or transcript availability — standard tier, x402 $0.01 per call - [`particle_podcast_list_related`](https://docs.particle.pro/mcp/tools/podcasts/podcast-list-related): List the shows most related to a podcast, best first — "shows like this show" — standard tier, x402 $0.01 per call - [`particle_podcast_list_related_episodes`](https://docs.particle.pro/mcp/tools/podcasts/podcast-list-related-episodes): Episodes from OTHER shows that cover the same story or subject as a given episode, best first — a live nearest-neighbour search over episode content, reranked on shared salient entities, shared topics and a shared news story — standard tier, x402 $0.01 per call - [`particle_podcast_resolve`](https://docs.particle.pro/mcp/tools/podcasts/podcast-resolve): Find a podcast by free-text title, exact slug, iTunes ID, or RSS feed URL — standard tier, x402 $0.01 per call - [`particle_podcast_search_transcripts`](https://docs.particle.pro/mcp/tools/podcasts/podcast-search-transcripts): 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) — standard tier, x402 $0.04 per call ### people (default) - [`particle_entity_get`](https://docs.particle.pro/mcp/tools/people/entity-get): One knowledge-graph entity's profile: name, kind, description, and Wikipedia link — standard tier, x402 $0.01 per call - [`particle_entity_resolve`](https://docs.particle.pro/mcp/tools/people/entity-resolve): Resolve any named thing — person, company, place, or other entity — by free-text name in one union search — standard tier, x402 $0.01 per call - [`particle_person_get`](https://docs.particle.pro/mcp/tools/people/person-get): Return a person's profile: name, current role, and bio, keyed by the canonical person slug from `particle_person_resolve` — standard tier, x402 $0.01 per call - [`particle_person_resolve`](https://docs.particle.pro/mcp/tools/people/person-resolve): Resolve a person by free-text name — standard tier, x402 $0.01 per call ### companies (default) - [`particle_company_get`](https://docs.particle.pro/mcp/tools/companies/company-get): Return a bundled profile for one company: identifiers (slug, ticker, domain, CIK, QID, linked entity), name, and description — standard tier, x402 $0.01 per call - [`particle_company_resolve`](https://docs.particle.pro/mcp/tools/companies/company-resolve): Resolve a company by free-text name, ticker, SEC CIK, Wikidata QID, or domain — standard tier, x402 $0.01 per call ### topics (default) - [`particle_topic_browse`](https://docs.particle.pro/mcp/tools/topics/topic-browse): Navigate the topic taxonomy — standard tier, x402 $0.01 per call ### podcast_rankings (default) - [`particle_podcast_get_rankings`](https://docs.particle.pro/mcp/tools/podcast_rankings/podcast-get-rankings): Podcast chart rankings from Apple Podcasts and Spotify, in four modes: — premium tier, x402 $0.03 per call ### podcast_guests (default) - [`particle_podcast_get_guest`](https://docs.particle.pro/mcp/tools/podcast_guests/podcast-get-guest): A guest's podcast-appearance profile: lifetime stats (appearances, distinct podcasts, first/last appearance) plus their most frequent podcasts — standard tier, x402 $0.01 per call - [`particle_podcast_list_guests`](https://docs.particle.pro/mcp/tools/podcast_guests/podcast-list-guests): Browse podcast guests across the catalog, in two opinionated modes: — standard tier, x402 $0.01 per call ### podcast_advertising (opt-in: `?include=podcast_advertising`) - [`particle_company_get_podcast_ad_presence`](https://docs.particle.pro/mcp/tools/podcast_advertising/company-get-podcast-ad-presence): Sponsor-side ad analytics for one company: total ads, distinct podcasts and episodes reached, host-read vs pre-recorded breakdown, and the most recent ad placements with podcast attribution — premium tier, x402 $0.03 per call - [`particle_podcast_get_ad_trends`](https://docs.particle.pro/mcp/tools/podcast_advertising/podcast-get-ad-trends): Podcast advertising momentum, in two modes: — premium tier, x402 $0.04 per call - [`particle_podcast_get_episode_ads`](https://docs.particle.pro/mcp/tools/podcast_advertising/podcast-get-episode-ads): Every detected ad read inside one episode: sponsor, advertised product, promotional offer, read type (host-read vs pre-recorded), placement (pre/mid/post-roll), and the exact start/end offsets in seconds — premium tier, x402 $0.03 per call - [`particle_podcast_get_sponsor_leaderboard`](https://docs.particle.pro/mcp/tools/podcast_advertising/podcast-get-sponsor-leaderboard): Ranked advertising leaderboards across the podcast catalog, in two modes: — premium tier, x402 $0.04 per call - [`particle_podcast_get_sponsors`](https://docs.particle.pro/mcp/tools/podcast_advertising/podcast-get-sponsors): Top sponsors for a single podcast plus aggregate ad stats: total ads, unique sponsors, episodes with ads, average ads per episode, and host-read vs pre-recorded breakdown — premium tier, x402 $0.03 per call ### podcast_publishers (opt-in: `?include=podcast_publishers`) - [`particle_podcast_get_publisher`](https://docs.particle.pro/mcp/tools/podcast_publishers/podcast-get-publisher): A podcast publisher's profile: name, slug, and catalog size — standard tier, x402 $0.01 per call ### podcast_ratings (opt-in: `?include=podcast_ratings`) - [`particle_podcast_get_ratings`](https://docs.particle.pro/mcp/tools/podcast_ratings/podcast-get-ratings): Listener-review ratings for one podcast: the aggregate summary (average stars, rating count, per-platform breakdown, and an LLM-generated sentiment narrative when available) plus the most recent individual reviews — standard tier, x402 $0.01 per call ### podcast_bias (opt-in: `?include=podcast_bias`) - [`particle_podcast_get_bias_leaderboard`](https://docs.particle.pro/mcp/tools/podcast_bias/podcast-get-bias-leaderboard): Rank podcast publishers by political-bias metrics across their analyzed catalogs: most left/right leaning (average lean score), most political (share of political shows), most diverse / most monolithic (lean spread), or most analyzed (coverage) — premium tier, x402 $0.04 per call - [`particle_podcast_list_bias_publishers`](https://docs.particle.pro/mcp/tools/podcast_bias/podcast-list-bias-publishers): Which publishers have the most podcasts in one political-bias bucket (e — premium tier, x402 $0.03 per call ### podcast_suitability (opt-in: `?include=podcast_suitability`) - [`particle_podcast_get_suitability_leaderboard`](https://docs.particle.pro/mcp/tools/podcast_suitability/podcast-get-suitability-leaderboard): Rank podcast publishers by IAB/GARM brand-suitability composition across their analyzed catalogs: safest (highest SAFE share), riskiest (highest UNSAFE share), most_placeable (highest SAFE+LIMITED share — the broadly buyable slice), or most_analyzed (coverage) — premium tier, x402 $0.04 per call - [`particle_podcast_list_suitability_category_publishers`](https://docs.particle.pro/mcp/tools/podcast_suitability/podcast-list-suitability-category-publishers): Which publishers' catalogs are most (or least) exposed to one IAB/GARM brand-safety category — e — premium tier, x402 $0.04 per call ### alerts (default) - [`particle_alert_create`](https://docs.particle.pro/mcp/tools/alerts/alert-create): 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) — standard tier, included with plans that carry alerts; writes - [`particle_alert_delete`](https://docs.particle.pro/mcp/tools/alerts/alert-delete): Delete an alert — standard tier, included with plans that carry alerts; writes; destructive - [`particle_alert_get`](https://docs.particle.pro/mcp/tools/alerts/alert-get): 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) — standard tier, included with plans that carry alerts - [`particle_alert_list`](https://docs.particle.pro/mcp/tools/alerts/alert-list): List the alerts in your project, newest first — standard tier, included with plans that carry alerts - [`particle_alert_list_matches`](https://docs.particle.pro/mcp/tools/alerts/alert-list-matches): List the matches an alert has caught, newest first — the payoff of an alert — standard tier, included with plans that carry alerts - [`particle_alert_preview`](https://docs.particle.pro/mcp/tools/alerts/alert-preview): Preview how often an alert would fire BEFORE creating it — standard tier, included with plans that carry alerts - [`particle_alert_update`](https://docs.particle.pro/mcp/tools/alerts/alert-update): Update an existing alert — standard tier, included with plans that carry alerts; writes ## Conventions The defaults most endpoints share. Where an operation differs, its schema in the OpenAPI document is authoritative and each line above links to its page. - **IDs and slugs.** Podcast, episode, publisher, company, person, entity, and topic `{id}` parameters accept the canonical id or the slug; podcast ids also accept a numeric Apple collection id, and company ids also accept a domain. Everything else (segments, clips, alerts, matches, deliveries, connections) takes the id a response returned. Slugs are short handles Particle assigns, not names slugified: 20VC is `the-twenty-minute-vc`, Lenny's Podcast is `lennys`, All-In is `all-in`. Take them from responses; a constructed slug returns 404, and trying other spellings never resolves it. A podcast slug is not an episode id: list the show's episodes to get one. Resolve free text first: `GET /v1/entities/search?q=` (each result carries `mentions.podcast_episodes`, the number of episodes tagged with it; a `company` result's id or domain goes in `company_id`), `GET /v1/podcasts/search?q=`, `GET /v1/companies?q=`; `GET /v1/entities` lists and filters and takes no `q`. Platform ids (Apple, Spotify, YouTube, RSS feed URLs, episode guids) resolve deterministically through `GET /v1/podcasts/lookup` and `GET /v1/podcasts/episodes/lookup`. - **Optional parameters.** Omit what you do not need. A placeholder value (`x`, `-`, `__omit__`) is a real filter value and fails validation or matches nothing. Each concept has one parameter name; `q` is the free-text query wherever one exists. - **Pagination.** List responses are `{data, has_more, cursor}`. Pass `cursor` back to continue; `limit` is usually 1 to 100 with a default of 25, and `cursor` is absent on the last page. Some lists cap lower (a company's advertised podcasts at 24) and some episode sub-resources (segments, speakers, entities, topics) return everything when `limit` is omitted. Cursors are opaque and specific to the endpoint that issued them. - **Expansion.** Detail endpoints are lean; `include=` adds sections where the schema lists them (an episode's `segments`, `clips`, `transcript`, `topics`, `entities`; a company's `people`, `products`, `competitors`; a podcast's `related`). - **Time.** Timestamps are ISO 8601 in UTC. Positions inside audio are decimal seconds (`start_seconds`, `end_seconds`). Date filters (`since`, `until`, `published_after`, `published_before`) usually accept a date or a timestamp, with a bare date covering the whole day; a few analytics endpoints, such as publisher bias, require a full timestamp, and their schema says so. - **Language.** `language` is an ISO 639-1 code matched on the primary subtag, so `fr` covers `fr-CA`. - **Rate limit.** 10,000 requests per minute per organization, shared across its keys and projects. `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset` accompany rate-limited responses; a 429 (`rate_limit_exceeded`) carries `Retry-After`. - **Errors.** RFC 9457 `application/problem+json` with a stable `error_code` and, when there is a self-service fix, a `resolve` object (`action`, `url`, `method`, `endpoint`). Catalog: https://docs.particle.pro/errors/overview.md - **Retries.** Read `error_code` before retrying. A 429 carries `Retry-After`; wait that long. Back off exponentially on a 5xx. Never resend a 4xx unchanged: a 422 names the parameter or endpoint to fix, a 404 on a slug means resolve it again, and a 402 other than `payment_required` names a billing state that a retry cannot change. - **Metering.** Each request, and each MCP `tools/call`, is one metered unit. `particle_catalog`, MCP `initialize` and `tools/list`, and the free endpoints above cost nothing. Every response carries `X-Trace-ID`; quote it when contacting support. ## Resources - Agent setup playbook: https://api.particle.pro/agents.md - Credential recipe for agents (auth.md): https://api.particle.pro/auth.md - OpenAPI 3.1 document: https://api.particle.pro/openapi.json - x402 manifest and endpoint list: https://api.particle.pro/.well-known/x402 and https://api.particle.pro/.well-known/x402.json - Documentation: https://docs.particle.pro (append `.md` to any page for raw markdown; index at https://docs.particle.pro/llms.txt; full corpus at https://docs.particle.pro/llms-full.txt) - Changelogs: https://docs.particle.pro/changelog.md (REST) and https://docs.particle.pro/mcp/changelog.md (MCP) - Status: https://status.particle.pro. Support: api@particle.pro