A2A: AI 에이전트가 당신의 사이트를 호출하도록
게시일:
한 AI 에이전트가 브라우저를 열지도, 버튼을 클릭하지도, 페이지를 스크래핑하지도 않고 이 사이트를 검증했습니다 — 작은 JSON 파일을 읽고, 타입이 지정된 요청 하나를 보내고, 구조화된 결과를 돌려받았습니다. 그 교환이 바로 A2A이며, 어떤 웹사이트든 이를 제공할 수 있습니다.
A2A란 무엇인가
A2A (Agent2Agent)는 Linux Foundation 산하의 개방형 프로토콜로, AI 에이전트들이 일반 HTTP를 통해 서로를 발견하고 호출할 수 있게 합니다. 공개 API의 에이전트 간 버전이라고 생각하면 됩니다: 사람이 문서를 읽고 통합을 작성하는 대신, 다른 에이전트가 당신의 서비스가 무엇을 하는지에 대한 기계 읽기 가능한 설명을 읽고 직접 호출합니다.
두 가지 부분으로 구성됩니다: 발견 문서(에이전트 카드)와 호출 가능한 엔드포인트(스킬).
1. 에이전트 카드 — 발견
당신이 누구이고 무엇을 할 수 있는지를 설명하는 JSON 파일을 /.well-known/agent-card.json에 게시합니다. 필수 필드는 name, description, version, url (A2A 엔드포인트), 그리고 최소 하나의 skill입니다:
{
"protocolVersion": "0.3.0",
"name": "llms.txt Validator",
"description": "Validate a website's llms.txt and return a score with findings.",
"url": "https://llms-txt-validator.dev/a2a",
"skills": [{ "id": "validate_llms_txt", "name": "Validate llms.txt",
"description": "Given a domain or URL, fetch and validate its llms.txt." }]
}
2. 엔드포인트 — 호출 가능한 스킬
카드의 url은 JSON-RPC 2.0 엔드포인트를 가리킵니다. 에이전트는 메시지와 함께 message/send 메서드를 호출하고, 당신은 작업을 수행하여 Task를 반환합니다. 다음은 우리 에이전트에 대한 실제 호출입니다:
POST /a2a
{ "jsonrpc": "2.0", "id": "1", "method": "message/send",
"params": { "message": { "role": "user",
"parts": [{ "kind": "text", "text": "validate llmstxt.org" }] } } }
…그리고 응답 — 사람이 읽을 수 있는 요약과 구조화된 데이터를 담은 완료된 작업:
{ "result": { "kind": "task", "status": { "state": "completed" },
"artifacts": [{ "parts": [
{ "kind": "text", "text": "Validated llmstxt.org: score 100/100..." },
{ "kind": "data", "data": { "ok": true, "report": { "scores": { "overall": 100 } } } }
] }] } }
브라우저도, HTML 파싱도 없습니다 — 에이전트는 요청한 데이터를 정확히 받습니다.
A2A vs WebMCP vs MCP
- A2A — HTTP를 통해 당신의 서비스를 호출하는 네트워크 에이전트 (오케스트레이터, 다른 에이전트). 이 페이지.
- WebMCP — 열린 페이지에서 브라우저 내부에서 실행되는 에이전트가 도구를 호출.
- MCP — 보통 로컬에서 단일 모델이나 앱에 도구를 연결.
이들은 상호 보완적입니다: A2A는 네트워크 에이전트에, WebMCP는 브라우저 내 에이전트에 도달합니다. 세 가지가 어떻게 맞물리는지를 참조하세요.
어떤 사이트든 추가하는 방법
시작하기 위해 전체 프로토콜이 필요하지 않습니다 — 당신의 서비스가 실제로 하는 한 가지를 선택하세요:
- 하나의 스킬과 함께
/.well-known/agent-card.json에 유효한 에이전트 카드를 제공하세요. - 그 기능을 래핑하는 동기식
message/send메서드를 구현하고, 결과를 아티팩트로 담은 완료된Task를 반환하세요. - 스트리밍, 작업 기록, 푸시 알림은 선택 사항입니다 —
capabilities.streaming을 false로 설정하고 필요할 때만 추가하세요.
단 하나의 규칙: 카드를 실제 엔드포인트로 뒷받침하라
카드는 메타 태그가 아닌 계약입니다. url이 실제로 message/send에 응답하지 않는 카드를 게시하면, 이를 신뢰하는 모든 에이전트는 막다른 곳에 부딪힙니다. 실제로 제공할 수 있는 기능에만 A2A를 노출하세요 — 저희가 그렇게 구축했고, 그래서 저희 보고서는 작동하는 엔드포인트가 뒷받침할 때만 신호가 존재하는 것으로 표시합니다. 직접 확인하고 싶으신가요? 저희 에이전트 카드를 가져오세요.