Summary
Paybox (MoonPay) reports that Grok’s MCP Apps iframe host is extremely buggy when rendering Paybox’s in-chat UI widgets via a custom BYO MCP connector (https://mcp.paybox.sh or equivalent production endpoint).
The same Paybox MCP App UI resource renders on other major hosts (ChatGPT, Claude with correct handshake/CSP), but Grok’s iframe lifecycle is unreliable enough to block normal Paybox flows (signing, approvals, balance updates).
Reporter
MoonPay Paybox team (internal escalation from Paybox engineering)
Environment
- Host: Grok web (grok.com) — custom MCP connector (Bring Your Own MCP)
- MCP server: Paybox MCP (wallet / approvals / signing UI)
- UI: MCP Apps HTML resources (
text/html;profile=mcp-app) served from Paybox iframe surfaces (app.paybox.sh)
- Protocol: MCP Apps /
io.modelcontextprotocol/ui capability
Observed problems (high level)
Paybox engineers report Grok’s iframe support is extremely buggy compared to Claude and ChatGPT. Symptoms align with known MCP Apps host-integration failure modes:
- Stale / non-updating UI — iframe continues showing prior state (e.g. pending approval button) after the underlying transaction completes; host does not deliver updated
tool-result / lifecycle notifications reliably.
- Signing window failures — signing / passkey approval surfaces fail to load or hang inside Grok’s embedded iframe.
- Multiple concurrent iframes — duplicate widget instances for a single logical action (e.g. several signer-key regeneration iframes in one session), with poor cross-iframe state coordination.
- General iframe lifecycle instability — intermittent blank/hidden widgets, missed
ui/initialize / ui/notifications/initialized handshakes, or postMessage delivery gaps (similar symptoms documented for other hosts in ext-apps issues, but Grok-specific regressions appear worse / more frequent for Paybox).
Expected behavior
Per MCP Apps host requirements:
- Host calls
tools/call and receives structuredContent + UI linkage via _meta.ui.resourceUri
- Host fetches HTML via
resources/read and mounts sandboxed iframe
- Host completes UI handshake and delivers
tool-input / tool-result notifications
- Widget updates reflect server state changes without requiring the user to ask the model to “verify” or open external approval links
Actual behavior
Grok intermittently fails steps 2–4. Users see broken, stale, or duplicated Paybox UI inside Grok chat while the same flows work on other MCP hosts.
References / related issues
Request for xAI / Grok host team
Please investigate Grok’s MCP Apps iframe host implementation for custom connectors:
- iframe mount + visibility (
ui/initialize / ui/notifications/initialized)
- delivery of
tool-result and lifecycle notifications after state changes
- handling multiple widgets in one conversation
- CSP / sandbox / postMessage bridge for third-party MCP App origins
Happy to provide repro videos, connector URL, and server logs on request.
Summary
Paybox (MoonPay) reports that Grok’s MCP Apps iframe host is extremely buggy when rendering Paybox’s in-chat UI widgets via a custom BYO MCP connector (
https://mcp.paybox.shor equivalent production endpoint).The same Paybox MCP App UI resource renders on other major hosts (ChatGPT, Claude with correct handshake/CSP), but Grok’s iframe lifecycle is unreliable enough to block normal Paybox flows (signing, approvals, balance updates).
Reporter
MoonPay Paybox team (internal escalation from Paybox engineering)
Environment
text/html;profile=mcp-app) served from Paybox iframe surfaces (app.paybox.sh)io.modelcontextprotocol/uicapabilityObserved problems (high level)
Paybox engineers report Grok’s iframe support is extremely buggy compared to Claude and ChatGPT. Symptoms align with known MCP Apps host-integration failure modes:
tool-result/ lifecycle notifications reliably.ui/initialize/ui/notifications/initializedhandshakes, or postMessage delivery gaps (similar symptoms documented for other hosts in ext-apps issues, but Grok-specific regressions appear worse / more frequent for Paybox).Expected behavior
Per MCP Apps host requirements:
tools/calland receivesstructuredContent+ UI linkage via_meta.ui.resourceUriresources/readand mounts sandboxed iframetool-input/tool-resultnotificationsActual behavior
Grok intermittently fails steps 2–4. Users see broken, stale, or duplicated Paybox UI inside Grok chat while the same flows work on other MCP hosts.
References / related issues
Request for xAI / Grok host team
Please investigate Grok’s MCP Apps iframe host implementation for custom connectors:
ui/initialize/ui/notifications/initialized)tool-resultand lifecycle notifications after state changesHappy to provide repro videos, connector URL, and server logs on request.