記事一覧に戻る
Hands-on Tutorial

Agent Cardの書き方
実践チュートリアル

2026年4月2日読了時間 10分

Agent Cardは、A2Aプロトコルにおけるエージェントの「名刺」です。 他のエージェントがあなたのエージェントを発見し、能力を理解するための情報を記述します。 基本概念については「A2Aエージェントカードとは?完全ガイド」をご覧ください。本記事では、実際にAgent Cardを書く手順を解説します。

最小構成のAgent Card

動作するAgent Cardに必要な最小限のフィールドは以下の通りです。まずはこの形から始めましょう。

minimal-agent-card.json
{
  "name": "my_first_agent",
  "description": "最初のA2Aエージェント",
  "version": "1.0.0",
  "defaultInputModes": ["text/plain"],
  "defaultOutputModes": ["text/plain"],
  "capabilities": {
    "streaming": false,
    "pushNotifications": false
  },
  "supportedInterfaces": [
    {
      "url": "https://example.com/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "skills": [
    {
      "id": "hello",
      "name": "挨拶",
      "description": "ユーザーに挨拶を返す",
      "tags": ["greeting", "basic"]
    }
  ]
}

フィールド解説(実例付き)

name / description

nameはエージェントの一意な識別子です。スネークケースまたはケバブケースを推奨します。

Good
booking_agent

機能が明確、スネークケース

Bad
My Agent v2 Final

スペース含む、バージョン混在

version

セマンティックバージョニング(semver)形式を使います。MAJOR.MINOR.PATCHの3つの数字で構成されます。

version examples
"1.0.0"  // 初回リリース
"1.1.0"  // 後方互換性のある機能追加
"2.0.0"  // 破壊的変更(スキルIDの変更等)

supportedInterfaces

エージェントへの接続方法を定義します。3つのプロトコルバインディングから選択できます。

バインディング特徴推奨場面
JSONRPC標準的、最も広くサポート一般的なWebサービス
GRPC高速、型安全、バイナリ転送高パフォーマンスが必要な場面
HTTP+JSONシンプル、デバッグしやすいプロトタイピング、小規模

capabilities

エージェントの通信能力を宣言します。

capabilities
"capabilities": {
  "streaming": true,       // リアルタイム応答が可能
  "pushNotifications": true, // 非同期タスクの完了通知
  "extendedAgentCard": false // 拡張仕様への対応
}
  • streaming: チャットボットや対話型エージェントならtrue
  • pushNotifications: 長時間タスク(レポート生成等)を処理するならtrue

skills

エージェントが提供するスキル(アクション)を定義します。

skills example
"skills": [
  {
    "id": "search_products",
    "name": "商品検索",
    "description": "キーワードや条件に基づいて商品を検索する",
    "tags": ["search", "product", "e-commerce"],
    "examples": [
      "赤いスニーカーを探して",
      "1万円以下のワイヤレスイヤホン"
    ]
  }
]

id の命名規則: スネークケース推奨。動詞+名詞の形式(例: send_email, create_booking

tags のコツ: 一般的なキーワードと具体的なキーワードを混ぜる。3-5個が目安

examples の書き方: 実際のユーザー発話を想定。自然な日本語で2-3個

プリセットを活用して素早く始める

agentjukuのGenerator画面には5つのプリセットテンプレートが用意されています。 ゼロから書く代わりに、最も近いプリセットを選んでカスタマイズするのが最速の方法です。

  • 予約管理エージェント予約・スケジュール管理に特化
  • カスタマーサポートFAQ回答とチケット管理の2スキル構成
  • 営業・見積もり見積もり作成と商品レコメンド
  • データ分析レポート生成とクエリ実行
  • 空のテンプレートすべて手動で入力したい場合

デプロイ方法

Agent Cardは/.well-known/agent-card.jsonに配置します。プラットフォーム別の手順を紹介します。

Vercel

public/.well-known/agent-card.json
// public/.well-known/ ディレクトリに配置するだけ
// Vercelが自動的に静的ファイルとして配信します

project/
  public/
    .well-known/
      agent-card.json  ← ここに配置

Nginx

nginx.conf
location /.well-known/agent-card.json {
    alias /var/www/html/agent-card.json;
    default_type application/json;
    add_header Access-Control-Allow-Origin "*";
}

Express

server.js
const express = require('express');
const app = express();

app.get('/.well-known/agent-card.json', (req, res) => {
  res.json(require('./agent-card.json'));
});

よくある間違い

バージョン形式の誤り
NG

"version": "v1"

OK

"version": "1.0.0"

semver形式(MAJOR.MINOR.PATCH)を使用してください

スキルIDの重複
NG

2つのスキルに同じ "id": "search" を設定

OK

"search_products" と "search_docs" のように区別

スキルIDはAgent Card内で一意である必要があります

interfacesのURL未設定
NG

"url": ""

OK

"url": "https://api.example.com/a2a"

実際にアクセス可能なエンドポイントURLを指定してください

tagsが空配列
NG

"tags": []

OK

"tags": ["email", "communication", "notification"]

他のエージェントがスキルを発見するためにtagsは重要です

まとめ

Agent Cardの作成は、適切な命名規則とフィールド構成を理解すれば難しくありません。 最小構成から始めて、プリセットを活用し、必要に応じてフィールドを追加していくのが最も効率的です。

Agent Cardを作成する

agentjukuのGeneratorなら、GUIで簡単にAgent Cardを作成できます。プリセットから始めて、すぐにダウンロード。

agentjuku Generator で作成する