Skip to main content
Dawloom

Submit an MCP server to the ChatGPT and Claude directories

Dawloom engineering 11 min read
Submit an MCP server to the ChatGPT and Claude directories

You can list one remote MCP server in both directories, but you submit it twice, in two different ways. OpenAI wants a plugin ZIP, a verified identity, a domain token, all three hint annotations on every tool, and five positive plus three negative test cases. Anthropic wants a form at claude.ai/directory/manage, a title and a read or write hint on every tool, a test account, and at least three example prompts.

Build the server once so it passes the stricter rule on each point. Then the two submissions are mostly paperwork. We read every rule below on OpenAI’s and Anthropic’s own docs on 2026-10-14.

Who this is for: a team that already runs a remote MCP server, or is about to, and wants it listed where ChatGPT and Claude users can find it. Who should look elsewhere: if only your own staff will use the server, you don’t need a listing. Add it as a custom connector instead. OpenAI says the same: “For private or workspace-only use, use a custom MCP server connection instead” (OpenAI review requirements). If you’re still deciding whether you need a server or a ChatGPT plugin at all, read ChatGPT app vs MCP server vs Custom GPT first.

Most guides that rank for this question cover one directory. We found none that puts both side by side, and several still describe OpenAI’s old submission form, which a plugin ZIP replaced.

The two reviews side by side

The two reviews side by side
ChatGPT and Codex plugin directory (OpenAI)Claude Connectors Directory (Anthropic)
Where you submitPlugins page in the OpenAI Platform dashboardclaude.ai/directory/manage, then MCP connector
What you uploadA plugin ZIP (plugin.json, mcp.json, icons, optional skills), then you connect the serverThe server URL. Tools sync from the live server
Who can submitOrganization owners, or members with “Apps Management Write""Anyone on a paid Claude plan”: Pro, Max, Team, or Enterprise. On Team and Enterprise, an Owner
Identity”individual or business verification”. Unverified names are rejectedCompany name, website, and a contact. Policy asks for “verified contact information”
Domain proofA plain-text token at /.well-known/openai-apps-challengeNo file or DNS challenge in the portal steps. Policy says you must “own or control” the endpoint and domain
TransportA “stable, public HTTPS endpoint”Remote over HTTPS. Policy: servers “should support the Streamable HTTP transport”
AuthNone, OAuth, or mixed. No API key flow in the portalOAuth 2.0, a custom connection, or none
Tool hintsreadOnlyHint, destructiveHint, openWorldHint as explicit booleans on every toolA title, plus readOnlyHint or destructiveHint, on every tool
Tool namesUnique, plain, ideally a verb such as get_order_status64 characters or fewer
Test material”Five positive test cases”, “Three negative test cases”, and a video walkthroughA test account and “at least three working examples of prompts”
Reviewer loginMust work “without MFA approval, email or SMS codes, magic links""credentials for a fully populated account”
Listing textName and subtitle 30 characters each, description up to 4,000Name up to 100, one-liner up to 200, description up to 2,000, 1 to 5 categories
Required URLsWebsite, support, privacy policy, and terms of serviceDocumentation, privacy policy, and a support contact
Screenshots”Screenshots are no longer shown in the Directory”MCP Apps with UI only: 3 to 5 PNGs, at least 1,000 px wide
What review isAutomated checks, then people. No published timelineAutomated scan, then listed as Community by default. Some get a slower Verified review
After launchOpenAI “scans your hosted MCP server daily”. New tools wait for checks”initial and ongoing reviews”. You get a health and usage dashboard
Not acceptedSelling digital goods, ads, “Trial or demo plugins”, projects with EU data residencyMoving money, AI image, video, or audio generation, ads

Sources, all opened 2026-10-14: OpenAI’s submission guide, review requirements, and plugin guidelines. Anthropic’s publish page, connector submission page, connector review checklist, and Software Directory Policy.

The biggest differences, in their words

OpenAI asks for more proof up front. You verify who you are, prove the domain, and hand over a test script: “Include the scenario, user prompt, expected tools, and expected result. Run each case using the test account before submitting.” The three negative cases are prompts “where the plugin should not act”. You also record a video of the cases.

Anthropic lists first and checks deeper later. “Anthropic scans your submission automatically for policy compliance and, by default, lists it as a Community connector with no action from you.” Some listings then get escalated: “Verified review, which is higher touch and slower, and in which reviewers run a functional test of each tool” (review checklist).

OpenAI’s hints are stricter. It wants all three as booleans: “Set readOnlyHint, destructiveHint, and openWorldHint to explicit boolean values (true or false) in each tool’s annotations object.” Anthropic needs the title and the read or write hint, because “These determine auto-permissions in Claude. Read-only tools can run without per-call confirmation, and destructive tools always prompt.”

Anthropic bans catch-all tools outright. “A single tool that accepts both safe HTTP methods … and unsafe methods … is rejected. Don’t ship a catch-all api_request tool with a method parameter.” OpenAI says the same thing more broadly: “Expose each model-callable operation as a separate tool.”

OpenAI cares about what your tools return. Tool responses must “return only data that is directly relevant to the user’s request”. The guidelines name “session IDs, trace IDs, request IDs, timestamps, or logging metadata” as things to leave out unless they are “strictly required to fulfill the user’s query.” Its top rejection reasons include a reviewer who can’t log in, test cases that don’t match, and “user-related data types that are not disclosed in your privacy policy” (review requirements).

One tool definition that passes both

Write every tool to the stricter rule on each side: a title for Anthropic, all three hints for OpenAI, a short verb name, and an output with no ids or timings the user didn’t ask for. This is a real tool from our public server at https://dawloom.com/mcp, trimmed:

{
  "name": "list_supported_formats",
  "title": "List convertible document formats",
  "description": "List every file extension convert_document accepts, with the maximum file size. Call this when you need to check a format before converting.",
  "inputSchema": { "type": "object", "properties": {} },
  "outputSchema": {
    "type": "object",
    "properties": {
      "formats": { "type": "array", "items": { "type": "string" } },
      "max_file_size_bytes": { "type": "number" }
    },
    "required": ["formats", "max_file_size_bytes"]
  },
  "annotations": { "readOnlyHint": true, "destructiveHint": false, "openWorldHint": false }
}

openWorldHint is false here because the tool only reads a fixed list. OpenAI’s rule: “A tool confined to a bounded private account, workspace, or catalog may use false.” Our other tool, convert_document, fetches any URL the user gives it, so it sets openWorldHint: true.

For the OpenAI plugin, the same server goes in the package’s mcp.json. OpenAI’s own example uses this shape:

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
  "mcpServers": {
    "dawloom": { "type": "streamable-http", "url": "https://dawloom.com/mcp" }
  }
}

Anthropic needs no file. You paste the URL and the portal reads the tools.

A preflight check you can run on your server

We wrote a small script that checks the parts of both reviews you can see from outside: HTTPS, a Streamable HTTP handshake, every tool’s name length, title, and hints, catch-all tools, output fields that look like ids or timings, OpenAI’s challenge path, and whether your listing URLs load. It’s one file for Node 22 or later, with no dependencies: submit-mcp-server-to-chatgpt-and-claude-preflight.mjs.

node submit-mcp-server-to-chatgpt-and-claude-preflight.mjs https://dawloom.com/mcp \
  --privacy https://dawloom.com/privacy/ --terms https://dawloom.com/terms/ \
  --support https://dawloom.com/contact/ --docs https://dawloom.com/developers/

This is the real output for our own server on 2026-10-14, trimmed to the rows that matter:

Area                         Check                                      OpenAI  Claude  Note
server                       Public HTTPS URL                           pass    pass
server                       Streamable HTTP initialize                 pass    pass    protocol 2025-06-18, application/json
tool convert_document        Title                                      pass    pass
tool convert_document        readOnly, destructive, openWorld hints set pass    pass    true/false/true
tool convert_document        No internal ids or telemetry in output     warn    warn    check: duration_ms
tool list_supported_formats  readOnly, destructive, openWorld hints set pass    pass    true/false/false
listing                      OpenAI domain challenge path               warn    -       HTTP 404 at /.well-known/openai-apps-challenge
listing                      Terms of service URL                       FAIL    -       HTTP 404 https://dawloom.com/terms/
listing                      Privacy policy URL                         pass    pass    HTTP 200
listing                      Documentation URL                          pass    pass    HTTP 200

1 fail, 2 warn.

So our own server isn’t ready for OpenAI yet. We have no terms of service page, which OpenAI lists as required for MCP review. convert_document returns duration_ms, a timing field OpenAI’s rules ask you to leave out unless the user needs it. The challenge path is a warning only: the portal gives you the token when you connect, so a 404 before that is normal.

We also ran the script against a deliberately bad local server with a catch-all api_request tool, a 70-character name, missing hints, and request_id in its output. It flagged all of them, with 10 fails and 5 warnings.

The script can’t judge whether your descriptions are accurate, whether your test cases pass, or whether a reviewer accepts your use case. For a live check of the protocol itself, use our MCP server checker, which the checker post explains.

The use-case rules most people miss

Passing the checks above doesn’t mean approval. Both directories also judge what the server is for.

  • OpenAI wants something ChatGPT can’t already do. Plugins “should provide functionality or workflows that are not natively supported by the products’ built-in capabilities.” And: “Trial or demo plugins will not be accepted.”
  • Both reject unofficial connectors. OpenAI: “We cannot approve plugins that primarily function as unofficial connectors to third-party services.” Anthropic: “Your server must call your own first-party APIs, or APIs you legitimately proxy. The MCP server domain should match your service.”
  • Both reject ads. OpenAI: plugins “must not serve advertisements.” Anthropic does not accept software that “serves advertisements, sponsored content, paid product placements.”
  • Anthropic rejects money movement and media generation. Connectors that “Transfer money, cryptocurrency, or other financial assets” or “Generate images, video, or audio through AI models” aren’t accepted. Diagrams and charts are fine.
  • OpenAI limits selling. Only physical goods, with checkout on your own site. We cover the money rules in can a ChatGPT app charge users.

The first rule is a real risk for our own server. ChatGPT and Claude both read Word and PDF files on their own, so a document converter may not count as something the product “can’t already do”. We haven’t submitted dawloom.com/mcp to either directory yet.

How long review takes

Neither company publishes a timeline. OpenAI says “Review timelines may vary” and asks you not to request a faster review. Anthropic says “Review time isn’t fixed.”

The only numbers we found are crowdsourced on reviewtimes.fyi, which publishes no method. On 2026-10-14 it tracked 32 ChatGPT plugin submissions: 5 approvals with a median of 8 days, 6 rejections with a median of 3 days, and 13 still waiting. For Claude it tracked 12 connector submissions, with 5 approvals at a median of 0 days and 6 still waiting (Claude page). These samples are tiny. Treat them as a hint, not a forecast.

The order we’d do it in

  1. Make the server pass the table above: titles, all three hints, separate read and write tools, no ids or timings in output, and Streamable HTTP over HTTPS.
  2. If tools touch a user’s data, add OAuth. Our OAuth 2.1 guide for MCP servers covers it. Make a reviewer account with sample data and no MFA.
  3. Publish a privacy policy, terms of service, support page, and docs page. One page per URL is enough.
  4. Run the preflight script and fix every fail.
  5. Submit to Claude first. It has fewer steps, and the Community listing comes from an automated scan.
  6. Write the five positive and three negative test cases, record the video, build the plugin ZIP, verify your identity, and submit to OpenAI.
  7. After launch, keep the published tool schemas working. OpenAI holds changed tools until they pass checks and keeps serving the old definition, so “Keep your server compatible with the live definition while an update is held.”

One more OpenAI rule to plan for: “The MCP server origin (scheme, hostname, or port) can’t change between versions.” Pick the final hostname before you submit. Our MCP server hosting guide covers where to run it.

FAQ

How do I submit an MCP server to the Claude connectors directory?

Open claude.ai/directory/manage from a paid Claude account, select Submit new, and choose MCP connector. Paste your https:// URL, let the tools sync, then fill in the listing, use cases, company, auth, data handling, test account, and seven policy acknowledgments.

Can the same MCP server be listed in ChatGPT and Claude?

Yes. Both directories take a remote MCP server over HTTPS, and both read standard MCP tool annotations. You submit twice: a plugin ZIP to OpenAI and a portal form to Anthropic. Write each tool to the stricter rule on both sides.

Do I need OAuth to get listed?

Only if your tools act on a user’s account. Anthropic asks for OAuth 2.0 in that case and allows no auth “for public data”. OpenAI’s portal supports no auth, OAuth, or a mix, and has no API key flow.

Why was my ChatGPT plugin rejected?

OpenAI’s most common reasons are a reviewer who can’t connect or log in, test cases that don’t produce the expected result, data returned that your privacy policy doesn’t disclose, and hint annotations that don’t match what a tool does (review requirements).

Does Anthropic need test prompts like OpenAI’s eight test cases?

Anthropic’s policy asks for “at least three working examples of prompts or use cases” and a test account with sample data. It doesn’t ask for negative cases or a video.

Our public server at https://dawloom.com/mcp is documented on the developer portal if you want to see a small one first. If you want a server built to pass both reviews, see how we scope MCP servers.

More in MCP servers Need this built? See MCP server development

Got something to build?

Tell us what you need. An engineer replies, not a sales team.

Search the whole site