Skip to content

Enable scoped inline cards for Design and Content - #8076

Open
3mdistal wants to merge 14 commits into
mcp/scope-embed-sessionsfrom
mcp/inline-existing-targets
Open

3mdistal wants to merge 14 commits into
mcp/scope-embed-sessionsfrom
mcp/inline-existing-targets

Conversation

@3mdistal

@3mdistal 3mdistal commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Three tool results gain live, resource-bound cards inside compatible chat clients: Design generate-screens and export-coding-handoff, and Content share-local-file-document. They reuse the existing editors and read/write contracts. Slides cloning stays an “open in app” link because its editor cannot currently load using only deck-bound reads.

  • Design generation opens the design overview; coding handoff opens the design editor.
  • Content sharing opens the returned SQL copy, using its result ID rather than the local-file input ID.
  • Missing result IDs retain the full-app link. Another resource, an undeclared action, and extra arguments remain refused.

Follow-ups

  • Slides clone-context-slide: the editor requires organization context and starts its loader with list-decks; those reads are not deck-bound.
  • Slides 2 clone-context-slide: the clone produces HTML, but the editor needs React source.
  • Analytics open-traffic-dashboard: bounding its queries is separate work.
  • Calendar manage-event-draft: limiting its account, week and preference reads would change how it behaves.

Authorization and compatibility

Normal action authorization and approval gates still apply. Content's visibility change returned approval_required during browser verification. No click-as-approval flag, new action grant, or migration is added.

The base remains mcp/scope-embed-sessions at 63dbce48b504c50d22e69192519f95c3ab4a90d5. Its widgetActionNames fix is reused; this PR has no build-server.ts diff. Both directory-template-profiles.spec.ts and existing-target-cards.spec.ts remain. Real-registry test fixtures now include ordinary target actions, and the cold three-template scanner has a 120-second timeout.

Slides and Content use standard toolkit auth; Design's custom browser-session hook comes from the base. #8010 was applied only to the remote scratch copy for verification. Its diff is excluded here. After #8071's squash merge, rebase with git rebase --onto origin/main <final-8071-head> before retargeting to main.

Verification

Final head: b7ef040887a08abec3997cc6dc65a4165b8dfe36.

  • Specs: 466 passed across card contracts, real-template profiles, Core MCP routes, call parity and connector catalog checks; 22 Slides profile/clone-action specs passed. No snapshots changed. The separate full-catalog/annotation run also passed 15 checks before the fallback removal.

  • Typechecks: Core, Design, Slides, Slides 2 and Content passed. Generated bridge-file churn from typechecking was discarded. git diff --check passed.

  • Design generation and handoff: production ordinary MCP calls and real nested iframes passed at be5cc902; a control and persisted title saves passed. These contracts are unchanged by the Slides fallback.

  • Content sharing: production ordinary MCP call, nested iframe, and persisted title save passed at be5cc902. Approval handling remained intact. Its contract is unchanged.

  • Slides: a fresh E2B production check of the attempted status grant at cf3c8a3 returned own-deck status 200 with owner access and refused another deck/extra argument. The UI still failed before get-deck: /_agent-native/org/me returned 401, and DeckProvider requires resolved organization context before starting its list-based loader. Controls and save could not run. The attempted status grant and Core public-read plumbing were removed, following the requested link fallback.

  • Final Slides fallback: fresh Core/Slides production rebuilds passed at b7ef040. The ordinary MCP clone returned a full-app link identifying the returned deck and cloned slide, with no inline start session or widget-source ticket. The status action remains absent from the external tool list.

  • Environment: fresh Core and Slides production builds used Linux E2B, inline mode, HTTPS and short-lived scratch PostgreSQL. The PC's expected Node executable is missing; no fresh Windows production build is claimed. Real ChatGPT, Cursor, MCPJam hosts and every editor/sharing control remain unverified.

Full guards were not rerun for this follow-up. The earlier run had 90 passes, existing Assets i18n/dead-settings failures, and an incomplete historical e2e-quarantine scan.

content_product_impact:
  lane: contract_repair
  features:
    - content.feature.work-on-content-inside-another-application
  capabilities:
    - content.agent.action-parity
    - content.embed.mcp-app
  record_change: none
  proof:
    - Production ordinary MCP card rendered the returned SQL copy and persisted a UI title save
    - Its scoped session refused another accessible document, an extra argument, and an undeclared action
  rationale: Reuses the canonical document editor and resource-bound action contract for the shareable SQL copy returned by local-file sharing.

🤖 Generated with Claude Code

@github-actions

Copy link
Copy Markdown
Contributor

Here's a visual recap of what changed:

Visual recap

Open the full interactive recap

builder-io-integration[bot]

This comment was marked as outdated.

@3mdistal
3mdistal force-pushed the mcp/inline-existing-targets branch from 1ce9775 to be5cc90 Compare October 23, 2026 01:02
builder-io-integration[bot]

This comment was marked as outdated.

@3mdistal 3mdistal changed the title Enable scoped inline cards for Design, Slides, and Content Enable scoped inline cards for Design and Content Oct 23, 2026
builder-io-integration[bot]

This comment was marked as outdated.

Copy link
Copy Markdown
Contributor

Thanks for the PR. This adds a Design inline-card entry point alongside Content. Alice's Content-owner review does not cover the Design surface; please get Sid's current review before approval.

@3mdistal
3mdistal force-pushed the mcp/scope-embed-sessions branch from 63dbce4 to c439c87 Compare October 24, 2026 03:19
3mdistal and others added 4 commits October 24, 2026 00:27
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s as links

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Production verification found the ordinary editor requires organization context and a deck list before loading. Remove the inline target and attempted status grant rather than widening its scope. Keep real-profile fixtures complete.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@3mdistal
3mdistal force-pushed the mcp/inline-existing-targets branch from b7ef040 to 23c5d63 Compare October 24, 2026 04:57

@builder-io-integration builder-io-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Builder reviewed your changes — looks good ✅

Review Details

Incremental Code Review Summary

This revision retains the three Design and Content result-backed cards and the full-app fallback for Slides cloning. Most new code is coverage for real-registry ordinary-card validation and resource-bound action arguments, with small test-fixture and timeout adjustments. The previously reported Slides editor access failure remains addressed by removing that target; its review thread was already resolved on the prior incremental review and is not being reposted.

Risk: High — the PR changes scoped embedded authorization. Three independent reviewers found no new high- or medium-severity issue. One reviewer identified a low-impact test-fixture duplication: the added slides-2 shared-action map is unused because loadTemplateActions aliases slides-2 to the slides map. It does not currently change behavior, but the dead entry could be removed or the lookup made direct. The remaining result-ID bindings and scope checks appear consistent.

🧪 Browser testing: Skipped — browser-test-planner is unavailable; this update does not change the previously verified Design and Content UI behavior.

@3mdistal
3mdistal force-pushed the mcp/scope-embed-sessions branch from 3a07d75 to 5efe006 Compare October 24, 2026 14:12

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants