Builds Agent-to-Agent (A2A) servers and clients following Google's open protocol for agent interoperability.

Apache-2.0Auto-check passedProductivity & Automation

Install A2a Protocol

skills CLI
$ npx skills add internet-court/internet-court-skill --skill a2a-protocol -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install internet-court/internet-court-skill a2a-protocol --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/internet-court/internet-court-skill.git skills-src && mkdir -p .claude/skills && cp -r skills-src/vendored/terminalskills/a2a-protocol .claude/skills/a2a-protocol && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
a2a-protocol
GitHub stars
6.5k
Used in
1 other repo
Token cost
~2.5k tokens
SKILL.md length
443 words
Files
3
Skills in repo
80
Repo updated
First seen
Licence
Apache-2.0

At a glance

Builds Agent-to-Agent (A2A) servers and clients following Google's open protocol for agent interoperability.

  • Works in 7 steps: Core Concepts → Python SDK Setup → Building an A2A Server (Python) → …
  • The user wants to create an A2A-compliant agent
  • SKILL.md covers Overview, Instructions, Examples and Guidelines
  • Calls pip and npm

What it does

A2a Protocol is an agent skill from internet-court/internet-court-skill. Builds Agent-to-Agent (A2A) servers and clients following Google's open protocol for agent interoperability. Use when the user wants to create an A2A-compliant agent, build an Agent Card, implement task management, connect agents across frameworks, set up agent discovery, handle streaming responses, implement push notifications, or orchestrate multi-agent workflows. Trigger words: a2a, agent to agent, agent2agent, a2a protocol, a2a server, a2a client, agent card, agent interoperability, agent collaboration…

Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `_scores.json`). Compatibility notes: Python 3.10+ (a2a-sdk) or Node.js 18+ (@a2a-js/sdk). Go and Java SDKs also available.

It sits in Productivity & Automation, covering Multi-agent orchestration, LLM API integration and Building AI agents. It works with Agent2Agent Protocol and Python. The repository describes itself as: 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… The licence is Apache-2.0.

When your agent uses it

  • The user wants to create an A2A-compliant agent
  • Build an Agent Card
  • Implement task management
  • Connect agents across frameworks

Example prompts

  • “Use the a2a-protocol skill to build Agent-to-Agent (A2A) servers and clients following Google's open protocol for agent interoperability”
  • “/a2a-protocol”

Requirements

  • Python 3
  • Node.js
  • Compatibility (from SKILL.md): Python 3.10+ (a2a-sdk) or Node.js 18+ (@a2a-js/sdk). Go and Java SDKs also available.

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Core Concepts
  2. Python SDK Setup
  3. Building an A2A Server (Python)
  4. Building an A2A Client (Python)
  5. Node.js SDK
  6. Multi-Agent Orchestration
  7. A2A vs MCP

What it can do on your machine

Read from SKILL.md and the folder at commit fa89195. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pip
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pip and npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Python 3.10+ (a2a-sdk) or Node.js 18+ (@a2a-js/sdk). Go and Java SDKs also available.

    From compatibility in the SKILL.md frontmatter.

Context cost

A2a Protocol loads about 2.5k tokens when it runs. Until then it costs about 144 tokens; SKILL.md has 443 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~144
When it runs · the whole SKILL.md, loaded when a task matches
~2.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from internet-court/internet-court-skill at commit fa89195, republished under its Apache-2.0 licence (© internet-court). 443 words, ~2,457 tokens.

Download SKILL.mdSave it as .claude/skills/a2a-protocol/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
a2a-protocol
description
Builds Agent-to-Agent (A2A) servers and clients following Google's open protocol for agent interoperability. Use when the user wants to create an A2A-compliant agent, build an Agent Card, implement task management, connect agents across frameworks, set up agent discovery, handle streaming responses, implement push notifications, or orchestrate multi-agent workflows. Trigger words: a2a, agent to agent, agent2agent, a2a protocol, a2a server, a2a client, agent card, agent interoperability, agent collaboration, multi-agent, agent discovery, a2a sdk, a2a task.
compatibility
Python 3.10+ (a2a-sdk) or Node.js 18+ (@a2a-js/sdk). Go and Java SDKs also available.
license
Apache-2.0
metadata.author
terminal-skills
metadata.version
1.0.0
metadata.category
development
metadata.tags
a2a, agents, interoperability, protocol

A2A Protocol

Overview

Implements the Agent2Agent (A2A) open protocol for communication between AI agents built on different frameworks. A2A enables agents to discover each other via Agent Cards, negotiate interaction modalities, manage collaborative tasks, and exchange data — all without exposing internal state, memory, or tools. Supports JSON-RPC 2.0 over HTTP(S), streaming via SSE, gRPC, and async push notifications.

Instructions

1. Core Concepts
  • A2A Client: Initiates requests to an A2A Server (on behalf of a user or another agent)
  • A2A Server (Remote Agent): Exposes an A2A-compliant endpoint, processes tasks
  • Agent Card: JSON metadata at /.well-known/agent.json describing identity, capabilities, skills, endpoint, auth
  • Task: Unit of work with lifecycle (submitted → working → input-required → completed/failed/canceled/rejected)
  • Message: Communication turn (role: "user" or "agent") containing Parts (text, file, or JSON)
  • Artifact: Output generated by the agent (documents, images, structured data)
2. Python SDK Setup
bash
pip install a2a-sdk              # Core
pip install "a2a-sdk[http-server]" # With FastAPI/Starlette
pip install "a2a-sdk[grpc]"      # With gRPC
3. Building an A2A Server (Python)
python
from a2a.types import AgentCard, AgentSkill, AgentCapabilities
from a2a.server.agent_execution import AgentExecutor, RequestContext
from a2a.server.events import EventQueue
from a2a.server.apps.starlette import A2AStarletteApplication
from a2a.server.request_handler import DefaultRequestHandler
from a2a.types import Message, TextPart, TaskState, TaskStatus
import uvicorn

agent_card = AgentCard(
    name="Research Assistant",
    description="Searches the web and answers questions with citations.",
    url="https://research-agent.example.com",
    version="1.0.0",
    capabilities=AgentCapabilities(streaming=True, pushNotifications=True),
    skills=[AgentSkill(
        id="web-search", name="Web Search",
        description="Search the web for current information",
        tags=["search", "research"], examples=["Find the latest news about AI regulation"],
    )],
    defaultInputModes=["text/plain"],
    defaultOutputModes=["text/plain", "application/json"],
)

class ResearchAgentExecutor(AgentExecutor):
    async def execute(self, context: RequestContext, event_queue: EventQueue):
        query = context.get_user_message().parts[0].text
        await event_queue.enqueue_event(
            TaskStatus(state=TaskState.working, message=Message(
                role="agent", parts=[TextPart(text="Searching...")]
            ))
        )
        result = await self._research(query)
        await event_queue.enqueue_event(
            TaskStatus(state=TaskState.completed, message=Message(
                role="agent", parts=[TextPart(text=result)]
            ))
        )

    async def cancel(self, context: RequestContext, event_queue: EventQueue):
        await event_queue.enqueue_event(TaskStatus(state=TaskState.canceled))

    async def _research(self, query: str) -> str:
        return f"Research results for: {query}"

# Start server — Agent Card auto-served at /.well-known/agent.json
agent_executor = ResearchAgentExecutor()
request_handler = DefaultRequestHandler(agent_executor=agent_executor, task_store=InMemoryTaskStore())
app = A2AStarletteApplication(agent_card=agent_card, http_handler=request_handler)
uvicorn.run(app.build(), host="0.0.0.0", port=8000)
4. Building an A2A Client (Python)
python
from a2a.client import A2AClient
from a2a.types import MessageSendParams, SendMessageRequest, Message, TextPart

client = await A2AClient.get_client_from_agent_card_url(
    "https://research-agent.example.com/.well-known/agent.json"
)

# Synchronous request
request = SendMessageRequest(params=MessageSendParams(
    message=Message(role="user", parts=[TextPart(text="Latest quantum computing developments?")])
))
response = await client.send_message(request)

if hasattr(response, 'status'):
    print(f"Task {response.id}: {response.status.state}")
    if response.status.message:
        print(response.status.message.parts[0].text)

# Streaming response
async for event in client.send_message_streaming(request):
    if hasattr(event, 'status') and event.status.message:
        for part in event.status.message.parts:
            if hasattr(part, 'text'):
                print(part.text, end="", flush=True)
5. Node.js SDK
bash
npm install @a2a-js/sdk
javascript
import { A2AServer, A2AClient, TaskState } from '@a2a-js/sdk';

// Server
const server = new A2AServer({
  agentCard: {
    name: 'Code Reviewer', description: 'Reviews code for bugs and best practices',
    url: 'https://code-reviewer.example.com', version: '1.0.0',
    capabilities: { streaming: true },
    skills: [{ id: 'review', name: 'Code Review', description: 'Analyze code for issues', tags: ['code', 'review'] }],
    defaultInputModes: ['text/plain'], defaultOutputModes: ['text/plain'],
  },
  async onMessage(context, eventQueue) {
    const userText = context.getUserMessage().parts[0].text;
    await eventQueue.enqueue({ status: { state: TaskState.WORKING, message: { role: 'agent', parts: [{ text: 'Reviewing...' }] } } });
    const review = await reviewCode(userText);
    await eventQueue.enqueue({ status: { state: TaskState.COMPLETED, message: { role: 'agent', parts: [{ text: review }] } } });
  },
});
server.listen(8000);

// Client
const client = await A2AClient.fromAgentCardUrl('https://code-reviewer.example.com/.well-known/agent.json');
const response = await client.sendMessage({
  message: { role: 'user', parts: [{ text: 'Review: function add(a,b) { return a + b; }' }] },
});
6. Multi-Agent Orchestration
python
# Sequential: research → write → review
research_agent = await A2AClient.get_client_from_agent_card_url("https://research-agent.example.com/.well-known/agent.json")
writer_agent = await A2AClient.get_client_from_agent_card_url("https://writer-agent.example.com/.well-known/agent.json")

research_result = await research_agent.send_message(SendMessageRequest(
    params=MessageSendParams(message=Message(role="user", parts=[TextPart(text="Research quantum computing breakthroughs 2025")]))
))
article = await writer_agent.send_message(SendMessageRequest(
    params=MessageSendParams(message=Message(role="user", parts=[TextPart(text=f"Write blog post: {research_result.status.message.parts[0].text}")]))
))

# Parallel fan-out
import asyncio
results = await asyncio.gather(
    query_agent(agent_a, "Analyze market trends"),
    query_agent(agent_b, "Analyze competitor products"),
    query_agent(agent_c, "Analyze customer feedback"),
)
7. A2A vs MCP
A2AMCP
PurposeAgent-to-agent communicationAgent-to-tool communication
ActorsAgent ↔ AgentAgent ↔ Tool/Data source
TasksStateful, long-running, asyncStateless function calls
Use whenDelegating to another autonomous agentCalling a specific tool/API

Examples

Example 1: Customer Support Router

Input: "Build an A2A server that acts as a customer support router. It receives customer queries and delegates to specialized agents: billing-agent, technical-agent, and sales-agent based on the query content."

Output: A2A server with Agent Card listing routing as its primary skill, message handler that classifies queries, A2A client connections to 3 downstream agents, task forwarding with context preservation, aggregated response, and fallback to human handoff.

Show full SKILL.md (181 more words)Show less
Example 2: Code Pipeline Agents

Input: "Create a multi-agent code pipeline: code-writer generates code, test-writer creates tests, code-reviewer reviews both. Each is an independent A2A server. Build an orchestrator."

Output: 3 A2A server implementations each with Agent Card and execution logic, orchestrator client with sequential pipeline (write → test → review), streaming updates, and error handling with feedback loops on rejection.

Guidelines

  • Serve the Agent Card at /.well-known/agent.json — this is the standard discovery endpoint
  • Use descriptive skill definitions — other agents use these to decide whether to delegate to you
  • Always handle the input-required state for human-in-the-loop scenarios
  • Use streaming for tasks that take more than a few seconds
  • Implement task cancellation — long-running tasks must be cancellable
  • Use push notifications for tasks that may take minutes or hours
  • Keep agents focused — one agent, one capability domain
  • Use structured data (JSON Parts) for agent-to-agent, text Parts for human-readable responses
  • Implement authentication on your A2A endpoint — declare the scheme in your Agent Card
  • A2A is for agent collaboration; use MCP for tool integration within a single agent
  • Pin SDK versions — the protocol is evolving (currently v0.3.0)

© internet-court, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files in vendored/terminalskills/a2a-protocol of internet-court/internet-court-skill.

  • SKILL.md
  • LICENSE
  • _scores.json

Open the folder on GitHubat commit fa89195

Used in 1 other repository

We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in internet-court/internet-court-skill, which our catalogue first saw on October 7, 2026.

Compare with similar skills

A2a Protocol next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

A2a Protocol compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
A2a Protocol this skillinternet-court/internet-court-skill6.5k1 repos~2.5kAutomated safety check: PassApache-2.0
A2a ProtocolTerminalSkills/skills163—~2.8kAutomated safety check: PassApache-2.0
Swarms Multi-Agent Frameworkkyegomez/swarms7.2k—~5.5kAutomated safety check: PassApache-2.0
Agent Squad Python Guide2FastLabs/agent-squad7.8k—~4.7kAutomated safety check: PassApache-2.0
Olore A2a Latestolorehq/olore104—~721Automated safety check: PassMIT
Langgraph Docslangchain-ai/docs426—~282Automated safety check: PassMIT

Similar skills

  • A2a Protocol

    TerminalSkills/skills

    Builds Agent2Agent (A2A) servers and clients, the open protocol (originally from Google, now under the Linux Foundation) that lets AI agents from different frameworks call each other.

    163 GitHub stars~2.8k tokensUpdated 5 days ago
    Productivity & AutomationAuto-check passed
  • Teaches the Swarms Python framework: the Agent class, tools, loops, memory and multi-agent structures such as sequential, concurrent and graph workflows.

    7.2k GitHub stars~5.5k tokensUpdated today
    AI & LLM EngineeringAuto-check passed
  • Agent Squad Python Guide

    2FastLabs/agent-squad

    Map of the agent-squad Python framework for async multi-agent orchestration: which agent, classifier, storage and tool provider to pick, and the pitfalls to avoid.

    7.8k GitHub stars~4.7k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • Olore A2a Latest

    olorehq/olore

    Local A2A (Agent-to-Agent) protocol documentation (latest). An agent skill from olorehq/olore.

    104 GitHub stars~721 tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Langgraph Docs

    langchain-ai/docs

    Official

    Fetches and references LangGraph Python documentation to build stateful agents, create multi-agent workflows, and implement human-in-the-loop patterns.

    426 GitHub stars~282 tokensUpdated today
    AI & LLM EngineeringAuto-check passed
  • AWS Strands

    hoodini/ai-agents-skills

    Build AI agents with the Strands Agents SDK - the open-source framework (the agent "brain") for writing agent logic, tools, and multi-agent systems in Python.

    282 GitHub stars~1.4k tokensUpdated 2 mo ago
    Agent WorkflowsAuto-check passed

More from internet-court/internet-court-skill

All 80 skills in this repo
  • Kleros IPFS Upload

    internet-court/internet-court-skill

    Uploads one Kleros-related file per paid request to IPFS through the Kleros x402 gateway for 0.01 USDC on Base, returning a CID that Kleros contracts can reference.

    6.5k GitHub stars~4.9k tokensUpdated 1 mo ago
    Auto-check: notes
  • 0G Compute Network Guide

    internet-court/internet-court-skill

    Guides building on the 0G Compute Network, a decentralized GPU marketplace for AI inference and fine-tuning, with SDK patterns and CLI commands.

    6.5k GitHub starsUsed in 1 repo~1.9k tokens
    Auto-check passed
  • PNP Prediction Markets on Solana

    internet-court/internet-court-skill

    Creates, trades and settles permissionless prediction markets on Solana with any SPL token as collateral, including social-media and custom-oracle markets.

    6.5k GitHub stars~7.5k tokensUpdated 1 mo ago
    Auto-check: notes
  • BNB Chain MCP Server

    internet-court/internet-court-skill

    Connects an agent to the BNB Chain MCP server to read blocks and contracts, move tokens and NFTs, register ERC-8004 agents and use Greenfield storage.

    6.5k GitHub starsUsed in 1 repo~1.7k tokens
    Auto-check passed
  • GenLayer ERC-7710 Connector

    internet-court/internet-court-skill

    Specifies how a GenLayer Intelligent Contract decision about an agent's performance becomes an ERC-7710 revocation or policy change, through a relayer or bridge and an EVM controller.

    6.5k GitHub starsUsed in 1 repo~2.2k tokens
    Auto-check passed
  • GenLayer Agent Supervision Adapter

    internet-court/internet-court-skill

    Specifies how a GenLayer Intelligent Contract should supervise an AI agent, with review rubrics, evidence schemas and continue, warn, constrain or revoke decisions.

    6.5k GitHub starsUsed in 1 repo~1.8k tokens
    Auto-check passed

Questions about A2a Protocol

What does A2a Protocol do?

Builds Agent-to-Agent (A2A) servers and clients following Google's open protocol for agent interoperability. A2a Protocol is an agent skill from internet-court/internet-court-skill. Builds Agent-to-Agent (A2A) servers and clients following Google's open protocol for agent interoperability.

When should I use A2a Protocol?

A2a Protocol fits situations like: the user wants to create an A2A-compliant agent; build an Agent Card; implement task management; connect agents across frameworks.

How do I install A2a Protocol in Claude Code?

Run `npx skills add internet-court/internet-court-skill --skill a2a-protocol -a claude-code`. Or copy the skill folder (vendored/terminalskills/a2a-protocol in internet-court/internet-court-skill) into .claude/skills/a2a-protocol in your project. Claude Code loads it when a task matches its description.

How do I install A2a Protocol in Codex?

Run `npx skills add internet-court/internet-court-skill --skill a2a-protocol -a codex`. Or copy the skill folder (vendored/terminalskills/a2a-protocol in internet-court/internet-court-skill) into .agents/skills/a2a-protocol in your project. Codex loads it when a task matches its description.

Can I use A2a Protocol in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add internet-court/internet-court-skill --skill a2a-protocol -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/a2a-protocol, .gemini/skills/a2a-protocol, .github/skills/a2a-protocol and .opencode/skills/a2a-protocol in your project.

What does A2a Protocol need to run?

Going by SKILL.md and its folder, A2a Protocol needs the command-line tools its instructions call (pip and npm). Our summary lists: Python 3; Node.js. Compatibility (from SKILL.md): Python 3.10+ (a2a-sdk) or Node.js 18+ (@a2a-js/sdk). Go and Java SDKs also available..

Does A2a Protocol access the network?

SKILL.md contains no URLs. Its commands use pip and npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is A2a Protocol safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does A2a Protocol use?

A2a Protocol is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does A2a Protocol use?

About 2.5k tokens (SKILL.md is roughly 9.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to A2a Protocol?

Skills that share tags, products or a category with A2a Protocol: A2a Protocol (TerminalSkills/skills, 163 stars), Swarms Multi-Agent Framework (kyegomez/swarms, 7.2k stars), Agent Squad Python Guide (2FastLabs/agent-squad, 7.8k stars) and Olore A2a Latest (olorehq/olore, 104 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains A2a Protocol?

internet-court (a GitHub organization) maintains it in internet-court/internet-court-skill, which has 6,471 GitHub stars. The repository holds 80 skills in this directory. The repository was last updated on August 19, 2026.

Source: internet-court/internet-court-skill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.