Reference · page 6 / 6
# 6. Pitfalls & resources
Part 6 of 6. ← Testing & publishing · Index
6.1 Common pitfalls on day one
- Wrong annotations. Marking a tool that writes data as
readOnlyHint: true— instant review rejection. - Over-broad input schema.
z.record(z.any())catch-alls get flagged as data hoovering. - Telemetry bleeding into `structuredContent`. Trace IDs, timings, internal SKU IDs show up to the model and to reviewers.
- Widget can't find tool output. Forgetting to re-render on
openai:set_globals, or readingwindow.openai.toolOutputbefore the bridge initialises. - CSP blocks your fetch. You hit an API that isn't in
connectDomains— widget silently fails. - ngrok URL rotated. Free ngrok URLs change on restart; ChatGPT connector goes stale. Pin a reserved domain or use Cloudflare Tunnel.
- SSE vs. Streamable HTTP mismatch. Inspector uses
--transport httpfor Streamable HTTP; use--transport sseif you chose SSE. Mismatches look like a hang. - Forgotten CORS preflight. Inspector needs
OPTIONS /mcpto return 204 with the right headers. - Widget bundles stale. If you update the template, bump the resource URI (e.g.,
ui://widget/todo.html?v=2) — ChatGPT caches aggressively. - OAuth discovery 404. No
/.well-known/oauth-protected-resourceor missingregistration_endpoint→ ChatGPT can't complete DCR and shows a generic auth error. - Chrome 142 local-network flag. Dev-time only, but costs an hour if you don't know.
- Demo account with MFA. Guaranteed rejection — reviewers can't get in.
6.2 Resources (verified 2026-04-24)
Official docs
- Apps SDK overview: https://developers.openai.com/apps-sdk
- Quickstart: https://developers.openai.com/apps-sdk/quickstart
- Build your MCP server: https://developers.openai.com/apps-sdk/build/mcp-server
- Build your ChatGPT UI: https://developers.openai.com/apps-sdk/build/chatgpt-ui
- MCP concept page: https://developers.openai.com/apps-sdk/concepts/mcp-server
- Reference (
_meta,window.openai, annotations, JSON-RPC methods): https://developers.openai.com/apps-sdk/reference - Security & Privacy guide: https://developers.openai.com/apps-sdk/guides/security-privacy
- App submission guidelines: https://developers.openai.com/apps-sdk/app-submission-guidelines
- App Developer Terms: https://openai.com/policies/developer-apps-terms/
- MCP servers for ChatGPT Apps & API: https://developers.openai.com/api/docs/mcp
Code
- Official examples: https://github.com/openai/openai-apps-sdk-examples
- Apps SDK UI component library: https://github.com/openai/apps-sdk-ui
- MCP spec: https://modelcontextprotocol.io
Announcements
- DevDay 2025 announcement: https://openai.com/index/introducing-apps-in-chatgpt/
- "Developers can now submit apps to ChatGPT": https://openai.com/index/developers-can-now-submit-apps-to-chatgpt/
Adjacent / useful
- OpenAI API rate limits (for upstream calls): https://platform.openai.com/docs/guides/rate-limits
- Stytch's Apps SDK auth walkthrough (third-party): https://stytch.com/blog/guide-to-authentication-for-the-openai-apps-sdk/