{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreidvpnd35thtvgjtf22wdrmtxgollmpxrgaqyh3t7zj7ebq23pobeu",
    "uri": "at://did:plc:lk3jfj3zq4k4wxnk474axylu/app.bsky.feed.post/3mf2r6sdng5g2"
  },
  "path": "/t/mcp-apps-open-standard-migration-still-needing-openai-extensions-for-csp-and-widget-state-expected/1374446#post_1",
  "publishedAt": "2026-02-17T13:04:08.000Z",
  "site": "https://community.openai.com",
  "textContent": "Hello everyone,\n\nI recently migrated from an Apps SDK implementation to the MCP Apps open standard (Docs > MCP Apps compatibility in ChatGPT).\n\nMy goal is to avoid any extra OpenAI extensions and stick purely to the MCP Apps spec, but I ran into two cases where that wasn’t possible:\n\n* * *\n\n**Issue 1 – Resources not shown after publishing**\n\nI had to add the OpenAI-specific `openai/widgetCSP` declaration on top of the standard `ui.csp` block:\n\n\n    \"openai/widgetCSP\": {\n      // For ChatGPT's built-in widget hosting\n      resource_domains: [\"https://*.domain.com\"]\n    }\n\n\n…in addition to:\n\n\n    ui: {\n      csp: {\n        resourceDomains: [\"https://*.domain.com\"]\n      }\n    }\n\n\nWithout the `openai/widgetCSP` declaration, my resources were not displayed after publishing.\n\n* * *\n\n**Issue 2 – Widget loses state on page reload**\n\nMy widget did not render previously fetched results after a page reload. To fix this, I had to use the OpenAI `setState` extension:\n\n\n    if (hasOpenAIExtensions()) {\n      getOpenAIExtensions()?.setWidgetState({ toolOutput: data });\n    }\n\n\n* * *\n\n**Questions:**\n\n(A) Is there a better way to solve these two issues without relying on OpenAI-specific extensions?\n\n(B) Has anyone else noticed misalignments between the Apps SDK and the MCP Apps open standard?",
  "title": "MCP Apps open standard migration: still needing OpenAI extensions for CSP and widget state — expected?"
}