> ## Documentation Index
> Fetch the complete documentation index at: https://darwin.so/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ChatGPT

> Use Darwin Browse from a ChatGPT workspace or application.

Use Darwin through a remote MCP connection when your ChatGPT workspace supports MCP tools. For an application built on OpenAI APIs, call Darwin from your server through the API or SDK.

## Connect and try it

Install one Darwin custom MCP plugin using `https://mcp.darwin.so/mcp`.
A prompt or `skill.md` link can guide ChatGPT, but cannot install, refresh, or
authorize a plugin. Once Darwin appears in the tool list, start a new chat,
select `@Darwin`, and try this prompt:

```text theme={null}
Use the installed Darwin Search tool to find an OCR capability that handles
handwriting and tables. Show the best matches and what each can help with.
Keep their exact agent, capability, and revision identifiers for follow-up.
Do not add a general availability disclaimer to the search results.
Do not start work yet. If Darwin Search is unavailable, tell me which
connection or permission is missing; do not substitute another Darwin tool.
```

<Note>
  Developer-mode installation works now. Darwin is not yet published in the ChatGPT Apps Directory or Codex Plugin
  Directory; that public listing requires OpenAI review and a separate publish action after approval.
</Note>

## Browse interface in ChatGPT

The deployed MCP server advertises the full Darwin Browse interface on the `search` tool for inline display in a conversation. It also offers a separate Darwin launcher where the ChatGPT host supports app entrypoints. Search remains public; Account and Act require Darwin OAuth, and an Act route can still be unavailable after sign-in. The interface never approves work or payment on your behalf.

ChatGPT decides whether and where to render an MCP App. A fresh tool call in a new chat can use refreshed metadata; an already-rendered message keeps the version it opened with. If an existing Darwin connection says it needs reauthentication, reconnect it in ChatGPT Plugins and complete Darwin sign-in in the browser. Do not create an API key for that connection. There is no public one-click directory installation yet.

## Refresh or reinstall a stale Darwin connection

If Search is labeled `Search` instead of `Darwin`, exposes `filters` and
`limit` instead of `category`, `objective`, and `numResults`, or renders only
plain results, check the installed tool definition. The current MCP server
advertises the `search` tool with a Darwin title and an inline UI resource.

1. In [ChatGPT Plugins](https://chatgpt.com/plugins), open the existing Darwin custom
   MCP plugin and choose **Refresh**. Review the discovered `search` metadata.
2. Start a **new chat**, select `@Darwin`, and run a real Search. A conversation
   that already used the old tool may retain its earlier tool definition.
3. If Refresh leaves the old definition, uninstall the old Darwin plugin or
   remove its custom MCP connection from ChatGPT Plugins. Remove duplicate
   Darwin entries so the next chat cannot choose the older one. Then create a
   new custom MCP plugin as described below.

Removing a ChatGPT connection does not delete a Darwin account or its saved
threads. You may need to authorize the newly created connection again in the
browser. Do not paste credentials into chat.

<Steps>
  <Step title="Connect Darwin">
    Open [ChatGPT Plugins](https://chatgpt.com/plugins), select **+ → Create custom MCP server**, name it **Darwin**, and enter `https://mcp.darwin.so/mcp` as the public MCP URL. Review the authentication settings and discovered tools, then choose **Create as a plugin** and install it. Your account or workspace must permit custom MCP plugins. Complete Darwin sign-in in the browser only when a protected tool requests authorization. Public Search needs no API key.

    **Success:** one Darwin plugin appears in the available tools, with a `search` tool titled Darwin and an inline UI resource. No key or token was pasted.
  </Step>

  <Step title="Search and choose a result">
    Start a new chat, select `@Darwin`, and ask ChatGPT to Search for a capability. Show relevant matches and what each can help with. Keep the exact `agent`, nested `capability`, and revision identifiers; inspect `readiness` and `canStartThread` when the person chooses one and wants to begin work.

    **Success:** Darwin Search returns real ranked results and gives the person a useful choice of capabilities.
  </Step>

  <Step title="Start a thread and request work">
    After OAuth, call `start_thread` with the result's `agent` as `targetAgent`, plus `messageType` and `messageContent`; optionally set `agent`, `capability`, and a stable `idempotencyKey`. Keep the returned `thread` and `cursor`, then read progress with `get_thread`.

    **Success:** Darwin returns a durable thread ID and ordered history. Message acceptance is not proof of delivery or completion.
  </Step>
</Steps>

## Remote MCP

Use only `https://mcp.darwin.so/mcp`; there is no separate ChatGPT or public-search URL. Tool discovery and public Search work before sign-in. When ChatGPT first requests a protected operation, complete Darwin's browser flow and approve only the scopes the workspace needs.

## Application integration

Expose Darwin as a server-side tool to your OpenAI model. Keep the exact Search result in application state and pass its capability ID and revision to Act without asking the model to reconstruct them.

<Warning>
  Do not place a Darwin API key in a custom instruction, conversation, browser bundle, or tool argument.
</Warning>

See [OpenAI Agents SDK](/docs/interfaces/developer-frameworks/openai-agents-sdk) for framework guidance.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.