> ## Documentation Index
> Fetch the complete documentation index at: https://docs.particle.pro/llms.txt
> Use this file to discover all available pages before exploring further.

# particle_radar_render_cards

> Display selected Particle research results as embedded Radar cards, with source links and a Markdown fallback.

Use this free presentation tool after retrieving data with the normal Particle tools. Select up to six episode, podcast, company, or person results and pass their evidence to the renderer. It does not fetch, verify, or store the supplied data, and has no REST counterpart.

Add `?include=radar` or `?include=all` to advertise the tool. As with other categories, you can call it directly even when your selector hides it. `particle_catalog` with `category: "radar"` returns the input schema.

## Inputs

| Field                | Meaning                                                                                                                                     |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `title`              | Required heading, 1–160 characters.                                                                                                         |
| `cards`              | Required array of zero to six cards. An empty array displays an empty result state.                                                         |
| `cards[].kind`       | `episode`, `podcast`, `company`, or `person`.                                                                                               |
| `cards[].title`      | Required result title, 1–160 characters.                                                                                                    |
| `cards[].subtitle`   | Optional show name, role, or date, up to 160 characters.                                                                                    |
| `cards[].summary`    | Optional plain-text summary of the retrieved evidence, up to 800 characters.                                                                |
| `cards[].source_url` | Required canonical HTTPS source URL returned by Particle, up to 2,048 bytes. Credentials, query parameters, and fragments are not accepted. |
| `cards[].facts`      | Optional array of up to four facts, each with a `label` (1–60 characters) and `value` (1–120 characters). Preserve units and time windows.  |

Only use facts and URLs from the preceding data results. Do not invent URLs when a result lacks one; present that result as text instead. Keep organic mentions and paid advertising clearly distinguished.

## Embedded UI and fallback

The tool descriptor links to `ui://particle/radar-cards-v1.html` through `_meta.ui.resourceUri`, with `openai/outputTemplate` as a ChatGPT compatibility alias. The server supports `resources/list` and `resources/read`; the resource uses `text/html;profile=mcp-app`. It is a self-contained HTML document with no network or external asset dependencies.

The UI initializes through the MCP Apps bridge, consumes `structuredContent` from tool results, adapts to the host theme, and opens source links through the host. Older ChatGPT hosts can supply results through `window.openai.toolOutput`. It never receives authentication credentials or calls data tools itself.

On older ChatGPT hosts, the widget reports its content height through `window.openai.notifyIntrinsicHeight`. Its legacy redirect allowlist includes `https://radar.particle.pro` and `https://particle.pro`; other source destinations remain subject to the host's external-link policy. Source links open without an added `redirectUrl` parameter. If the host refuses a link, use the source link in the Markdown response.

The renderer always returns the full selected evidence and source links in Markdown alongside `structuredContent`, including when a caller supplies `output_format`. Clients without UI support remain useful. Invoke the renderer directly to display cards: calling it through `particle_call` returns the text fallback without launching the UI.

Invalid cards return an actionable tool error with no structured card payload. Repeated calls simply produce the requested selection again; they do not create stored state.
