# A2UI Atomic Catalog — Surfaces

> Scoped context: which rendering surfaces exist and how they differ. For the full
> site overview see https://a2uicatalog.ai/llms.txt; for integration mechanics see
> https://a2uicatalog.ai/developers/llms.txt.

## The surfaces

One payload, several renderers. Per-surface support is declared PER ATOM in
`spec.json` (`surfaces.works_on`) — an atom that cannot render somewhere says so
rather than degrading silently. Always check that field before composing for a
specific surface.

- `web` — the reference renderer; the widest support.
- `mcp-apps` — renders inline inside MCP Apps hosts (e.g. claude.ai) via `render_surface`.
- `google-meet-stage` — Meet add-on stage.
- `google-apps-script-web` — self-hosted Apps Script web app; deploy your own for
  unmetered rendering.
- `google-apps-script-side-panel` — Apps Script side panel.
- `google-chat` — Chat cards; visuals arrive as server-rendered images (Chat's own
  widget set cannot express custom charts or layout).
- `email` / `pdf` — static print channels; no scripting, no interactivity.

## Choosing one

Ask what the host can actually display. MCP Apps hosts render inline. Everything
else takes a link (`preview_url`, or `make_surface_url` against your own renderer).
Static channels (`email`, `pdf`) need the image/print path, not interactive atoms.

## Reference

- Per-atom surface support: https://a2uicatalog.ai/spec.json
- Live playground: https://a2uicatalog.ai/surfaces/mcp-apps
