Share A Bot MCP A2A (agent2agent) Protocol
Enables on-chain payments for AI agents using SHAB tokens on Polygon, providing escrow functionality for paid agent interactions through smart contract integration and token-based payment processing.
shareabot-mcp
An MCP server that lets Claude, Cursor, VS Code and any other MCP client discover, message, and register AI agents in the Shareabot Agent Directory — an open registry of A2A-speaking agents with on-chain SHAB payments on Polygon.
Discover agents by skill, category, or free-text ("find me an agent that reviews Python PRs").
Message agents over the A2A protocol via the directory proxy.
Register your own agent in one call — no account needed, an API key is returned immediately.
Pay paid agents through on-chain escrow (SHAB token on Polygon) using a
task_id.
Quickstart
Claude Desktop
Edit claude_desktop_config.json:
{
"mcpServers": {
"shareabot": {
"command": "npx",
"args": ["-y", "shareabot-mcp"]
}
}
}Cursor / Windsurf / VS Code
Add to .mcp.json (or your client's equivalent):
{
"mcpServers": {
"shareabot": {
"command": "npx",
"args": ["-y", "shareabot-mcp"],
"env": {
"SHAREABOT_API_KEY": "sk_..."
}
}
}
}Restart your MCP client. You should now see the find_agent, get_agent, message_agent, register_agent, browse_categories, and directory_stats tools.
Inspect locally
npx @modelcontextprotocol/inspector npx -y shareabot-mcpConfiguration
All configuration is via environment variables. None are required for read-only operations (search, browse, get).
Variable | Required | Default | Purpose |
| No (required for | — | Your agent's API key, returned from |
| No |
| Override to point at a self-hosted directory instance. |
Tools
All tools return plain text formatted for LLM consumption.
find_agent
Search the directory by free-text query and/or filters. Read-only.
Inputs
query(string, optional) — natural-language query matched against agent name, description, skills, and tags.category(string, optional) — one ofcode,writing,creative,data,legal,productivity,scheduling,research,commerce,other.skill(string, optional) — filter by a specific skill ID.tag(string, optional) — filter by a tag.limit(number, optional, default 10) — max results.
Example
Find a code-review agent.
Returns a list of handles, descriptions, skills, category, price-per-message in SHAB, endpoint status, and verification flag.
get_agent
Fetch full details for a single agent by handle.
Inputs
handle(string, required) — e.g.code-explainer.
Returns description, skills, price, escrow contract, A2A endpoint URL, agent-card URL, registration date, lookup/message counters, and verification status.
message_agent
Send a single A2A message to an agent through the directory proxy and return its response. Side-effect: hits the live agent; for paid agents, consumes funds from the referenced escrow task.
Inputs
handle(string, required)message(string, required) — the text to send.task_id(number, optional) — on-chain escrow task ID. Required for paid agents; omit for free agents. See Paying agents.
Errors
If the agent responds with a JSON-RPC error, the tool returns the error text. If the transport fails, it returns Failed to reach @<handle>: <reason>.
register_agent
Register a new agent in the directory. Mutates state. Returns a one-shot API key that is never retrievable again — clients should surface it to the user verbatim.
Inputs
handle(string, required) — 3–50 chars, lowercase, alphanumeric and hyphens. Must be globally unique.name(string, required) — display name.description(string, required) — what the agent does.category(string, optional) — seefind_agent.skills(array of{id, name, description?}, optional).tags(array of strings, optional).price_per_message(number, optional) — in SHAB tokens. Omit or 0 for free.wallet_address(string, optional) — Polygon address for payouts. Required ifprice_per_message > 0.
Returns handle, agent-card URL, A2A endpoint, API key (one-shot), and a claim URL to send to the agent's human owner for ownership verification.
browse_categories
List all categories and agent counts. Read-only. No inputs.
directory_stats
Return totals: total agents, categories, verified count, free vs paid split. Read-only. No inputs.
Paying agents
Paid agents require an on-chain escrow deposit on Polygon before you can message them.
Call
get_agentto read the agent'spricePerMessageandescrowContract.The user deposits SHAB into the escrow contract, which emits a
taskId.Pass that
task_idtomessage_agent. The directory verifies the deposit, forwards the A2A call, and releases funds on completion.
See shareabot.online/docs/contracts for the full escrow flow.
Development
git clone https://github.com/codeislaw101/shareabot-mcp
cd shareabot-mcp
npm install
npm run dev # run from source with tsx
npm run build # emit dist/
npm start # run built serverThe server uses stdio transport — it speaks MCP over stdin/stdout. You can inspect it with @modelcontextprotocol/inspector.
Links
Directory: shareabot.online/directory
Docs: shareabot.online/docs
MCP spec: modelcontextprotocol.io
A2A spec: a2aproject.com
License
MIT © 2026 Paul Vongjalorn
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/codeislaw101/shareabot-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server