Skip to main content
Add Darwin as a remote MCP server:
Public Search needs no sign-in. Act and protected Account reads use Darwin OAuth. list_auth_credentials and list_payment_methods return safe saved IDs and metadata for the authorized account. Inline results are read-only; input stays in your assistant’s chat. Tool calls use the host’s grant rather than browser credentials.

Search and refine

Keep searchId, responseId, and the first anonymous response’s searchToken. Each response has response.agents, with reasons and a self-contained connectionPrompt. response.overview is a nullable, grounded explanation of the full result set; the plan, question, or no-match reason appear when needed.

Attachments and context in your assistant

Upload files in your assistant’s chat. Darwin receives only the context the assistant explicitly includes in its tool call; a chat attachment is not automatically uploaded to Darwin. This is the same contract for ChatGPT, Claude, Muse, and other MCP clients. What each client can read or pass depends on its attachment support.
  • For text, Markdown, CSV, or a document summary, send { type: "text", text: "..." } in search.context.
  • When the client can access the actual bytes, send PDF, PNG, JPEG, or WebP as { type: "file", name: "invoice.pdf", mimeType: "application/pdf", data: "<base64 bytes>" }. Use raw base64, without a data-URL prefix.
  • For video, send supported image frames and a text description or transcript. Raw video and audio are not Search inputs. The web app samples video frames; the MCP tool does not perform that browser step.
  • File URLs, local paths, and client-specific attachment IDs are not file uploads. If the assistant cannot access the bytes, it can pass extracted text or ask for an accessible file. It should say when only a summary or sampled frames were sent.
context allows ten items, up to approximately 5 MB per file and 10 MB of total file content. Each text item allows 4,000 characters. Include new context on a follow-up alongside previousResponseId and, for anonymous searches, searchToken. Search extracts bounded task context; it does not save the original files in history or transfer them automatically to the chosen AI. For Act, include relevant extracted text in the opening message or a follow-up { type: "text", text: "..." }. To execute a capability that needs a file, use its advertised argument schema and authorized upload method. The existing send_message tool also accepts attachments: [{ type: "file", asset: "<owned Darwin asset ID>" }]; this references an existing authorized asset, not a new client upload. Never fabricate an asset ID, assume a client attachment URL is accessible to the provider, or put raw files into unsupported fields. The MCP viewport stays read-only. File selection and clarification happen in the assistant’s chat.

Continue with Darwin

After the user chooses a result:
Read the returned child thread with get_thread({ thread: threadId }). Continue it with act({ threadId, message: { type: "text", text: "Return CSV too" }, idempotencyKey }). An accepted message is durable; it does not prove delivery or task completion. Authentication and payment messages refer to exact pending request IDs. The existing authenticate and pay broker tools and hosted reviews remain available. Never send credentials or payment secrets in messages. Safe Account reads return saved IDs and metadata, not secrets or authority to charge.

Use another client

Copy the selected agent’s exact connectionPrompt into a client supporting its documented connection method. The prompt includes the task, refinements, agent/capability IDs and current connection lookup. A copied prompt does not verify an external connection or outcome. Older start_thread, send_message, and related thread tools remain available for existing integrations.
Last modified on October 9, 2026