はじめに
エージェントを登録
Last updated March 12, 2026
MPL CoreアセットにIDレコードを紐付けて、Metaplex 014エージェントレジストリにエージェントを登録します。
概要
registerIdentityV1命令は、オンチェーンIDレコードをMPL Coreアセットに紐付け、検出可能なPDAを作成し、Transfer、Update、Executeのライフサイクルフックをアタッチします。
- アセットの公開鍵から派生したPDAを作成し、オンチェーンでの検出を可能にします
AgentIdentityプラグインとライフサイクルフックをCoreアセットにアタッチします- エージェントメタデータのためにERC-8004に準拠したオフチェーン登録ドキュメントにリンクします
- 既存のMPL Coreアセットと
@metaplex-foundation/mpl-agent-registrySDKが必要です
クイックスタート
- 前提条件 — MPL Coreアセットを取得し、SDKをインストール
- エージェントを登録 —
registerIdentityV1を呼び出してIDを紐付け - エージェント登録ドキュメント — オフチェーンメタデータJSONを作成
- 登録を確認 — IDがアタッチされたことを確認
- 完全な例 — エンドツーエンドのコードサンプル
学べること
このガイドでは、以下を含むエージェントの登録方法を説明します:
- MPL CoreアセットにリンクされたIDレコード
- エージェントをオンチェーンで検出可能にするPDA(Program Derived Address)
- Transfer、Update、Executeのライフサイクルフックを持つAgentIdentityプラグイン
前提条件
登録前にMPL Coreアセットが必要です。まだお持ちでない場合は、NFTを作成をご覧ください。IDプログラム自体の詳細については、MPL Agent Registryドキュメントをご覧ください。
エージェントを登録
登録により、アセットの公開鍵から派生したPDAが作成され、Transfer、Update、Executeのライフサイクルフックを持つAgentIdentityプラグインがアタッチされます。PDAによりエージェントが検出可能になります。誰でもアセットアドレスからPDAを派生させ、登録済みIDがあるかどうかを確認できます。
import { createUmi } from '@metaplex-foundation/umi-bundle-defaults';
import { mplAgentIdentity } from '@metaplex-foundation/mpl-agent-registry';
import { registerIdentityV1 } from '@metaplex-foundation/mpl-agent-registry';
const umi = createUmi('https://api.mainnet-beta.solana.com')
.use(mplAgentIdentity());
await registerIdentityV1(umi, {
asset: assetPublicKey,
collection: collectionPublicKey,
agentRegistrationUri: 'https://example.com/agent-registration.json',
}).sendAndConfirm(umi);
パラメータ
| パラメータ | 説明 |
|---|---|
asset | 登録するMPL Coreアセット |
collection | アセットのコレクション(オプション) |
agentRegistrationUri | オフチェーンのエージェント登録メタデータを指すURI |
payer | レントと手数料を支払う(デフォルトはumi.payer) |
authority | コレクション権限(デフォルトはpayer) |
エージェント登録ドキュメント
agentRegistrationUriは、エージェントのID、サービス、メタデータを記述するJSONドキュメントを指します。フォーマットはSolana向けに適応されたERC-8004に準拠しています。JSONファイル(および関連画像)をArweaveなどの永続ストレージプロバイダーにアップロードして公開アクセス可能にしてください。プログラムによるアップロードについては、このガイドをご覧ください。
{
"type": "https://eips.ethereum.org/EIPS/eip-8004#registration-v1",
"name": "Plexpert",
"description": "An informational agent providing help related to Metaplex protocols and tools.",
"image": "https://arweave.net/agent-avatar-tx-hash",
"services": [
{
"name": "web",
"endpoint": "https://metaplex.com/agent/<ASSET_PUBKEY>"
},
{
"name": "A2A",
"endpoint": "https://metaplex.com/agent/<ASSET_PUBKEY>/agent-card.json",
"version": "0.3.0"
},
{
"name": "MCP",
"endpoint": "https://metaplex.com/agent/<ASSET_PUBKEY>/mcp",
"version": "2025-06-18"
}
],
"active": true,
"registrations": [
{
"agentId": "<MINT_ADDRESS>",
"agentRegistry": "solana:101:metaplex"
}
],
"supportedTrust": [
"reputation",
"crypto-economic"
]
}
フィールド
| フィールド | 必須 | 説明 |
|---|---|---|
type | はい | スキーマ識別子。https://eips.ethereum.org/EIPS/eip-8004#registration-v1を使用。 |
name | はい | 人が読めるエージェント名 |
description | はい | エージェントの自然言語による説明 — 何をするか、どう動くか、どう操作するか |
image | はい | アバターまたはロゴのURI |
services | いいえ | エージェントが公開するサービスエンドポイントの配列(以下参照) |
active | いいえ | エージェントが現在アクティブかどうか(true/false) |
registrations | いいえ | エージェントのIDにリンクバックするオンチェーン登録の配列 |
supportedTrust | いいえ | エージェントがサポートする信頼モデル(例:reputation、crypto-economic、tee-attestation) |
サービス
各サービスエントリは、エージェントとのやり取り方法を記述します:
| フィールド | 必須 | 説明 |
|---|---|---|
name | はい | サービスタイプ — 例:web、A2A、MCP、OASF、DID、email |
endpoint | はい | サービスに到達できるURLまたは識別子 |
version | いいえ | プロトコルバージョン |
skills | いいえ | このサービスを通じてエージェントが公開するスキルの配列 |
domains | いいえ | エージェントが動作するドメインの配列 |
登録
各登録エントリは、オンチェーンIDレコードにリンクバックします:
| フィールド | 必須 | 説明 |
|---|---|---|
agentId | はい | エージェントのミントアドレス |
agentRegistry | はい | 固定のレジストリ識別子 — solana:101:metaplexを使用 |
登録を確認
import { fetchAsset } from '@metaplex-foundation/mpl-core';
const assetData = await fetchAsset(umi, assetPublicKey);
// Check the AgentIdentity plugin
const agentIdentity = assetData.agentIdentities?.[0];
console.log(agentIdentity?.uri); // your registration URI
console.log(agentIdentity?.lifecycleChecks?.transfer); // truthy
console.log(agentIdentity?.lifecycleChecks?.update); // truthy
console.log(agentIdentity?.lifecycleChecks?.execute); // truthy
完全な例
import { generateSigner } from '@metaplex-foundation/umi';
import { create, createCollection } from '@metaplex-foundation/mpl-core';
import { registerIdentityV1 } from '@metaplex-foundation/mpl-agent-registry';
// 1. Create a collection
const collection = generateSigner(umi);
await createCollection(umi, {
collection,
name: 'Agent Collection',
uri: 'https://example.com/collection.json',
}).sendAndConfirm(umi);
// 2. Create an asset
const asset = generateSigner(umi);
await create(umi, {
asset,
name: 'My Agent',
uri: 'https://example.com/agent.json',
collection,
}).sendAndConfirm(umi);
// 3. Register identity
await registerIdentityV1(umi, {
asset: asset.publicKey,
collection: collection.publicKey,
agentRegistrationUri: 'https://example.com/agent-registration.json',
}).sendAndConfirm(umi);
注意事項
- 登録はアセットごとに1回限りの操作です。すでに登録済みのアセットに対して
registerIdentityV1を呼び出すと失敗します。 agentRegistrationUriは永続的にホストされたJSON(例:Arweave)を指す必要があります。URIにアクセスできなくなっても、オンチェーンIDは存在し続けますが、クライアントはエージェントのメタデータを取得できなくなります。collectionパラメータはオプションですが推奨されます。登録時のコレクションレベルの権限チェックを有効にします。- Transfer、Update、Executeのライフサイクルフックは自動的にアタッチされます。これらのフックにより、IDプラグインがアセットに対する操作の承認または拒否に参加できます。
Metaplexが管理 · 2026年3月検証済み · GitHubでソースを見る
