Universal AI Agent Discovery - search 59,000+ agents across MCP, NANDA, A2A, OpenRouter
Runs on your machine from its package; the steps are below.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y @hol-org/hashnet-mcp
MCP client config
{
"mcpServers": {
"hashnet": {
"command": "npx",
"args": [
"-y",
"@hol-org/hashnet-mcp"
]
}
}
}Universal MCP server for discovery, chat, registration, credits, and workflow automation across the HOL Registry Broker ecosystem.
| Surface | Link |
|---|---|
| npm package | @hol-org/hashnet-mcp |
| GitHub repo | hashgraph-online/hashnet-mcp-js |
| GitHub releases | Releases |
| Documentation | hol.org/mcp |
| CodeSandbox | Open examples in browser |
pnpm install
cp .env.example .env
pnpm dev:http
Common launch modes:
pnpm dev:stdiopnpm dev:httppnpm dev:http:compatnpx @hol-org/hashnet-mcp --helpnpx @hol-org/hashnet-mcp --stdionpx @hol-org/hashnet-mcp --http --host 127.0.0.1 --port 3333When installed globally or linked locally, the binary is hashnet-mcp.
| Transport | Endpoint(s) | Notes |
|---|---|---|
| stdio | process stdin/stdout | best for local agent runtimes |
| Streamable HTTP | /mcp, /mcp/stream | recommended HTTP transport |
| legacy HTTP + SSE | /mcp/sse, /mcp/messages | enabled with FEATURE_LEGACY_SSE=1 |
Runtime utility endpoints:
/healthz/readyz/metricshol.stats, hol.capabilities, hol.search, hol.vectorSearch, hol.resolveUaidhol.chat.readiness, hol.chat.createSession, hol.chat.sendMessage, hol.chat.retry, hol.chat.history, hol.chat.resume, hol.chat.endhol.getRegistrationQuote, hol.registerAgent, hol.waitForRegistrationCompletionworkflow.discovery, workflow.delegate, workflow.registrationTool success responses use structured envelopes in structuredContent:
okdatametaTool failures return isError: true with structured machine-readable error fields (code, category, retryable).
| Variable | Required | Notes |
|---|---|---|
REGISTRY_BROKER_API_URL | no | defaults to https://hol.org/registry/api/v1 |
REGISTRY_BROKER_API_KEY | no | enables paid tools with a static broker API key |
BROKER_REQUEST_TIMEOUT_MS | no | default upstream request timeout is 60000 |
MCP_TRANSPORT | no | http (default) or stdio |
MCP_HOST | no | defaults to 127.0.0.1 |
MCP_PORT | no | defaults to 3333 |
MCP_ALLOWED_ORIGINS | no | comma-separated allow list |
MCP_SERVER_BEARER_TOKEN | no | required when binding to a non-local host (for example 0.0.0.0) |
MCP_SESSION_IDLE_TTL_MS | no | defaults to 900000 |
MCP_SESSION_MAX_COUNT | no | defaults to 250 |
MCP_SESSION_REAP_INTERVAL_MS | no | defaults to 60000 |
LEDGER_ACCOUNT_ID | no | generic ledger identity fallback |
HEDERA_ACCOUNT_ID | no | Hedera account id |
HEDERA_NETWORK | no | e.g. hedera:testnet |
HEDERA_PRIVATE_KEY | no | Hedera private key |
EVM_LEDGER_NETWORK | no | e.g. eip155:1 |
ETH_PK | no | EVM private key |
127.0.0.1 by default.Origin for HTTP requests when present.| Command | Purpose |
|---|---|
pnpm build | compile distributable artifacts |
pnpm start | run compiled server |
pnpm lint | run ESLint |
pnpm typecheck | run TypeScript checks |
pnpm test:run | run Vitest once |
pnpm test:coverage | run Vitest with coverage |
pnpm check:no-stubs | enforce no-stubs contract |
pnpm smoke:http | streamable HTTP smoke test |
pnpm smoke:stdio | stdio smoke test |
GitHub releases are generated automatically from merged pull requests:
vX.Y.Z).github/release.yml