See it as a diagram
Everything below, as a diagram you can edit. Describe yours and see it in seconds.
No account needed · Editable canvas, not a picture
Turning on developer mode and adding the URL
Custom connectors sit behind developer mode in ChatGPT settings on the web, under the apps and connectors area. OpenAI has moved that toggle more than once, so look for advanced settings rather than a fixed path. Once it is on, choose to add a custom connector and paste the server URL: https://datadef.io/mcp. Local command-based servers are not accepted here, only hosted ones.
Datadef is served over Streamable HTTP, which is what ChatGPT expects. There is no key field to fill in and no header to configure: the endpoint advertises an authorization server, ChatGPT discovers it, and you get a Datadef sign-in page in a browser window.
Settings -> Apps and connectors -> Advanced -> Developer mode Add custom connector -> https://datadef.io/mcp Sign in to Datadef when the browser window opens.
What the OAuth flow does, in one paragraph of detail
The endpoint publishes protected-resource metadata that names its authorization server, and the authorization server publishes its own metadata: an authorization endpoint, a token endpoint, a registration endpoint, and a revocation endpoint. Authorization code with PKCE using S256 is the only flow, refresh tokens are issued, and the single scope is mcp. Dynamic client registration is supported, which is what lets a connector you never told Datadef about obtain a client identifier on its own.
The practical consequences are the ones worth remembering. No long-lived secret sits in a settings field, so a connector cannot be copied to another account by copying a string. Access is per person, so diagrams a connector creates belong to the account that signed in. And the grant is revocable from the Datadef side: connected apps appear on the MCP and integrations page, and disconnecting one invalidates its tokens immediately.
API keys remain the alternative for clients that prefer a header, and both credential types resolve to the same user and the same 36 tools. Key or token, a lapsed plan closes tool access on the next call rather than at issue time, because the plan is rechecked per request.
What ChatGPT can then do, and what it cannot
It can create a diagram from a description, read the diagrams already in your workspace, apply a described change to one, and export a PNG or JPEG with a signed download link. For projects linked to a repository it can also report sync freshness and trigger a resync, though those two tools answer only to the account that owns the repository connection.
It cannot read your codebase. A chat client has no repository open, so the description you give is the whole input. Naming the real services, the zone layout you want, and the technologies involved is what separates a diagram of your system from a diagram of a generic system. For diagrams drawn from code, connect the repository to Datadef and let the sync do the reading.
Worth knowing if you have ever pasted the endpoint into a browser: a plain GET to it returns a readable page describing the server and its tools rather than an authentication error, so assistants and crawlers that fetch the URL get something useful. Protocol traffic is unaffected, since real clients negotiate an event stream or post to the endpoint.
Listing the tools before you connect
Getting the picture out of the chat
export_diagram takes a diagram id, a format of png or jpeg, a viewport width from 600 to 4000 defaulting to 1600, and a height from 400 to 4000 defaulting to 1000. It returns three things at once: the image inline so the assistant can show it, a signed download URL valid for 15 minutes that serves the file with an attachment header and needs no API key, and, when the project has been shared publicly, a permanent image address with a ready-made markdown line.
That third return is the one worth asking for by name. The download link expires, and a document carrying an expired link is worse than one carrying no picture. The permanent address is served with Cache-Control public, max-age=300, stale-while-revalidate=86400 and an ETag built from the canvas id and its updated timestamp, so a README or a wiki page pointing at it shows an edited diagram within about five minutes and never blocks a reader on a cold render.
Everything the connector makes is a project in your workspace rather than an artifact in the transcript. Open it on the canvas, fix what the description could not convey, then share it and paste the live embed line where people actually read documentation.
FAQ
How do I add a custom MCP connector in ChatGPT?
Does ChatGPT need an API key for this server?
Which OAuth flow does the server support?
How do I disconnect a connector afterwards?
Can ChatGPT draw a diagram of my repository through this connector?