> For the complete documentation index, see [llms.txt](https://docs.flowcp.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.flowcp.ai/guides/publish-to-chatgpt.md).

# Publish to ChatGPT

This guide covers submitting your FlowCP server to the **ChatGPT Apps Directory** (and the Codex Plugin Directory) so anyone can discover and install it. OpenAI reviews every app before it goes live, so the flow is: deploy your server, test it privately in **developer mode**, then submit it through the [OpenAI Platform Dashboard](https://platform.openai.com/apps-manage) for review.

> **Just want it for yourself or your team?** You don't need to submit anything. Add the server as a custom connector in ChatGPT developer mode — see [Integrate with AI clients](/guides/integrate-with-ai-clients.md). Only submit if you intend the app to be **publicly** available in the countries you choose.

The canonical, always-current reference is OpenAI's [Submit and maintain your app](https://developers.openai.com/apps-sdk/deploy/submission). This page maps that flow to FlowCP.

## Prerequisites

* **A deployed production server.** Your server must be in **Production** with a publicly accessible URL — not a local or development endpoint. FlowCP's production URL (`https://runtime.flowcp.io/mcp/<server-id>`, or your verified [custom domain](/guides/custom-domain.md)) satisfies this. See [Deploy your MCP server](/guides/publish-your-mcp-server.md). Submit this single universal URL — it works for all users.
* **OAuth configured.** Run every call in the end user's own context with user-context OAuth (see [Configure MCP Auth](/guides/configure-oauth.md)). You'll supply the OAuth credentials in the submission form.
* **A content security policy (CSP).** OpenAI requires your app to declare the exact domains it fetches from. This matters most when you ship [MCP widgets](/guides/build-widgets.md).
* **Organization verification.** Complete individual or business verification in the OpenAI Platform Dashboard for the name you'll publish under — it is enforced at review.
* **App management permission.** You need the `api.apps.write` permission to create and submit drafts (organization owners have it by default).
* **A privacy policy and a test account.** Have a public privacy policy URL and a working demo account **with no MFA** so reviewers can sign in and exercise every tool end to end.

## Step 1 — Test in developer mode

1. In FlowCP, open **Distribute → MCP clients** and copy the production server URL (see [Integrate with AI clients](/guides/integrate-with-ai-clients.md)).
2. In ChatGPT, enable developer mode under **Settings → Apps & Connectors → Advanced settings**.
3. Add your FlowCP server as a custom connector and authorize it.
4. Exercise every tool on both the ChatGPT web and mobile apps, confirming the results match what you expect.

## Step 2 — Prepare your submission

Get these ready before you open the form:

* **Directory metadata** — a clear, specific app name and description. Avoid generic single-word names, which are often rejected.
* **Accurate tool definitions** — human-readable tool names and descriptions, and correct hint annotations. `readOnlyHint`, `destructiveHint`, and `openWorldHint` must match what each tool actually does. In FlowCP these map to your [tool risk levels](/reference/tool-risk-levels.md) (`read` / `write` / `destructive`) and the **Require confirmation** toggle — review them on the [Tools page](/guides/review-and-customize-tools.md) before submitting.
* **Privacy policy** that discloses exactly the user-related data your tools return. Don't return PII, internal identifiers, or secrets you don't disclose.
* **Listing assets** — logo, screenshots, test prompts with their expected responses, localization details, and the countries where the app should be available.

## Step 3 — Submit for review

At [platform.openai.com/apps-manage](https://platform.openai.com/apps-manage):

1. Add your MCP server details, including OAuth credentials if OAuth is selected.
2. Complete the submission form (app name, logo, description, company and privacy policy URLs, MCP and tool information, screenshots, test prompts and responses, localization) and check all confirmation boxes.
3. Click **Submit for review**. You'll get an email confirming submission with a **Case ID** to reference in any support requests.

> **Notes.** Only one version of an app can be in review or published at a time — to change a pending submission, choose **Cancel Review** and resubmit the draft. Projects with EU data residency can't submit; use a project with global data residency.

## Step 4 — Review, approval, and publishing

Your app enters the review queue; track status in the dashboard and by email. OpenAI may run automated scans and manual reviews.

* **Approved** — click **Publish** from the dashboard to list it in the App Directory (OpenAI also creates a Codex plugin). It is not listed until you publish.
* **Rejected** — you'll get feedback on which checks failed. Fix the issues and resubmit, or appeal by replying to the email with a clear rationale.

Common rejection reasons worth pre-empting:

* Reviewers can't connect using the MCP URL and/or test credentials (broken creds, expired creds, or MFA on the demo account).
* One or more test cases didn't produce the expected result.
* Tools return user-related data not disclosed in the privacy policy.
* Tool hint annotations don't match the tool's real behavior.

## Discoverability

Once published, users find your app by clicking its direct directory link (shown next to the **Published** status in the dashboard) or by searching its name. Enhanced placement — directory features or proactive suggestions — is selective and can't be requested.

## Updating a published app

OpenAI **snapshots** your tool and metadata contract when you submit. Because FlowCP reads tools dynamically, deploying a change updates your live tool results immediately but does **not** update the published snapshot at OpenAI. To change what users see:

1. Make **backward-compatible** changes only (add tools or fields; don't remove or rename them). The app's base MCP server URL can't change between versions.
2. Create a new draft **version**, submit it for review, and publish once approved.

If a server deployment would break the published contract, roll it back rather than wait for a new version to clear review.

## Learn more

* [Submit and maintain your app](https://developers.openai.com/apps-sdk/deploy/submission) — OpenAI
* [App submission guidelines](https://developers.openai.com/apps-sdk/app-submission-guidelines) — OpenAI
* [Deploy your MCP server](/guides/publish-your-mcp-server.md)
* [Integrate with AI clients](/guides/integrate-with-ai-clients.md)
