6 件のコピー可能な JSON テンプレート · A2A v1.0

A2A Agent Card の例

実用的な A2A v1.0 テンプレートを閲覧し、その設計上の判断を理解した上で、あなた自身のエージェント向けに例を適応させましょう。

公開エージェントディスカバリー

これらの例を使って、他の A2A クライアントがあなたのエージェントがタスクを完了できるか判断する前に取得する JSON の形を決めましょう。

マーケットプレイスへの提出

プロバイダー、スキル、タグ、能力、セキュリティメタデータを適応させ、レビュアーがエージェントの機能と運営者を理解できるようにしましょう。

社内エージェントカタログ

チームがワークフローに統合する前に、社内エージェント間でエンドポイント、認証、スキルの説明を標準化しましょう。

JSON テンプレート

サポート、予約、ショッピング、コーディング、リサーチ、ワークフローエージェント向けの Agent Card の例。

テンプレートを検証する
フィルター

カスタマーサポートエージェント

製品に関する質問、注文の照会、返品、エスカレーション対応を処理します。

このように設計されている理由

  • OAuth 2.0 のクライアントクレデンシャルが注文データを保護します:Agent Card はトークン URL とスコープを宣言しているため、クライアントは帯域外の文書なしで認証できます。
  • サポートの会話は長時間にわたり、解決の更新が非同期に届くため、streaming と pushNotifications はどちらも true です。
  • この単一のスキルは、曖昧な「顧客をサポートする」という説明ではなく、1 つのタスク境界(分類、解決、エスカレーション)に絞られているため、ルーターは正確にマッチングできます。
customer-support.json
{
  "name": "カスタマーサポートエージェント",
  "description": "カスタマー サポートの質問に答え、注文のコンテキストを取得し、未解決の問題を人間のチームにエスカレーションします。",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/customer-support",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "株式会社イ例",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": true,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "resolve-customer-support-request",
      "name": "カスタマーサポートリクエストを解決する",
      "description": "顧客サポートのリクエストを分類し、必要なコンテキストを収集し、解決策を提案し、信頼性が低い場合はエスカレーションします。",
      "tags": [
        "support",
        "orders",
        "returns"
      ],
      "examples": [
        "注文品の返品を手伝ってください。"
      ]
    }
  ],
  "securitySchemes": {
    "oauth2": {
      "oauth2SecurityScheme": {
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://api.example.com/a2a/customer-support/oauth/token",
            "scopes": {
              "agent.invoke": "Invoke agent skills"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "oauth2": [
        "agent.invoke"
      ]
    }
  ]
}

予約エージェント

利用可能な予約枠を見つけ、予約確認を準備します。

このように設計されている理由

  • ここではヘッダー内の API キーで十分です:予約はテナントスコープですが、OAuth が解決する委任されたユーザー同意の問題は伴いません。
  • defaultOutputModes は application/json のみで、呼び出し元が文章ではなく構造化された予約案を受け取ることを示しています。
  • pushNotifications が true なので、クライアントがポーリングすることなく、枠を保持するバックエンドが確定した後にエージェントが予約を確認できます。
booking.json
{
  "name": "予約エージェント",
  "description": "空き状況を検索し、予約オプションを提案し、承認を受けるための予約を準備します。",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/booking",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "株式会社イ例",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": false,
    "pushNotifications": true,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "find-and-prepare-booking",
      "name": "予約を見つけて準備する",
      "description": "リソースの可用性を確認し、予約ウィンドウを比較し、構造化された予約提案を返します。",
      "tags": [
        "booking",
        "calendar",
        "availability"
      ],
      "examples": [
        "明日の午後に 30 分間の約束を見つけてください。"
      ]
    }
  ],
  "securitySchemes": {
    "apiKey": {
      "apiKeySecurityScheme": {
        "location": "header",
        "name": "X-API-Key"
      }
    }
  },
  "security": [
    {
      "apiKey": []
    }
  ]
}

ショッピングエージェント

商品、在庫状況、価格、購入制約を比較します。

このように設計されている理由

  • ランク付けされたおすすめは計算されるたびにストリーミングされるため、streaming は true ですが pushNotifications は false のままです——応答が完了した後は何も起こりません。
  • スキルの説明はトレードオフと理由を返すことを約束しており、これはこのエージェントが単に商品を列挙するのではなくランキングを説明することをオーケストレーターに伝えます。
  • OAuth スコープが購入に関連するデータをゲートします。公開のショッピングデモではセキュリティを完全に省略しても、有効な Agent Card のままです。
shopping.json
{
  "name": "ショッピングエージェント",
  "description": "製品をユーザーの制約と比較し、トレードオフのあるランク付けされた購入オプションを返します。",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/shopping",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "株式会社イ例",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "compare-shopping-options",
      "name": "ショッピングオプションを比較する",
      "description": "候補製品を評価し、制約によってフィルタリングし、根拠を付けてランク付けされた推奨事項を返します。",
      "tags": [
        "shopping",
        "commerce",
        "recommendations"
      ],
      "examples": [
        "1,200 ドル以下の軽量ラップトップを比較します。"
      ]
    }
  ],
  "securitySchemes": {
    "oauth2": {
      "oauth2SecurityScheme": {
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://api.example.com/a2a/shopping/oauth/token",
            "scopes": {
              "agent.invoke": "Invoke agent skills"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "oauth2": [
        "agent.invoke"
      ]
    }
  ]
}

コーディングエージェント

コーディングタスクをレビューし、パッチを提案し、実装の決定を説明します。

このように設計されている理由

  • extendedAgentCard は true です:公開 Agent Card には汎用的な「コード変更を実装する」スキルが記載されており、リポジトリ固有のスキルは GetExtendedAgentCard を通じて認証済みクライアントにのみ公開されます。
  • エージェントは人間が読める説明と機械が適用可能なパッチの両方を返すため、text/plain と application/json の両方の出力が宣言されています。
  • 長時間のコンパイル・テストループにはストリーミングが重要です。クライアントは無言の数分間の呼び出しではなく、中間の進捗状況を確認できます。
coding.json
{
  "name": "コーディングエージェント",
  "description": "コードを分析し、変更を提案し、実装メモを返すことにより、ソフトウェア エンジニアリングのタスクを支援します。",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/coding",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "株式会社イ例",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": true,
    "extendedAgentCard": true
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "implement-code-change",
      "name": "コード変更を実装する",
      "description": "コーディング要求を読み取り、関連ファイルを検査し、パッチ提案を返し、検証手順を要約します。",
      "tags": [
        "coding",
        "review",
        "patches"
      ],
      "examples": [
        "ユーザー API にページネーションを追加します。"
      ]
    }
  ],
  "securitySchemes": {
    "apiKey": {
      "apiKeySecurityScheme": {
        "location": "header",
        "name": "X-API-Key"
      }
    }
  },
  "security": [
    {
      "apiKey": []
    }
  ]
}

リサーチエージェント

情報源を収集し、証拠を抽出し、構造化されたリサーチノートを返します。

このように設計されている理由

  • securitySchemes はまったくありません:エンドポイントは意図的に公開されており、フィールドを省略することがそれを表す正しい方法です——空のスキームマップは曖昧になってしまいます。
  • リサーチブリーフは自然言語の質問から始まるため、入力は text/plain のみです。構造化された出力は application/json のノートとして届きます。
  • これは最小限の有用な v1.0 Agent Card です:ID、1 つのインターフェース、能力、モード、そして 1 つの適切にタグ付けされたスキル。
research.json
{
  "name": "リサーチエージェント",
  "description": "ソース資料を収集し、証拠を抽出し、引用を含む構造化された研究ノートを作成します。",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/research",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "株式会社イ例",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/plain"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "prepare-research-brief",
      "name": "研究概要を準備する",
      "description": "承認された情報源を検索し、主張と証拠を抽出し、簡潔な研究概要を返します。",
      "tags": [
        "research",
        "evidence",
        "citations"
      ],
      "examples": [
        "再生可能エネルギー政策に関する引用された概要を準備します。"
      ]
    }
  ]
}

社内ワークフローエージェント

承認、ステータスチェック、バックオフィスのワークフロー更新を調整します。

このように設計されている理由

  • application/json のみが唯一の入出力モードです:このエージェントは他のシステムから呼び出され、人が文章を入力することは決してありません。
  • OAuth 2.0 に extendedAgentCard を組み合わせることで、企業監査に適合します——セキュリティチームは認証要件を公開で確認できる一方、機密性の高いワークフロースキルは認証の背後に留まります。
  • 承認チェーンは数時間から数日かかるため、pushNotifications は不可欠です。Webhook がポーリングに代わって状態変化を扱います。
internal-workflow.json
{
  "name": "社内ワークフローエージェント",
  "description": "内部の承認を調整し、システムのステータスを確認し、運用チーム向けのワークフローの更新を準備します。",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/workflow",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "株式会社イ例",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": false,
    "pushNotifications": true,
    "extendedAgentCard": true
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "coordinate-internal-workflow",
      "name": "社内ワークフローを調整する",
      "description": "ワークフローの意図を受け取り、ポリシー要件を確認し、承認を収集し、最終ステータスを報告します。",
      "tags": [
        "workflow",
        "operations",
        "approval"
      ],
      "examples": [
        "給与更新を展開するための承認をリクエストします。"
      ]
    }
  ],
  "securitySchemes": {
    "oauth2": {
      "oauth2SecurityScheme": {
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://api.example.com/a2a/workflow/oauth/token",
            "scopes": {
              "agent.invoke": "Invoke agent skills"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "oauth2": [
        "agent.invoke"
      ]
    }
  ]
}

自信を持って適応させる

Agent Card の例を適応させる方法

各 Agent Card の例は、コピーするのに十分なほど意図的に完成されていますが、Agent Card は変更せずに公開すべきではありません。あなた自身の A2A サーバーのフィールドマップとして扱ってください:ID、エンドポイント、プロバイダー、認証、能力、モード、スキルの詳細を本番の値に置き換えます。

最も優れた Agent Card は、平易な言葉と機械可読なメタデータの両方でエージェントのタスク境界を説明します。クライアントは、エージェントが何をできて何をできないか、どの URL を呼び出すべきか、資格情報が必要かどうかを判断できるはずです。

公開する前に

すべての example.com の URL を、デプロイ済みの A2A エンドポイントとプロバイダーのウェブサイトに置き換えます。

実際のタスク境界に合わせて、スキル名、説明、タグ(v1.0 で必須)、例を書き直します。

provider.organization を設定し、Agent Card の内容が変わるたびにトップレベルの version を上げます。

エンドポイントが意図的に公開されている場合にのみ、認証フィールドを削除します。

defaultInputModes と defaultOutputModes を、あなたのサーバーが実際に受け入れ、返す内容と一致させておきます。

最終的な JSON を検証し、サービスドメインの /.well-known/agent-card.json に公開します。

構築の準備ができました

例から始めて、それを自分のものにしましょう。

Agent Card ジェネレーターでどのパターンでも開き、JSON をレビューし、公開前に検証してください。