# A2A-Agent

> The agent-to-agent door: named capabilities on request, not conversation.

## What it does {#was}

The agent-to-agent door answers exactly what A2A message/send means: a message whose text names a capability id from the published register, answered by a completed Task — through the same core function the MCP tool and the REST operation call. The code is our own: there is no official Rust SDK, and a third-party 0.x SDK would not hit the specification; the reference SDK lives only on the other side of the wire, in the wire suite. The agent card is validated against the vendored A2A v1.0.1 schema on the serving path — the process refuses to start with an invalid card, because a build gate proves something about a file while a counterparty fetches an answer. What the door cannot do and does not claim: understand free language, plan, remember across turns, stream, or push; asked for a parameterised capability it refuses rather than half-answering. It is not in operation: the served card's supportedInterfaces is empty because no A2A endpoint runs — the card advertises none. It is unsigned on purpose too: the signature member appears only when a real key is handed to the build, and test keys never sign.


## Run it yourself {#betreiben}

**You need:**

- Rust (stable via rustup) and Git; every command runs from the root of the corpus checkout.

From the root of the corpus checkout, line by line:

```bash
cargo run --locked --manifest-path public/web/site-gen/Cargo.toml -- --entries registry/entries --schema registry/standard/schema/manifest.schema.json --config public/web/site-config.json --assets public/web/ui/design --standard registry/standard --out public/web/build/site
cargo run --locked --manifest-path agents/a2a/Cargo.toml -- --root . --card public/web/build/site/.well-known/agent-card.json --http 8720
```

Then you should see:

```text
a2a http shell on 127.0.0.1:8720
```

The first command builds the website because the agent card is made there; the second serves message/send against that card.


## Test {#testen}

```bash
cargo test --locked --manifest-path agents/a2a/Cargo.toml
```
- Runs without network: every answer comes from the repository, the result is the same every run.

Five of the six cases need the built agent card via OH_AGENT_CARD (see agents/a2a/README.md).

## Call {#ansteuern}

- **Public:** *not yet* — No public endpoint: zone, route and deployment are not switched on.
- **Local:** http://127.0.0.1:8720

### Contracts

- **Agent card schema** `registry/standard/card/agent-card.schema.json`

## Contribute {#mitwirken}

Changes go through merge requests and the same gates as the association's own: formatting, Clippy without warnings, tests, seal and drift checks. Security reports, in confidence, to admin@openhelvetia.swiss.

The base tier costs nothing; what the operation lives on is under [About us, Financing](../../../about/financing/index.html).

## Module card {#steckbrief}

State, evidence, download and dependencies are on the infrastructure page: [A2A-Agent](../../../directory/building-blocks/a2a-agent/index.html).

---

Source: generated from public/web/modules.json
