{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "AgentCard", "description": "A2A 표준 기반 이종 에이전트 및 물리 장치 발견용 Agent Card 스키마 템플릿", "type": "object", "properties": { "agent_id": { "type": "string", "description": "에이전트 또는 물리 노드의 고유 UUID 또는 식별자" }, "name": { "type": "string", "description": "에이전트/장치 명칭 (예: smart-farm-sprinkler-01)" }, "role": { "type": "string", "description": "시스템 내에서의 역할 (예: sensing-layer, control-layer, planner, developer, reviewer)" }, "version": { "type": "string", "description": "에이전트 모듈 소프트웨어 버전" }, "endpoint": { "type": "object", "description": "연동 엔드포인트 정보", "properties": { "uri": { "type": "string", "description": "접속 Endpoint URI (예: dns:///edge-gateway.local:50051 또는 mqtt://broker.local:1883)" }, "protocol": { "type": "string", "enum": ["grpc", "grpc-over-quic", "mqtt-v5", "coap", "http2"], "description": "통신 전송 프로토콜 규격" }, "transport_fallback": { "type": "string", "enum": ["grpc-over-http2", "mqtt-v3.1.1", "none"], "description": "네트워크 제한 시 fallback할 전송 계층" } }, "required": ["uri", "protocol"] }, "security": { "type": "object", "description": "보안 및 신원 정보", "properties": { "auth_type": { "type": "string", "enum": ["spiffe-svid", "hmac-sha256", "mtls", "none"], "description": "인증/인가 보안 프로토콜" }, "spiffe_id": { "type": "string", "description": "SPIFFE 신원 식별자 (예: spiffe://example.org/ns/smartfarm/sa/sprinkler)" }, "hmac_token_ref": { "type": "string", "description": "HMAC 토큰 서명을 위한 환경변수명" } }, "required": ["auth_type"] }, "capabilities": { "type": "array", "description": "에이전트가 제공하는 과업/제어 기능 및 RPC 메소드 매핑", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "기능/명령 이름 (예: spray_pesticide)" }, "grpc_method": { "type": "string", "description": "gRPC 패키지/메서드 매핑 경로 (예: /smartfarm.ControlService/SprayPesticide)" }, "mqtt_topic": { "type": "string", "description": "하부 센싱/제어 매핑 MQTT 토픽 (예: farm/device/sprinkler/control)" }, "idempotency": { "type": "string", "enum": ["idempotent", "non-idempotent"], "description": "제어 명령의 멱등성 여부 분류 (비멱등 시 CIK 적용 필수)" }, "input_schema": { "type": "object", "description": "입력 파라미터 Protobuf/JSON 스키마 정의" } }, "required": ["name", "idempotency"] } } }, "required": ["agent_id", "name", "role", "endpoint", "security", "capabilities"] }