Design
a2uicatalog.ai
Discovers A2UI component catalogs and atom schemas, resolves required catalogs, and builds multi-page UI surfaces from title and content sections.
ENDPOINT 1
https://a2uicatalog.ai/mcp
MCP server metadata
- Name
- a2uicatalog
- Version
- 1.0.0
CALL identify_model FIRST, before any other tool, once per session — pass your own model name exactly as your system prompt states it (or "unknown" if not stated; never guess). Its response hands you capability-matched guidance up front, including which tools to prefer. If identify_model is unavailable, fails, or you cannot call it for any reason, PROCEED ANYWAY with the full toolkit. It is an optimisation, never a precondition: no other tool requires it, and skipping it costs you nothing but the capability-matched tool preferences. A2UI Catalogue — author declarative UI surfaces (A2UI payloads) and render them. CHOOSE THE PATH BY SIZE: • Small / quick preview → preview_url or make_surface_url. The payload is gzipped into a ?p= URL (data-in-URL). The REAL, hard ceiling is ~8100 chars (GAS cannot decode past this). A `size` field/warning can appear starting around ~2000 chars as a softer, informational copy-safety note — it does NOT by itself mean you must split; each URL-returning tool's own description gives its exact procedure for reading the measured length and deciding. Do not treat "a size field appeared" as "split now" — read the tool's specific rule. The size ceiling is PER PAGE, not per surface, so two ways to scale past it: (a) PAGINATE — split the content into multiple pages linked by nav. Each page is its own small ?p= URL (renderer stamps &from= back-links) or a named ?nav=<slug> page, so total content has no real ceiling. Best when you want to stay shareable-by-link. (b) GRADUATE — call emit_deployment: it bakes the payload into a standing app (HomeSurface.gs, plus server-side ?nav= named pages) — no URL, no size limit, no truncation. Best for real, reusable content. Data-in-URL (a single ?p=) is best for small single-page previews, but is not capped at the ~2000-char soft note — follow the calling tool's own size procedure, not this figure. STUDY/CURRICULUM/COURSE content: prefer emit_runbook_surface (runbook_id "learning_hub") — a declared, pre-authored composition with the full rich hub UI (subject tabs, slide pills, per-slide learning interactions); call it with no content first to get the input contract. Zero composition decisions, works for every capability tier. emit_training_runbook is the simpler fallback (plain tabs). If you can compose reliably and want something the runbook does not cover, composing catalogue atoms yourself remains open — but do not use build_multi_page_surface for courses: it returns N independent pages with no links between them. ANALYSING SOMEONE ELSE'S ARTICLE (analyse / critique / tear down / "what does this mean for X"): prefer emit_runbook_surface (runbook_id "article_playbook") — do NOT hand-compose this from base atoms. Two things it gives you that composing yourself does not: a Toulmin rung progression (claim -> grounds -> warrant) that is STRUCTURALLY ENFORCED, so a critique cannot skip the exposition it is judging; and an `elicit` block of questions to put to the USER first (which lens, whose domain, what to look for) so the reading is steered by them rather than guessed by you. Call with runbook_id and NO content to get the contract, the parsing_guide and those questions. YOU fetch and read the article with your own tooling — nothing is retrieved server-side, by design (no SSRF surface, and the URL stays yours). If you have no fetch/browse capability, say so up front and ask the user to paste the article text; do not accept the contract and fill it from memory, and never invent the verbatim quotations it requires. Runbook content that exceeds one page: emit_runbook_surface paginates and seeds automatically — no action needed from you. It splits by the runbook's declared boundary (learning_hub: per subject), seeds each page server-side, and returns one nav page (hub-of-pages: short ?nav= links only) over per-subject hub-as-one-page instances (each a full rich hub UI). Response carries `pages[]` + `seeded: true` when this happened; a single `url` with no `pages` means it all fit on one page. Either way the returned url is ready to use as-is.
Known tools 28
list_catalogsList every A2UI catalog with a when-to-use, so you can pick the extension catalogs a surface needs.
Inferred read-onlyget_catalogReturn one catalog's atoms (type + one-line description) so you know its vocabulary.
Inferred read-onlyget_atom_schemaReturn the PROP SHAPE (field names + what each field takes) for named atoms.
Inferred read-onlyrequired_catalogsGiven an A2UI payload, return the resolvable catalog URIs it needs (deterministic — pure function of the atoms).
Inferred read-onlybuild_multi_page_surfaceBuild a multi-section A2UI app from raw title+content sections — you never estimate size or decide how to split; each section becomes its own independently-encoded page (no shared hub, so per-page size never grows with page count — genuinely unlimited sections).
Inferred read-onlyrender_surfaceRender an A2UI payload INSIDE the chat as a live interactive view (MCP Apps hosts only — on other hosts this returns the payload as text).
Inferred read-onlydistill_documentCompile a training.md / roadmap markdown document into a live interactive A2UI app — DETERMINISTIC parser, no model involved.
Inferred read-onlyunpublish_urlDelete a published short link before its TTL using the delete_token returned by publish_url.
Potential side effectsemit_deployment🎓 GRADUATE a tested surface into a dedicated, DEPLOYER-ONLY standing app in YOUR OWN Google Apps Script account.
Inferred read-onlyemit_training_runbookBuild a multi-lesson training/course surface as ONE properly-linked page with real in-app tab navigation between lessons — prefer this over build_multi_page_surface for training/course content specifically: that tool produces N independent pages with NO links between them (you must present the list yourself); this tool produces one page where lessons are real, clickable tabs.
Inferred read-onlyemit_runbook_surfaceStamp your content through a DECLARED runbook — a pre-authored, judgment-free surface composition.
Inferred read-onlydescribe_playbookExplain a playbook to a HUMAN as a rendered surface: the frame it reads against, the lenses available, and the questions it will ask them.
Inferred read-onlyopen_workspaceOpen the A2UI Workspace — a rendered surface that IS the demo: each tool is introduced by the scenario it answers, then wired to run, then shows what it saved.
Inferred read-onlysave_readingRecord a stamped surface in the reader's history so it can be compared and reopened later.
Inferred read-onlyrender_reading_to_slackPost a kept reading into Slack as real, native Block Kit — the continuity proof: generate here, save it, and the SAME content reopens in Slack, not a link back to a renderer.
Potential side effectslist_readingsThe reader's recent stamped surfaces, newest first — what makes "compare this to my last three teardowns" answerable at all.
Inferred read-onlydelete_readingPermanently remove one or more of the reader's saved readings from their History.
Potential side effectsunlink_slack_accountRevoke one or more Slack accounts' link to this reader's store, from the Workspace side (the reverse of the Slack-side `/a2ui unlink` command — see slack-compiler/DESIGN-identity.md, "many Slack -> one sub").
Potential side effectswall_calcCompute a coursed block/brick wall specification — course and unit counts, weight, cost, mortar bags, a build-time curve across 1-6 builders, and load-bearing/height advisories.
Inferred read-onlyidentify_modelCALL THIS FIRST, before any other a2ui-catalog tool, once per session.
Inferred read-onlyCONNECT WITH APPROVAL
Client installation
Review this server and its permissions before adding it. Secret placeholders must be set locally.
Codex
~/.codex/config.toml
[mcp_servers.a2uicatalog]
url = "https://a2uicatalog.ai/mcp"
enabled = true
Claude Code
.mcp.json
{
"mcpServers": {
"a2uicatalog": {
"type": "http",
"url": "https://a2uicatalog.ai/mcp"
}
}
}
Claude Desktop
Settings → Connectors → Add custom connector
Name: a2uicatalog
Remote MCP URL: https://a2uicatalog.ai/mcp
Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.
Cursor
.cursor/mcp.json
{
"mcpServers": {
"a2uicatalog": {
"url": "https://a2uicatalog.ai/mcp"
}
}
}
Visual Studio Code
.vscode/mcp.json
Add to Visual Studio Code{
"servers": {
"a2uicatalog": {
"type": "http",
"url": "https://a2uicatalog.ai/mcp"
}
}
}
Generic MCP
Client-specific MCP configuration
{
"name": "a2uicatalog",
"transport": "streamable-http",
"url": "https://a2uicatalog.ai/mcp"
}
MCP Inspector
Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.
TRUST AND VERIFICATION EVIDENCE
Trust Data Available
BuiltWith Trust API v2 evidence for a2uicatalog.ai was fetched 2026-09-23T13:45:28.811Z.
a2uicatalog.ai is assessed as Neutral: No suspicious signals found, but no strong positive signal either
Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.