# How to get your app into the ChatGPT apps directory

> For the complete documentation index, see [llms.txt](https://workpods.ai/llms.txt)

A listing in the ChatGPT apps directory puts your product inside ChatGPT, where people add it or mention it by name and ChatGPT calls your MCP server to do the work. You upload a plugin ZIP to the OpenAI Platform, clear its automated checks, verify your domain, connect the server, and send test cases and a demo video for review.

## What is the ChatGPT apps directory?

It is where ChatGPT users find and add apps, each one backed by an MCP server that ChatGPT calls during a conversation. A listed app can be suggested and used without the user ever visiting your site.

For an MCP product it's the strongest GEO channel, alongside [Claude's connector directory](https://workpods.ai/guides/mcp-distribution/claude-connector-directory). About 170 people a month search "chatgpt apps directory" and about 480 search "chatgpt apps sdk", mostly builders deciding whether to ship.

## Do I need the ChatGPT Apps SDK?

Not to get listed. The Apps SDK is OpenAI's toolkit for building apps on MCP, including custom interfaces inside the chat, but a plain MCP server with good tools is enough.

Ours has no custom interface. It's 13 MCP tools that audit pages and draft fixes, served from `https://mcp.workpods.ai/mcp` with no sign-in. If your server already works with Claude, most of the work for ChatGPT is packaging and review.

## What do I need before I submit?

You need a verified developer identity in an OpenAI Platform organization, a public HTTPS MCP server and a plugin ZIP. Verification sets the developer name the directory shows, so do it first in the organization settings.

Organization owners can submit; other members need the Apps Management Write permission. The server must speak Streamable HTTP and use OAuth or no authentication, since API keys aren't supported. You also need four HTTPS pages (website, support, privacy policy and terms of service) plus five positive test cases, three negative ones and a demo video reviewers can open. A public issue tracker works as the support page.

## What goes in the plugin ZIP?

The ZIP is a folder in the Agent Plugins format: `plugin.json` at the root, an `mcp.json` naming one remote server, skills under `skills/`, and icons. The listing text and review cases go in `plugin.json` under `extensions.com.openai`, so the dashboard fills in on upload.

```json
{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
  "mcpServers": {
    "agent-ready": {
      "type": "streamable-http",
      "url": "https://mcp.workpods.ai/mcp"
    }
  }
}
```

That is our whole `mcp.json`. Public submissions reject server headers, so never put a token in it. Zip the folder's contents, not the folder:

```bash
cd agent-ready-website-audit
zip -r ../agent-ready-website-audit.zip plugin.json mcp.json skills assets
unzip -l ../agent-ready-website-audit.zip
```

## Which listing limits catch people out?

The display name and short description are capped at 30 characters each, and the dashboard saves a longer draft than it lets you submit. Count before you upload.

| Field | Limit |
|---|---|
| `displayName`, `shortDescription` | 30 characters each |
| `longDescription` | 4,000 characters |
| `defaultPrompt` | Three prompts, 128 characters each, no @mentions |
| `capabilities` | 20 labels, 120 characters each |
| Icons | Square, at least 48 × 48 px, at most 5 MiB |

Our first upload came back with two metadata findings. The description named other AI assistants, and the category didn't match the job; describing the job without brand names and switching from Productivity to Developer Tools cleared both. Pricing words such as "free" aren't allowed either.

```bash
grep -rn -E "Google|ChatGPT|Claude|Perplexity|Gemini|OpenAI|GPTBot|ClaudeBot" plugin.json skills/
```

## How do I verify my domain for a ChatGPT app?

Open **MCPs**, select your server and choose **Connect**: the drawer gives you a token to serve as plain text at `/.well-known/openai-apps-challenge` on the server's hostname. Once **Verify Domain** passes, **Connect** lets OpenAI scan your tools.

```bash
curl -s https://mcp.workpods.ai/.well-known/openai-apps-challenge
# must print exactly the token from the portal, nothing else
```

Only one MCP server can be connected per app, and its URL can't be changed later without contacting support, so pick a hostname you'll keep.

## Why did the scan flag readOnlyHint?

OpenAI's tool scan flags any tool marked read-only whose behaviour has a side effect a user could see. Six of our checks were flagged because each one saved a shareable report page, which counts as a side effect even though nothing on the checked site changed.

We changed the server so checks save nothing. Each returns a `resultId`, and a separate `share_report` tool saves the report page only when the person asks for a link. That tool is marked as a write, and as open-world because the report is a public page:

```typescript
const READ_ONLY = { readOnlyHint: true, destructiveHint: false, openWorldHint: true } as const
// share_report: saves a public report page, so it is a write that reaches the open web.
const SAVES_REPORT = { readOnlyHint: false, destructiveHint: false, openWorldHint: true } as const
```

After a rescan the portal showed "No findings in the latest MCP scan". Three of our 13 tools are now writes: the one that sends an audit request, the one that starts a crawl and `share_report`. Our guide to [MCP tool descriptions](https://workpods.ai/guides/mcp-distribution/mcp-tool-descriptions) explains each hint.

## What goes in the review submission?

Five positive test cases, three negative ones and a demo video. Ours cover a page audit, AI crawler access, drafting robots.txt rules, comparing two pages and a 10-page crawl, and the video runs about 1 minute 50 seconds.

```json
{
  "description": "Check AI crawler access",
  "prompt": "Which AI crawlers may read https://workpods.ai?",
  "tools_triggered": "check_ai_crawler_access",
  "expected_behavior": "Gives a verdict per AI crawler and names any crawler that is blocked."
}
```

The negative cases are a weather question, a translation and a general SEO question with no page to check, where the app should stay out of it. For the video, add your server as a custom MCP plugin, start each scene in a new chat and hide your sidebar. Put the video's link in `plugin.json` as `review.demo_recording_url`.

After publication, OpenAI keeps scanning the server and holds new tools for approval, so names and annotations stay part of the listing. Next in the series is the [MCP Registry](https://workpods.ai/guides/mcp-distribution/mcp-registry), and every channel is ranked in our [MCP directory guide](https://workpods.ai/guides/mcp-distribution). To see how agents read your site and server first, run [Agent Ready](https://workpods.ai/tools/agent-ready), or have us handle it as part of our [agent platform work](https://workpods.ai/axo/agent-platforms).

## Sources

- Search volumes: Google Ads keyword data, US, November 2026.
- Limits, checks and scan findings: our own submission on the OpenAI Platform, 11 to 13 November 2026.

## Questions buyers ask

### How do I submit an app to ChatGPT?

Upload a plugin ZIP on the OpenAI Platform, fix any automated findings, verify your domain and connect your MCP server, add five positive and three negative test cases and a demo video, then submit for review.

### Do I need a verified OpenAI account?

Yes. Individual or business verification in your organization settings is required, and it sets the developer name the directory shows.

### Can my ChatGPT app listing mention other assistants?

No. Ours was flagged for naming other assistants, and the finding cleared once we described the job without brand names.

### Do I resubmit when my tools change?

Not for tool changes alone. OpenAI picks those up when it scans the server or when you ask for a rescan. Changes to the listing text, icons or skills need a new ZIP version.

By Prateek Tomar · Reviewed by Shefali Munjal · Published 2026-11-12

---

Source: https://workpods.ai/guides/mcp-distribution/chatgpt-apps-directory · WorkPods.ai, updated 2026-11-12
