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

# Implementation notes

> Libraries, digests, and where to copy behavior from.

## Reference implementation

The Federated Agent Use repository contains:

* A demo agent (`node/src/fedagent/demo/agent.py`) that publishes keys, signs with
  RFC 9421, initializes MCP, and drives `/mcp`
* The node verifier (`node/src/fedagent/crypto/signatures.py` — `sign_request`)
* Protocol text in `docs/protocol.md`

When a library disagrees with the node, **the node wins**.

## Suggested stack

| Concern      | Suggestion                                           |
| ------------ | ---------------------------------------------------- |
| HTTP         | Client that sets raw headers and exact body bytes    |
| Signatures   | RFC 9421 / HTTP Message Signatures + Ed25519         |
| Digests      | SHA-256 `Content-Digest` (`sha-256=:<std-base64>:`)  |
| Sealed boxes | libsodium `crypto_box_seal` to resolve `box_pubkey`  |
| MCP          | Streamable HTTP (`initialize`, Accept, optional SSE) |

## Authority and URL

Sign the **exact** public URL you request. Host and SNI must equal the resolve
`hostname`. Do not sign an IP. Do not follow redirects on `/mcp`.

## Capability tokens

Optional. Format is a FAU `fau1.` token with Biscuit-like properties (domain, tiers,
categories, expiry, `bound_key`) — not necessarily the biscuit-python library.

`/mcp` usually does **not** return a token after approval. The node stores a grant for
your domain; retry the signed tool call. If you send `Authorization: Bearer …`, an
invalid token is typically ignored.
