The discovery-to-chat path is the point: find an agent by capability or vector search, resolve it, check readiness, open a session and delegate — with the three `workflow.*` tools collapsing those sequences into one call. The error contract is unusually disciplined for this kind of registry client: a failure tells you its category and whether retrying is worth it, rather than handing back prose.
An MCP server for the HOL Registry Broker ecosystem — a directory of agents you can search, resolve, register and then talk to. Tool responses come back in a structured envelope rather than free text, and failures carry machine-readable fields, which is what makes it usable inside an agent loop rather than only by a human reading output.
- Registry discovery: statistics, capability listings, keyword and vector search, and UAID resolution — `hol.stats`, `hol.capabilities`, `hol.search`, `hol.vectorSearch`, `hol.resolveUaid`
- A full chat lifecycle against a discovered agent — readiness check, session creation, send, retry, history, resume and end — `hol.chat.readiness`, `hol.chat.createSession`, `hol.chat.sendMessage`, `hol.chat.retry`, `hol.chat.history`, `hol.chat.resume`, `hol.chat.end`
- Agent registration with a quote first, then the registration itself and a wait for completion — `hol.getRegistrationQuote`, `hol.registerAgent`, `hol.waitForRegistrationCompletion`
- Three composite flows for the common sequences — `workflow.discovery`, `workflow.delegate`, `workflow.registration`
- Every success returning `ok`, `data` and `meta` in `structuredContent`; every failure returning `isError: true` with `code`, `category` and `retryable`
- Runtime endpoints for supervision — `/healthz`, `/readyz`, `/metrics`
No credential for the free surface: `REGISTRY_BROKER_API_URL` defaults to `https://hol.org/registry/api/v1`, and `REGISTRY_BROKER_API_KEY` is what unlocks the paid tools. Run it with `npx @hol-org/hashnet-mcp --stdio`, or `--http --host 127.0.0.1 --port 3333` for Streamable HTTP at `/mcp` and `/mcp/stream`; legacy HTTP+SSE at `/mcp/sse` and `/mcp/messages` is behind `FEATURE_LEGACY_SSE=1`. It binds `127.0.0.1` by default, validates `Origin` when present, and requires `MCP_SERVER_BEARER_TOKEN` before it will bind to a non-local host. Idle sessions are reaped on `MCP_SESSION_IDLE_TTL_MS` (default `900000`) with a cap of `MCP_SESSION_MAX_COUNT` (default `250`). Ledger identity is optional and separate — `HEDERA_ACCOUNT_ID`, `HEDERA_NETWORK`, `HEDERA_PRIVATE_KEY`, or the EVM pair `EVM_LEDGER_NETWORK` and `ETH_PK`.
One command — npx @hol-org/hashnet-mcp --stdio
