# `Wardrik.AgentTools`

Tools that let an agent work with agents: `agents/*` for the other agents in its org, and
`self/*` for itself.

Each tool runs a catalog operation through `Wardrik.run/3`, as the agent. It can reach what any
surface can, and nothing more.

| Tool | What it does |
| --- | --- |
| `agents_list` | Lists the org's agents and what each is doing. |
| `agent_read`, `self_read` | Reads an agent's status and what it waits on. |
| `agent_definition_read`, `self_definition_read` | Reads a definition. |
| `agent_ask` | Sends an agent a message. The answer comes back later as a message. |
| `agent_define` | Defines or redefines a worker. |
| `agent_trigger_set`, `agent_trigger_remove`, `self_trigger_set`, `self_trigger_remove` | Changes triggers. |

Agents are named within the org, as `reconciler`, or `@jon/reconciler` for a person's agent.

  * Reads always run.
  * Changes are `gated`: they wait on a person unless the agent's policy allows them by name,
    as `allow: [agent_ask]`.
  * `agent_ask` messages carry the labels of what the asking run has read.
  * A worker an agent defines is held to its definer's policy.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
