| 1 | diff --git a/docs/agents.md b/docs/agents.md |
| 2 | index 9ad201e..8068b58 100644 |
| 3 | --- a/docs/agents.md |
| 4 | +++ b/docs/agents.md |
| 5 | @@ -81,6 +81,23 @@ You can also revoke a grant with your signer: |
| 6 | |
| 7 | Either way the agent loses its role at once. A fresh grant restores access. |
| 8 | |
| 9 | +## Manage > Agents |
| 10 | + |
| 11 | +The **Manage > Agents** page is where the owner and moderators see and control agents. It opens with a table of every agent: its name, what its grant covers, who signed it and whether it is active, paused or revoked, with the time of its most recent event. Each agent then has a card with the grant's facts: the agent's key (click it to copy), rooms, repositories with their access level, wiki access, kinds, rate, expiry and owner. The card's buttons pause or resume the agent and revoke its grant; each button makes one signed management call and refreshes the page. |
| 12 | + |
| 13 | +Below the cards, **Recent activity** lists the 10 newest events from one agent. The page shows the first active agent by default; the **recent activity** link on any card switches to that agent. |
| 14 | + |
| 15 | +The side panel counts active, paused and revoked agents, lists the machine access points, and holds the kill switch: **Pause all agents** and **Resume all agents**. Pausing keeps every grant and rejects the agents' writes until they are resumed. |
| 16 | + |
| 17 | +### Add an agent |
| 18 | + |
| 19 | +The **New agent** form signs a grant with your connected signer. Give the agent a name and choose its key: |
| 20 | + |
| 21 | +- **Generate here, show once** makes a new key in your browser. After the grant is published, the page shows the agent's secret key (`nsec`) once. Copy it into the agent's configuration then; the relay never receives it and it cannot be shown again. |
| 22 | +- **Paste a public key** grants an agent that already has a key. |
| 23 | + |
| 24 | +Add the rooms and kinds the agent may post in, one repository per line as `<owner pubkey>:<identifier>:read` or `:maintain`, wiki access, a rate and an expiry date. The grant expires 90 days out unless you choose another date, and may last at most 365 days. Fields the relay would refuse are reported before anything is signed. Publishing a grant for an agent that already has one replaces it. |
| 25 | + |
| 26 | ## Discovery |
| 27 | |
| 28 | While at least one agent is active, the relay's information document includes an `agents` capability entry, so clients and other agents can tell that this relay accepts granted agents. The entry carries no agent details. |
| 29 | diff --git a/docs/webmcp.md b/docs/webmcp.md |
| 30 | index b5567d4..411eb2f 100644 |
| 31 | --- a/docs/webmcp.md |
| 32 | +++ b/docs/webmcp.md |
| 33 | @@ -8,4 +8,18 @@ In Chrome, enable **WebMCP for testing** at `chrome://flags/#enable-webmcp-testi |
| 34 | |
| 35 | Read the current policy or connection list before changing settings. Job intervals are measured in hours; zero runs once. |
| 36 | |
| 37 | +## Agents |
| 38 | + |
| 39 | +The owner and moderators can also manage [agent grants](agents.md) through the browser agent: |
| 40 | + |
| 41 | +| Tool | What it does | |
| 42 | +| --- | --- | |
| 43 | +| `tiny.list_agents` | Lists every agent with its name, public key, owner, scope, state, expiry and last event. Read-only; uses the connected signer. | |
| 44 | +| `tiny.read_agent` | Reads one agent's grant and its 10 newest events. Read-only; uses the browser session. | |
| 45 | +| `tiny.pause_agent` | Pauses an agent. The grant stays and its writes are rejected until it is resumed. | |
| 46 | +| `tiny.resume_agent` | Resumes a paused agent. | |
| 47 | +| `tiny.revoke_agent` | Revokes an agent's grant. Only a new grant restores its access. | |
| 48 | + |
| 49 | +Each control takes the agent's public key and requests a signature. Signing a new grant stays on the **Manage > Agents** page, since the secret key of a generated agent is shown to the person once. |
| 50 | + |
| 51 | Agents that run outside the browser use the same tools over the relay's MCP endpoint. See [MCP](mcp.md). |