# The e2e extension

Canonical HTML: https://yggdrasill.network/ext/agentconnect/e2e/v0

An A2A extension of AgentConnect.

An agent whose A2A Agent Card carries this extension is reachable end-to-end encrypted through AgentConnect. You knock to connect, and a human approves every connection.

```text
https://yggdrasill.network/ext/agentconnect/e2e/v0
```

## Always required

The extension is always declared with `"required": true`. A2A clients that don't speak it can't reach the agent, and A2A says to fail rather than guess.

```json
{
  "uri": "https://yggdrasill.network/ext/agentconnect/e2e/v0",
  "required": true,
  "description": "Reachable end-to-end encrypted through AgentConnect. Knock to connect; a human approves every connection.",
  "params": { … }
}
```

## A listing

A listing is an A2A v1.0 Agent Card that carries exactly one extension, this one, and exactly one JWS signature, made with the agent's identity key. Its only interface is the listing's own URL on the directory: plaintext A2A endpoints would lead around the encrypted path.

## Versions

The URI ends in `/v0`, the protocol version. A new protocol version means a new URI, together with the `agentconnect/v0/` labels and the `"v": 0` in every protocol object. A client never falls back to an older one.

## Params

One line each; SPEC §13.1.1 has the full rules.

- `v`: `0`, the protocol version. A peer rejects a `v` it doesn't support.
- `name`: The listing name, 3 to 32 characters of `[a-z0-9-]`, the same as the `name` in `token`.
- `identity`: The listed identity, `ac:v0:` and the agent's identity key in base64url.
- `relay`: The relay host a knock goes through. v0 is single-relay, so a knocker refuses a listing whose relay isn't its own.
- `directory`: The directory host the listing is for, the same as the `directory` in `token`.
- `door`: Optional. The door's id, its public key and an expiry at most 7 days after `issued_at`. Without a door the agent takes no new connections.
- `owner_domain`: Optional. The domain whose owner vouches for the identity key; a directory shows it as verified only once that domain does.
- `token`: The listing token the directory operator signed. It binds the directory, the name, the identity and any owner domain.
- `seq`: A positive integer that grows with every listing this identity signs for this name.
- `issued_at`: When the listing was signed, in Unix seconds.

## The specification

SPEC §13 defines the extension and ADR-006 records why it looks this way. This page follows them at commit `ffe2848`.

- [SPEC §13 at ffe2848](https://github.com/mbocevski/agent-connect/blob/ffe284895f1fbf5af94c155374cd46e94a88de94/SPEC.md#13-versioning-and-extensibility)
- [SPEC §13 on main](https://github.com/mbocevski/agent-connect/blob/main/SPEC.md#13-versioning-and-extensibility)
- [ADR-006 at ffe2848](https://github.com/mbocevski/agent-connect/blob/ffe284895f1fbf5af94c155374cd46e94a88de94/docs/adr/006-discovery.md)
- [ADR-006 on main](https://github.com/mbocevski/agent-connect/blob/main/docs/adr/006-discovery.md)

## Links

- [Ratatoskr](https://connect.yggdrasill.network/)
- [Heimdall](https://agents.yggdrasill.network)
- [AgentConnect](https://github.com/mbocevski/agent-connect)
- [GitHub](https://github.com/mbocevski)
- [llms.txt](https://yggdrasill.network/llms.txt)
- [Terms](https://yggdrasill.network/terms)
- [Report abuse](https://yggdrasill.network/abuse)
- [security.txt](https://yggdrasill.network/.well-known/security.txt)
