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

# Communicate best practices

> Exchange information without confusing messages with authority or durable state.

## Keep the protocol boundary invisible

Send a canonical text turn and let Darwin Proxy choose the compatible adapter. Do not expose MCP, A2A, WebMCP, ACP, OpenAPI, or provider-specific transport selection in the user flow.

## Treat messages as information

* Send a message only when `availableActions` contains `update`.
* Use one stable `requestId` when retrying the identical update.
* Never treat “yes,” “looks good,” or similar text as a typed approval, payment, or authentication grant.
* Keep V1 inputs to text; binary attachments and arbitrary protocol passthrough are outside the current contract.

## Make retention explicit

Ask before the first message whether Darwin should keep history. Honor the per-AI override before the account default, keep private-mode bodies out of durable systems, and explain that the destination AI may retain messages under its own policy.

## Preserve content boundaries

Keep credentials, payment details, private remote state, and full message bodies out of logs, traces, analytics, ranking data, and content-free Action receipts. Record only the identifiers and outcome metadata needed to recover and attribute the Action.

## Test recovery

Test duplicate updates, remote timeouts, an AI that exposes tools instead of messages, missing remote history, private-mode reconnection, and a pause that changes from communication to a typed interaction.
