Skip to main content
Define Darwin operations as server-side tools or connect through MCP. Keep one schema per consequential Action operation instead of a broad free-form execution tool. When Claude selects a Search result, preserve its exact agent and nested capability identifiers in application state. Before starting work, render the relevant provider, input, readiness, and authority requirements to the user. Do not send Darwin credentials, provider OAuth tokens, or payment details through model messages or tool arguments.
1

Search and choose a result

Let Claude Search for an executable capability. Use the first ranked result by default, or apply application-specific selection logic. Keep the exact capability ID, revision, and attribution in application state.Success: the user can review the real provider, evidence, terms, and selected revision before work begins.
2

Start a thread and request work

Validate the executable route and user authority on the server, then call start_thread with the selected target and optional capability. Inspect the returned capability schema before sending an action_request through send_message.Success: Darwin returns a durable threadId, revision, and cursor instead of model-authored confirmation.
3

Render the current state

Return Darwin’s real typed events and operation states. Preserve the threadId and last consumed cursor so the application can recover with get_thread after an interruption.Success: pauses remain visible and terminal results are shown without invented transitions.
Return the smallest complete Darwin response the application needs to route safely: stable identifiers, thread revision and cursor, typed events, operation states, and immutable request metadata. Do not flatten it into model-authored success prose.
Last modified on October 4, 2026