{"_id":"@a2a-relay/registry","name":"@a2a-relay/registry","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@a2a-relay/registry","version":"0.1.0","description":"Open agent registry — discover and register A2A agents","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"tsc","dev":"tsc --watch","start":"node dist/standalone.js","test":"echo 'no tests yet'"},"repository":{"type":"git","url":"git+https://github.com/agent-relay/agent-relay.git","directory":"packages/registry"},"homepage":"https://github.com/agent-relay/agent-relay","author":{"name":"Agent Relay Contributors"},"license":"MIT","dependencies":{"express":"^4.21.0","uuid":"^11.1.0"},"devDependencies":{"@types/express":"^5.0.0","@types/uuid":"^10.0.0","typescript":"^5.7.0"},"engines":{"node":">=18.0.0"},"keywords":["a2a","agent","registry","discovery","agent-relay","agent-to-agent"],"_id":"@a2a-relay/registry@0.1.0","gitHead":"64c236b89fb05886a47a0f2273d7a62a4aa8cc60","bugs":{"url":"https://github.com/agent-relay/agent-relay/issues"},"_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-to6OCiShyqJgcczV+G4NM8mRA5a8oRfRK3qMvb3YNPrZWP/IsvyTtzisv5LyAAxfwmNQw5UO/hG0UaAd4qiTAw==","shasum":"3274c45ca2230789c7988e5970874ba00ff7345f","tarball":"https://registry.npmjs.org/@a2a-relay/registry/-/registry-0.1.0.tgz","fileCount":22,"unpackedSize":50182,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAC4zWPwAVGAvo3Z5Qo5QAqDG0Hmo05j5zWq/cy+iDVhAiBtBzo35FcZ5CINfG+l1oWar8DAeG5WVhiFaB4r+rQonQ=="}]},"_npmUser":{"name":"bruce_wayne_new_era","email":"bw61180@gmail.com"},"directories":{},"maintainers":[{"name":"bruce_wayne_new_era","email":"bw61180@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/registry_0.1.0_1770052544576_0.18975407249308973"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-02T17:15:44.420Z","0.1.0":"2026-02-02T17:15:44.729Z","modified":"2026-02-02T17:15:45.142Z"},"maintainers":[{"name":"bruce_wayne_new_era","email":"bw61180@gmail.com"}],"description":"Open agent registry — discover and register A2A agents","homepage":"https://github.com/agent-relay/agent-relay","keywords":["a2a","agent","registry","discovery","agent-relay","agent-to-agent"],"repository":{"type":"git","url":"git+https://github.com/agent-relay/agent-relay.git","directory":"packages/registry"},"author":{"name":"Agent Relay Contributors"},"bugs":{"url":"https://github.com/agent-relay/agent-relay/issues"},"license":"MIT","readme":"# @a2a-relay/registry\n\nOpen agent registry — register, discover, and search A2A agents.\n\nPart of [Agent Relay](https://github.com/agent-relay/agent-relay) — the open infrastructure for the agent economy.\n\n## Install\n\n```bash\nnpm install @a2a-relay/registry\n```\n\n## Quick Start\n\n```typescript\nimport { AgentRegistry } from '@a2a-relay/registry';\n\nconst registry = new AgentRegistry({\n  port: 3002,\n  dataFile: './agents.json',   // persistent storage\n  healthCheck: true,            // periodically verify agents are reachable\n  adminToken: 'my-secret',     // for delete operations\n});\n\nregistry.listen();\n```\n\n## API\n\n### Register an Agent\n\nAgents register by providing their URL. The registry fetches the Agent Card automatically.\n\n```bash\n# Auto-fetch Agent Card from well-known URL\ncurl -X POST http://localhost:3002/agents \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"url\": \"http://my-agent.com\"}'\n\n# Or provide the Agent Card directly\ncurl -X POST http://localhost:3002/agents \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"url\": \"http://my-agent.com\",\n    \"agentCard\": {\n      \"name\": \"My Agent\",\n      \"url\": \"http://my-agent.com/a2a/jsonrpc\",\n      \"skills\": [{ \"id\": \"greet\", \"name\": \"Greeting\", \"description\": \"Say hello\" }]\n    }\n  }'\n```\n\nResponse:\n```json\n{ \"id\": \"uuid\", \"name\": \"My Agent\", \"status\": \"registered\", \"skills\": 1 }\n```\n\nRe-registering the same URL updates the existing entry.\n\n### Search Agents\n\n```bash\n# Free-text search\ncurl 'http://localhost:3002/agents/search?q=weather'\n\n# Search by tags\ncurl 'http://localhost:3002/agents/search?tags=weather,forecast'\n\n# Search by skill ID\ncurl 'http://localhost:3002/agents/search?skill=diagnose'\n\n# Combine + paginate\ncurl 'http://localhost:3002/agents/search?q=code&limit=10&offset=0'\n```\n\nResponse:\n```json\n{\n  \"total\": 42,\n  \"count\": 1,\n  \"offset\": 0,\n  \"agents\": [{\n    \"id\": \"uuid\",\n    \"name\": \"Code Reviewer\",\n    \"description\": \"Reviews code and suggests improvements\",\n    \"url\": \"https://code-agent.com\",\n    \"skills\": [...],\n    \"tags\": [\"code\", \"review\"],\n    \"status\": \"online\",\n    \"registeredAt\": \"2025-01-01T00:00:00Z\"\n  }]\n}\n```\n\n### List All Agents\n\n```bash\ncurl http://localhost:3002/agents\ncurl 'http://localhost:3002/agents?limit=10&offset=20'\n```\n\n### Get a Specific Agent\n\n```bash\ncurl http://localhost:3002/agents/<id>\n```\n\n### Remove an Agent\n\n```bash\n# Admin delete (requires admin token)\ncurl -X DELETE http://localhost:3002/agents/<id> \\\n  -H 'Authorization: Bearer my-secret'\n\n# Self-unregister (by URL)\ncurl -X POST http://localhost:3002/agents/unregister \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"url\": \"http://my-agent.com\"}'\n```\n\n### Stats & Health\n\n```bash\n# Registry health\ncurl http://localhost:3002/health\n\n# Detailed stats\ncurl http://localhost:3002/stats\n```\n\n## Features\n\n- **Auto-discovery** — register by URL, the registry fetches your Agent Card\n- **Full-text search** — search across names, descriptions, tags, skills\n- **Tag & skill filtering** — find agents by capability\n- **Health checks** — periodically verifies registered agents are reachable\n- **File persistence** — survives restarts (or run in-memory only)\n- **Pagination** — handles large registries\n- **Self-unregister** — agents can remove themselves\n- **Admin API** — protected delete operations\n\n## Standalone Server\n\n```bash\nREGISTRY_PORT=3002 DATA_FILE=./agents.json ADMIN_TOKEN=secret node dist/standalone.js\n```\n\n## Programmatic Use\n\n```typescript\nimport { AgentRegistry } from '@a2a-relay/registry';\n\nconst registry = new AgentRegistry({ port: 3002 });\nawait registry.listen();\n\n// Access the store directly\nconst store = registry.getStore();\nconst agents = store.search({ q: 'weather', tags: ['forecast'] });\n```\n\n## Related\n\n- [`@a2a-relay/server`](https://www.npmjs.com/package/@a2a-relay/server) — build A2A agents\n- [`@a2a-relay/client`](https://www.npmjs.com/package/@a2a-relay/client) — discover and talk to agents\n- [Agent Relay](https://github.com/agent-relay/agent-relay) — the full project\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-ecc320961de21037a670949f10ead7e9"}