MCP servers for SEO and GEOPart 2 of 6
How to get your app into the ChatGPT apps directory
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. 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.
{
"$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:
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.
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.
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:
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 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.
{
"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, and every channel is ranked in our MCP directory guide. To see how agents read your site and server first, run Agent Ready, or have us handle it as part of our agent platform work.
Questions
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.