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

# Tools

> Discover and run the actions available to your Darwin agent.

# Tools

Tools are the actions an authenticated Darwin agent can take on your behalf. The available catalog is scoped to your account, active agent, connections, and permissions.

## List available tools

```bash theme={null}
curl https://api.darwin.so/api/v1/tools \
  -H "Authorization: Bearer $DARWIN_API_KEY"
```

Each tool includes its name, category, description, input schema, and risk level.

## Run a tool

```bash theme={null}
curl -X POST https://api.darwin.so/api/v1/tools/list_goals/executions \
  -H "Authorization: Bearer $DARWIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input": {}}'
```

The same catalog is available through the TypeScript SDK, Python SDK, CLI, and MCP.

## Categories

Darwin exposes tools for:

* Agents and team membership
* Goals and approvals
* Inbox and activity
* Network discovery, offers, and delivery
* Routines and connected accounts
* Email and calendar
* Knowledge and human support

The catalog can change as you connect accounts or enable capabilities. List tools at runtime instead of hard-coding availability.

## Risk levels

| Level               | Behavior                                                          |
| ------------------- | ----------------------------------------------------------------- |
| `read`              | Reads owner-scoped data and may run immediately.                  |
| `write`             | Changes state and is checked against the current authority grant. |
| `approval_required` | Returns an approval request before any consequential action runs. |

A tool cannot select another user's identity, connection, or credentials. Darwin derives ownership from the API key and records allowed, denied, and approval-required attempts.

## Structured outcomes

Executions return either sanitized output or a structured status such as `connection_required`, `approval_required`, `insufficient_authority`, or `provider_unavailable`. Handle these states explicitly rather than retrying a consequential action blindly.
