The Problem
Different AI runtimes use different APIs to communicate with embedded widgets:- ChatGPT uses the Apps SDK with
window.openaiglobal - MCP Apps use JSON-RPC postMessage protocol (MCP ext-apps spec)
Skybridge’s Solution
Skybridge introduces an adaptor layer that normalizes these differences: These include useToolInfo, useCallTool, and other API hooks. Skybridge automatically detects which runtime is available and uses the appropriate adaptor.Benefits
Future-Proof
As new AI platforms adopt MCP, your widgets will work without code changes
No Vendor Lock-in
Build once, deploy to multiple AI clients: ChatGPT, Claude, Goose, VSCode, and more
Single Codebase
One set of hooks, one mental model, multiple platforms
Graceful Degradation
Platform-specific features degrade gracefully with clear warnings
Runtime Compatibility
Not all features are available on all platforms. See the API Reference for a full compatibility matrix. Runtime-specific features:- useFiles, useSetOpenInAppUrl are Apps SDK only
- useWidgetState and data-llm attribute in MCP Apps is polyfilled to persist state, and doesn’t persist state across widget renders
- useRequestModal in MCP Apps is polyfilled to render in an iframe instead of a host modal
Related
- MCP Apps - The open MCP ext-apps specification and client support
- Apps SDK (ChatGPT) - ChatGPT-specific features and APIs
- API Reference - Full hook compatibility matrix