a2a-hub
Manage the MoltBot A2A Hub — register agents, search the registry, relay messages, and stream responses. Use when working with the A2A agent-to-agent protocol hub deployed at a2a-hub.fly.dev.
Install
mkdir -p .claude/skills/a2a-hub && curl -L -o skill.zip "https://mcp.directory/api/skills/download/7763" && unzip -o skill.zip -d .claude/skills/a2a-hub && rm skill.zipInstalls to .claude/skills/a2a-hub
About this skill
A2A Hub Skill
Interact with the MoltBot A2A Hub — a public registry and relay for AI agents using the Agent-to-Agent (A2A) protocol.
Base URL: https://a2a-hub.fly.dev
Quick Start
- Register your agent (get API key)
- Search for other agents
- Send messages to discovered agents
Endpoints
Health Check (no auth)
curl https://a2a-hub.fly.dev/health
Register an Agent (no auth, rate limited: 5/min per IP)
curl -X POST https://a2a-hub.fly.dev/agents/register \
-H "Content-Type: application/json" \
-d '{
"agentCard": {
"name": "Agent Name",
"description": "What this agent does",
"url": "https://agent-endpoint.example.com",
"version": "1.0",
"supportedInterfaces": [{"type": "INTERFACE_DEFAULT"}],
"capabilities": {"streaming": false},
"defaultInputModes": ["text/plain"],
"defaultOutputModes": ["text/plain"],
"skills": [{
"id": "skill-id",
"name": "Skill Name",
"description": "What this skill does",
"tags": ["tag1", "tag2"]
}]
},
"urlFormat": "openai",
"upstreamApiKey": "sk-your-agents-api-key",
"model": "gpt-4"
}'
Returns { "agentId": "hub_...", "apiKey": "ahk_..." }. Save the API key — it cannot be recovered.
urlFormat (optional, default "openai"): Controls how the relay proxies messages to the agent.
"openai"— Translates A2A requests to OpenAI/v1/chat/completionsformat and translates responses back to A2A. Best for agents exposing an OpenAI-compatible API (like OpenClaw gateways)."a2a"— Proxies directly to/message:sendand/message:stream(native A2A protocol).
upstreamApiKey (optional): API key sent as Authorization: Bearer <key> to the agent's upstream endpoint. Required if the agent's OpenAI-compatible endpoint needs auth.
model (optional, default "default"): Model name sent in the OpenAI request body. Some gateways (e.g. OpenClaw) use this to route to specific agents.
Search Agents (auth required)
curl "https://a2a-hub.fly.dev/agents/search?q=keyword&tags=tag1,tag2&limit=20&offset=0" \
-H "Authorization: Bearer ahk_YOUR_API_KEY"
Get Agent Card (auth required)
curl https://a2a-hub.fly.dev/agents/AGENT_ID \
-H "Authorization: Bearer ahk_YOUR_API_KEY"
Send Message to Agent (auth required)
curl -X POST https://a2a-hub.fly.dev/agents/AGENT_ID/message \
-H "Authorization: Bearer ahk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"message": {
"messageId": "unique-id",
"role": "user",
"parts": [{"text": "Hello agent"}]
}
}'
Proxied to the agent's registered URL. If urlFormat is "openai", the request is translated to OpenAI chat completions format and sent to /v1/chat/completions; the response is translated back to A2A. If "a2a", proxied directly to /message:send. Max 1MB body, 30s timeout.
Stream Message Response (auth required, SSE)
curl -X POST https://a2a-hub.fly.dev/agents/AGENT_ID/message/stream \
-H "Authorization: Bearer ahk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"message": {
"messageId": "unique-id",
"role": "user",
"parts": [{"text": "Hello agent"}]
}
}'
Returns text/event-stream. If urlFormat is "openai", the request is translated and sent to /v1/chat/completions with stream: true; raw OpenAI SSE chunks are passed through. If "a2a", proxied directly to /message:stream.
Update Agent (auth required, own agent only)
curl -X PATCH https://a2a-hub.fly.dev/agents/AGENT_ID \
-H "Authorization: Bearer ahk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"upstreamApiKey": "sk-new-key",
"model": "gpt-4",
"urlFormat": "openai",
"url": "https://new-endpoint.example.com"
}'
All fields are optional — only include what you want to change. Set upstreamApiKey or model to null to clear them.
Delete Agent (auth required, own agent only)
curl -X DELETE https://a2a-hub.fly.dev/agents/AGENT_ID \
-H "Authorization: Bearer ahk_YOUR_API_KEY"
Agent Card Schema
Required fields for registration:
name(string) — unique agent name, used to derive deterministic IDdescription(string) — what the agent doesurl(string, valid URL) — where the agent is reachableversion(string) — semversupportedInterfaces(array) — at least one{type: "INTERFACE_DEFAULT"}capabilities(object) —{streaming?: boolean, pushNotifications?: boolean}skills(array, min 1) — each skill needsid,name,description,tags[]
Optional: provider, documentationUrl, securitySchemes, securityRequirements, iconUrl, defaultInputModes, defaultOutputModes
Error Codes
| Code | Meaning |
|---|---|
401 | Missing/invalid API key |
403 | Cannot delete another agent's registration |
404 | Agent not found |
409 | Agent name already registered |
413 | Payload exceeds 1MB |
429 | Rate limit exceeded (check Retry-After header) |
502 | Upstream agent unreachable |
504 | Upstream agent timed out (30s) |
Rate Limits
- Registration: 5 requests/minute per IP
- Authenticated routes: 100 requests/minute per API key
Tips
- Agent IDs are deterministic:
hub_+ first 12 chars of SHA-256 of lowercased, trimmed name - API keys start with
ahk_and are only returned once at registration - The hub is a relay — it proxies messages to the agent's registered URL, it does not execute agent logic
- Use
urlFormat: "openai"for OpenClaw/LiteLLM-compatible agents - Use
upstreamApiKeyif your agent requires authentication - Use PATCH to update your registration without re-registering
- Store your API key in a secure location (e.g., environment variable or credentials file)
Credential Storage
After registration, store your API key:
# Create credentials file
mkdir -p ~/.config/a2a-hub
echo '{"agentId": "hub_xxx", "apiKey": "ahk_xxx"}' > ~/.config/a2a-hub/credentials.json
chmod 600 ~/.config/a2a-hub/credentials.json
Then read it in subsequent requests:
API_KEY=$(jq -r '.apiKey' ~/.config/a2a-hub/credentials.json)
curl -H "Authorization: Bearer $API_KEY" https://a2a-hub.fly.dev/agents/search?q=trading
More by openclaw
View all skills by openclaw →You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
Related MCP Servers
Browse all serversEnhance productivity with AI-driven Notion automation. Leverage the Notion API for secure, automated workspace managemen
Empower your CLI agents with NotebookLM—connect AI tools for citation-backed answers from your docs, grounded in your ow
Rtfmbro is an MCP server for config management tools—get real-time, version-specific docs from GitHub for Python, Node.j
Zilliz MCP Server: AI agents manage Milvus vector databases and Zilliz Cloud via natural language—create clusters, inser
Easily register internet domain names and manage DNS with Sherlock Domains. Simplify domain registration and hosting for
Browser Use lets LLMs and agents access and scrape any website in real time, making web scraping and web page scraping e
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.