Repository navigation
[iFrame] Add the iframe catalog schema - #2795
Draft
josemontespg wants to merge 1 commit into
Draft
josemontespg wants to merge 1 commit into
josemontespg wants to merge 1 commit into
Conversation
josemontespg
force-pushed
the
catalogs-iframe-mcp-schemas
branch
from
September 25, 2026 01:31
4036a52 to
1fc9465
Compare
Contributor
There was a problem hiding this comment.
Code Review
This pull request introduces the iframe catalog (featuring WebAppFrameUrl and WebAppFrameSrcdoc components) and updates the MCP catalog to include the McpApp component, along with corresponding specifications, examples, and validation script updates. The review feedback suggests two key improvements: first, updating WebAppFrameSrcdoc's htmlContent to use DynamicString for consistency and dynamic data binding support; second, adding a mutableData property to McpApp to validate incoming state mutations against a JSON Schema, thereby enhancing security and aligning it with WebAppFrame's validation model.
josemontespg
force-pushed
the
catalogs-iframe-mcp-schemas
branch
from
September 25, 2026 06:20
1fc9465 to
a2139d3
Compare
josemontespg
force-pushed
the
catalogs-iframe-mcp-schemas
branch
2 times, most recently
from
October 1, 2026 20:11
da248b3 to
99837d7
Compare
josemontespg
force-pushed
the
catalogs-iframe-mcp-schemas
branch
from
October 1, 2026 20:43
99837d7 to
f9257d6
Compare
josemontespg
force-pushed
the
catalogs-iframe-mcp-schemas
branch
from
October 1, 2026 21:42
f9257d6 to
9cb7b57
Compare
josemontespg
force-pushed
the
catalogs-iframe-mcp-schemas
branch
from
October 1, 2026 21:56
9cb7b57 to
e459d45
Compare
josemontespg
commented
Oct 1, 2026
josemontespg
force-pushed
the
catalogs-iframe-mcp-schemas
branch
from
October 1, 2026 22:14
e459d45 to
7010933
Compare
josemontespg
force-pushed
the
catalogs-iframe-mcp-schemas
branch
from
October 1, 2026 22:41
7010933 to
d469303
Compare
josemontespg
force-pushed
the
catalogs-iframe-mcp-schemas
branch
2 times, most recently
from
October 2, 2026 00:36
e5a8d99 to
5f4f62c
Compare
josemontespg
force-pushed
the
catalogs-iframe-mcp-schemas
branch
2 times, most recently
from
October 2, 2026 18:50
08a2686 to
85296cb
Compare
josemontespg
force-pushed
the
catalogs-iframe-mcp-schemas
branch
from
October 8, 2026 20:31
9fca022 to
0dfc2b5
Compare
josemontespg
force-pushed
the
catalogs-iframe-mcp-schemas
branch
from
October 8, 2026 20:47
0dfc2b5 to
11c7837
Compare
josemontespg
force-pushed
the
catalogs-iframe-mcp-schemas
branch
2 times, most recently
from
October 8, 2026 21:34
7818209 to
3acc2c9
Compare
josemontespg
force-pushed
the
catalogs-iframe-mcp-schemas
branch
from
October 8, 2026 22:05
3acc2c9 to
949c376
Compare
josemontespg
force-pushed
the
catalogs-iframe-mcp-schemas
branch
from
October 8, 2026 22:58
949c376 to
bc17667
Compare
josemontespg
force-pushed
the
catalogs-iframe-mcp-schemas
branch
from
October 9, 2026 18:18
bc17667 to
6aa5190
Compare
josemontespg
force-pushed
the
catalogs-iframe-mcp-schemas
branch
from
October 9, 2026 18:49
6aa5190 to
c640a11
Compare
josemontespg
force-pushed
the
catalogs-iframe-mcp-schemas
branch
from
October 9, 2026 19:09
c640a11 to
4595a8b
Compare
This was referenced Oct 12, 2026
josemontespg
commented
Oct 27, 2026
josemontespg
commented
Oct 27, 2026
josemontespg
commented
Oct 27, 2026
Add catalogs/iframe/catalog.json, which declares the WebAppFrameUrl and WebAppFrameSrcdoc components with their shared allowlist and data binding definitions. Move the component specification next to the catalog and rewrite it against the protocol the reference host implements. Validate iframe examples in specification/scripts/validate.py (a config can now list several catalogs, merged into the single catalog.json alias the protocol schemas expect), and publish the catalog at its $id URL from the docs workflow.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the JSON Schema for the iframe catalog, so agents, renderers and validators share one canonical definition of the sandboxed web frame components instead of the copy that lives in the Angular MCP calculator sample. The catalog targets A2UI v1.0:
protocolVersionis1.0and the shared shapes come fromspecification/v1_0. The MCP catalog'sMcpAppschema is a separate PR on top of this stack.Changes
catalogs/iframe/catalog.json($idhttps://a2ui.org/specification/v1_0/catalogs/iframe/catalog.json) declaresWebAppFrameUrlandWebAppFrameSrcdoc. The shared properties (allowedEvents,allowedFunctions,mutableData,data.paths,config,height,disableSchemaValidation) are inlined into both components, as the v1.0 Catalog Schema Rules require: noComponentCommonallOf orunevaluatedProperties, relativecommon_types.json#/$defs/...refs, and$defswith onlyanyComponent(withdiscriminator) andanyFunction. The catalog has no functions.specification/v1_0/test/run_tests.py: registerscatalogs/iframe/catalog.jsonin the structural, identifier and$reftarget checks.conformance/core/catalog.yamladds afrom_jsonselfContainedcase for the published catalog, like the other extension catalogs.catalogs/iframe/web_app_frame_specification.mdand is rewritten against the protocol the stack implements: plainpostMessageand the handshakeMessagePort(no client SDK), allowlists as name to JSON Schema maps, the real error codes, kept author CSP, the actual sandbox flags, and no controls nobody implements (URL allowlist, rate limiting, apermissionsproperty). It stays implementation-neutral and names@a2ui/catalog-iframeas the reference host. Section 4 points tocatalog.jsonfor the schemas.specification/scripts/validate.pyadds aniframeconfig that validates examples undercatalogs/iframe/examples/againstagent_to_renderer.jsonwith this catalog merged into the v1 basic catalog. This PR ships no examples: each of the two working examples lands with its end-to-end test, in [iFrame] Add the srcdoc tip calculator example to the iframe catalog #3008 (WebAppFrameSrcdoc) and [iFrame] Add the url order tracker example to the iframe catalog #3009 (WebAppFrameUrl)..github/workflows/docs.ymlpublishes the catalog atspecification/v1_0/catalogs/iframe/, so the$idURL resolves.catalogs/iframe/README.mddocuments the components and links the specification;catalogs/README.mdlists the new directory.Verification
python3 specification/scripts/validate.py: all configs pass; theiframeconfig finds no examples yet.python3 specification/v1_0/test/run_tests.py: 182 passed.uv run pytest python/a2ui_core/tests/test_conformance.py: 575 passed../scripts/fix_format.sh --checkpasses; every relative link in the added or moved markdown files resolves.Pre-launch Checklist
validate.py).Related to #3157