There are two common ways people mean "ChatGPT connector."
One is API-side: use a remote MCP server as a tool with the OpenAI Responses API. The other is product-side: make something a user can add inside ChatGPT or a custom assistant workflow. The first path is the cleanest place to start because it can be generated from OpenAPI and tested before any broader distribution.
Start with the remote MCP shape
OpenAPI gives you the operations, schemas, auth hints, and base URL. Sourced turns that into:
- an MCP server
- a default read-only tool allowlist
- a ChatGPT remote MCP config
- a safety report
- a generated test harness
- a draft PR plan
The generated ChatGPT config includes a public HTTPS MCP endpoint, a stable server label, allowed tools, and approval behavior for anything beyond the safe default surface.
Use approval settings deliberately
ChatGPT and OpenAI's API-side tool configuration can model approval requirements. That is useful, but it is not a substitute for a good allowlist.
The safest first launch is:
- expose only non-sensitive read tools
- require approval for broader tool access
- keep destructive operations out of the default set
- document what each tool changes
If a tool sends money, deletes data, rotates secrets, publishes content, or messages a user, Sourced keeps it out of the default set until a human owner approves it.
Keep secrets out of generated files
The generated MCP server reads upstream API credentials from environment variables. The connector uses a separate MCP endpoint token when needed. The ZIP or GitHub repo stores placeholders, not real bearer tokens.
That gives users a safe review artifact. A browser copy panel can still provide an explicit "copy with token" action after verification, but the default rendered code is safe to screenshot, commit, and review.
What Sourced shows
Sourced keeps the setup to one action at a time:
- upload spec
- review safety report
- deploy or choose an existing hosted MCP endpoint
- validate endpoint
- copy ChatGPT config
The page does not send users to a generic docs page when a concrete field is missing. If the hosted URL is missing, it asks for that. If auth is missing, it asks for that. If OAuth needs a full consent setup, it blocks the connector and explains why.
When to create a PR
Opening a PR can be useful, but only in the customer's own repository and only after explicit approval. The generated PR body lists the exact files, the safety summary, and the tests that ran.
The product is not "spray connector PRs across GitHub." The product is "generate a tested, owner-approved adapter pack."