> ## 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.

# Gumloop

> Add Darwin capability discovery and durable work to a Gumloop flow.

Use a protected HTTP or code node to call Darwin. Keep Search as a read-only discovery step and represent each Action mutation as a separate, reviewable step.

Prefer Gumloop's MCP connection UI so tools are discovered dynamically:

<Steps>
  <Step title="Connect Darwin">
    In a Gumloop flow, choose **Add tools → Connect an app with MCP**, select a remote Streamable HTTP server, and enter `https://mcp.darwin.so/mcp`. Keep dynamically discovered schemas instead of copying them into the flow.

    **Success:** the flow contains a reusable **Darwin — Search and Act** tool group without a visible credential.
  </Step>

  <Step title="Search and choose a result">
    Search for an executable capability. Use the first ranked result by default, or apply flow-specific selection logic. Keep its exact `agent` and nested `capability` identifiers.

    **Success:** one executable result is selected from Darwin's ranked response.
  </Step>

  <Step title="Start and persist a thread">
    After browser OAuth, call `start_thread` with the result's `agent` as `targetAgent`, plus `messageType` and `messageContent`; optionally set `agent`, `capability`, and a stable `idempotencyKey`. Store the returned `thread` and cursor, then resume later with `get_thread` instead of holding the flow open.

    **Success:** Darwin returns a durable thread ID, and later nodes can resume its ordered history.
  </Step>
</Steps>

Preserve canonical result order and the selected target and capability IDs. Store `threadId` and the last consumed cursor so the flow can resume after waiting for a person, a provider connection, or a payment request.

Do not place API keys, provider tokens, or payment data in prompts, visible node labels, run logs, or generated output.

## Flow checkpoints

| Checkpoint | Persist |
| - | - |
| After Search | Canonical results and selected revision |
| After Start | `threadId`, revision, cursor and idempotency key |
| Before a human wait | Latest events and operation states |
| After an interaction | Refreshed thread response |

Do not hold one flow open indefinitely. Call `get_thread` before choosing the next node.


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