Production-ready A2A Protocol Server with dual protocol support (HTTP REST + JSON-RPC 2.0). Built on SceneGraphManager v2.0.0 for JSON-driven AI workflow orchestration with LangGraph.
a2a-server is an early-stage TypeScript project in the AI payments / x402 ecosystem, focused on a2a-protocol, agent-to-agent, ai-agents, ai-automation. It currently has 0 GitHub stars and 0 forks, and sits alongside related tools like openclaw-a2a-plugins, Sae, openlibx402, kudosflow, Multi-Agent-Research-Assistant-Langgraph, capiscio-node.
Visual, production-ready AI workflows — portable as JSON
A production-ready Agent-to-Agent (A2A) Protocol Server that implements Google's A2A Protocol v0.3.0 with dual protocol support (HTTP REST + JSON-RPC 2.0). Built on top of SceneGraphManager v2.0.0 (private package), a JSON-driven AI workflow engine that executes LangChain-based workflows from declarative configuration files.
✅ Dual Protocol Support
✅ Workflow Engine
✅ Production Ready
# Clone the repository
git clone https://github.com/akudo7/a2a-server.git
cd a2a-server
# Install dependencies (Yarn required)
yarn install
# Configure environment variables
cp .env.example .env
# Edit .env and add your API keys
# Run with a workflow configuration
yarn server json/a2a/servers/task-creation.json
# Or use predefined scripts
yarn server:main # Main research workflow
yarn server:task # Task creation subagent
yarn server:research # Research execution subagent
yarn server:quality # Quality evaluation subagent
# Development mode with hot reload
yarn server:dev json/a2a/servers/task-creation.json
# Show help
yarn server --help
The server provides two ways to interact with workflows:
Standard A2A Protocol endpoints:
GET /.well-known/agent.json - Agent card informationPOST /message/send - Send message to agentGET /tasks/{taskId} - Query task statusPOST /tasks/{taskId}/cancel - Cancel running taskGET /health - Health checkJSON-RPC endpoint for programmatic access:
POST / - JSON-RPC 2.0 endpointmessage/send, agent/getAuthenticatedExtendedCardJSON-RPC Client → POST / → AgentExecutor → WorkflowEngine
↓
LangGraph State Machine
↓
FunctionNodes + ToolNodes
↓
LLM Models + MCP + A2A Tools
Start the server:
yarn server json/SceneGraphManager/research/task-creation.json
Send a test request:
curl -X POST http://localhost:3001/ \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "message/send",
"params": {
"message": {
"messageId": "msg-test-001",
"parts": [
{
"kind": "text",
"text": "Please research Google's company overview"
}
]
},
"contextId": "test-session-001"
}
}'
Expected response:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"taskId": "task-1234567890-abc123def",
"result": "Research results text...",
"thread_id": "test-session-001"
}
}
# Get agent card
curl http://localhost:3001/.well-known/agent.json
# Send a message
curl -X POST http://localhost:3001/message/send \
-H "Content-Type: application/json" \
-d '{
"message": {
"parts": [
{
"kind": "text",
"text": "Please research the given topic"
}
]
},
"sessionId": "test-session-001"
}'
# Health check
curl http://localhost:3001/health
curl -X POST http://localhost:3001/ \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"agent/getAuthenticatedExtendedCard","params":{}}' \
| jq '.'
Create a .env file in the project root:
# OpenAI
OPENAI_API_KEY=sk-...
# Anthropic
ANTHROPIC_API_KEY=sk-ant-...
# Azure OpenAI (optional)
AZURE_OPENAI_API_KEY=...
AZURE_OPENAI_API_INSTANCE_NAME=...
AZURE_OPENAI_API_DEPLOYMENT_NAME=...
AZURE_OPENAI_API_VERSION=...
# Tavily (for web search)
TAVILY_API_KEY=...
# LangChain (optional)
LANGCHAIN_VERBOSE=false
Workflows are defined in JSON files. For detailed JSON workflow file format specification and examples, please refer to OpenAgentJson documentation.
Quick Example:
{
"config": {
"recursionLimit": 100,
"a2aEndpoint": {
"port": 3001,
"agentCard": {
"name": "TaskCreationAgent",
"description": "Task creation agent for research planning",
"supportedMessageFormats": ["text/plain", "application/json"]
}
}
},
"models": [
{
"id": "taskModel",
"type": "OpenAI",
"config": {
"model": "gpt-4o-mini",
"temperature": 0.7
},
"systemPrompt": "You are an agent specialized in creating market research tasks..."
}
],
"stateAnnotation": {
"name": "AgentState",
"type": "Annotation.Root"
},
"annotation": {
"messages": {
"type": "BaseMessage[]",
"reducer": "(x, y) => x.concat(y)",
"default": []
},
"taskList": {
"type": "any[]",
"reducer": "(x, y) => y",
"default": []
}
},
"nodes": [
{
"id": "task_creator",
"handler": {
"parameters": [
{
"name": "state",
"parameterType": "state",
"stateType": "typeof AgentState.State"
},
{
"name": "model",
"parameterType": "model",
"modelRef": "taskModel"
}
],
"function": "// Node implementation..."
}
}
],
"edges": [
{ "from": "__start__", "to": "task_creator" },
{ "from": "task_creator", "to": "__end__" }
],
"stateGraph": {
"annotationRef": "AgentState",
"config": {
"checkpointer": {
"type": "MemorySaver"
}
}
}
}
Full examples available in: kudosflow2 repository
For complete documentation, see OpenAgentJson.
The workflow engine uses SceneGraphManager v2.0.0 (private package):
Learn more: See OpenAgentJson for JSON workflow file format documentation
Workflows can communicate with other A2A agents:
a2aServers sectionbindA2AServerssend_message_to_agentName()a2a-server/
├── src/
│ └── server.ts # Main server implementation
├── .env.example # Environment variables example
├── package.json # Dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── LICENSE # MIT License
└── README.md # This file
# Build TypeScript
yarn build
# Development mode (hot reload)
yarn server:dev <config-file>
# Run built server
node dist/server.js <config-file>
json/ directorypackage.json (optional)yarn server:dev path/to/config.jsonFor comprehensive debugging guidance, see the JSON Workflow Debugging Guide.
Quick debugging tips:
# Enable verbose logging
export DEBUG=true
export LANGCHAIN_VERBOSE=true
# Or in .env file
DEBUG=true
LANGCHAIN_VERBOSE=true
# Monitor logs in real-time
tail -f /tmp/workflow.log
# Check specific node execution
grep "NodeName" /tmp/workflow.log
The debugging guide covers:
For detailed examples and troubleshooting, refer to json-workflow-debugging.md.
Send a message to the agent and execute the workflow.
Request Format:
{
"jsonrpc": "2.0",
"id": 1,
"method": "message/send",
"params": {
"message": {
"messageId": "msg-unique-id",
"parts": [
{
"kind": "text",
"text": "Your message here"
}
]
},
"contextId": "session-id"
}
}
Example using curl:
curl -X POST http://localhost:3001/ \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "message/send",
"params": {
"message": {
"messageId": "msg-001",
"parts": [
{
"kind": "text",
"text": "Please research Google company overview"
}
]
},
"contextId": "session-001"
}
}'
Response:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"taskId": "task-xxx",
"result": "Agent response text",
"thread_id": "session-id"
}
}
Get agent card information.
Request Format:
{
"jsonrpc": "2.0",
"id": 2,
"method": "agent/getAuthenticatedExtendedCard",
"params": {}
}
Example using curl:
curl -X POST http://localhost:3001/ \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "agent/getAuthenticatedExtendedCard",
"params": {}
}'
Response:
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"name": "AgentName",
"description": "Agent description",
"protocolVersion": "0.3.0",
"version": "1.0.0",
"url": "http://localhost:3001/",
"defaultInputModes": ["text/plain"],
"defaultOutputModes": ["text/plain"],
"capabilities": {
"streaming": false,
"pushNotifications": false,
"stateTransitionHistory": true
},
"skills": []
}
}
-32601 - Method not found-32602 - Invalid params (missing or malformed)-32603 - Internal error (workflow execution failure)200 - Success400 - Bad request (invalid message format)404 - Resource not found500 - Internal server error# Find process using port
lsof -i :3001
# Kill process
kill -9 <PID>
# Or change port in config
Ensure all required API keys are set in .env file.
Validate JSON configuration files for syntax errors and required fields.
This server is part of a larger AI agent ecosystem:
Contributions are welcome! Please feel free to submit issues or pull requests.
MIT License - see LICENSE file for details.
Copyright (c) 2026 Akira Kudo
Third-Party Components:
This project includes the SceneGraphManager v2.0.0 component (private package), which has separate licensing terms:
See the LICENSE file for complete details.
For issues and questions:
Built with:
OpenClaw plugins that add A2A compatibility and enable communication with other A2A-compatible agents.
A lawyer for the agent economy. AI agents can request contract review, risk analysis, and legal guidance via A2A protocol.
An open-source library for AI-native x402 integrations in the Solana ecosystem. Built for Python and Node.js, distributed via PyPI and npm, with server implementations for FastAPI and Express.js. Accelerate.
Visual workflow editor for building node-based AI agent workflows with drag-and-drop interface, A2A integration, and real-time execution
Autonomous multi-agent system built using LangChain and LangGraph that orchestrates collaborative agents—Supervisor, Researcher, Writer, and Critiquer—to automatically gather information, generate detailed research reports, refine output, and visualise the workflow as a graph. Includes a Streamlit web UI and optional Graphviz visualisation.
The definitive CLI for validating A2A (Agent-to-Agent) protocol agent cards. Validates cryptographic trust, schema compliance, and live endpoint functionality.
The agent-native LLM router for autonomous agents. 55+ models (8 free), <1ms local routing, USDC payments on Base & Solana via x402.
The living ecosystem where AI agents complete tasks through workflow loops, improve through iterative execution, are evaluated by mentor agents or humans in the loop, and turn completed work into reusable work experience and data to improve future agents.
The living ecosystem where AI agents complete tasks through workflow loops, improve through iterative execution, are evaluated by mentor agents or humans in the loop, and turn completed work into reusable work experience and data to improve future agents.
The trust layer for agent-to-agent commerce — natural-language mandates, ERC-7710 delegated permissions, x402 payments, escrow, and dispute resolution as one open, catch-all Agent Skill / Claude Code plugin.
Open Source AI trading agent that operates autonomously across 1000+ markets - Polymarket, Kalshi, Binance, Hyperliquid, Solana DEXs, 5 EVM chains. Scans for edge, executes instantly, manages risk while you sleep. Agent commerce protocol for machine-to-machine payments. Self-hosted. Built on Claude.
Live data for AI agents — search, research, markets, crypto, X/Twitter. Pay-per-call via x402 micropayments.