Programs
Agent Tools
Last updated March 11, 2026
The Agent Tools program manages executive delegation for agent assets, allowing asset owners to delegate execution permissions to executive profiles.
Program ID
The same program address is deployed on both Mainnet and Devnet.
| Network | Address |
|---|---|
| Mainnet | TLREGni9ZEyGC3vnPZtqUh95xQ8oPqJSvNjvB7FGK8S |
| Devnet | TLREGni9ZEyGC3vnPZtqUh95xQ8oPqJSvNjvB7FGK8S |
Overview
The tools program provides two instructions:
- RegisterExecutiveV1 — Create an executive profile that can act as an executor for agent assets
- DelegateExecutionV1 — Grant an executive profile permission to execute on behalf of an agent asset
An executive profile is registered once per authority. Delegation is per asset — an asset owner creates a delegation record linking their agent asset to a specific executive profile.
Instruction: RegisterExecutiveV1
Creates an executive profile PDA for the given authority.
Accounts
Four accounts are required: the profile PDA to create, a payer, an optional authority, and the system program.
| Account | Writable | Signer | Optional | Description |
|---|---|---|---|---|
executiveProfile | Yes | No | No | PDA to be created (auto-derived from authority) |
payer | Yes | Yes | No | Pays for account rent and fees |
authority | No | Yes | Yes | The authority for this executive profile (defaults to payer) |
systemProgram | No | No | No | System program |
What It Does
- Derives a PDA from seeds
["executive_profile", <authority>] - Validates the account is uninitialized
- Creates and initializes the
ExecutiveProfileV1account (40 bytes) storing the authority
Instruction: DelegateExecutionV1
Delegates execution permission for an agent asset to an executive profile.
Accounts
Seven accounts are required, including the executive profile, the agent asset, its identity PDA, and the delegation record PDA to create.
| Account | Writable | Signer | Optional | Description |
|---|---|---|---|---|
executiveProfile | No | No | No | The registered executive profile |
agentAsset | No | No | No | The MPL Core asset to delegate |
agentIdentity | No | No | No | The agent identity PDA for the asset |
executionDelegateRecord | Yes | No | No | PDA to be created (auto-derived) |
payer | Yes | Yes | No | Pays for account rent and fees |
authority | No | Yes | Yes | Must be the asset owner (defaults to payer) |
systemProgram | No | No | No | System program |
What It Does
- Validates the executive profile exists and is initialized
- Validates the agent asset is a valid MPL Core asset
- Validates the agent identity is registered for the asset
- Validates the signer is the asset owner
- Derives a PDA from seeds
["execution_delegate_record", <executive_profile>, <agent_asset>] - Creates and initializes the
ExecutionDelegateRecordV1account (104 bytes)
PDA Derivation
Both account types are PDAs derived from deterministic seeds. Use the SDK helpers to compute them.
| Account | Seeds | Size |
|---|---|---|
ExecutiveProfileV1 | ["executive_profile", <authority>] | 40 bytes |
ExecutionDelegateRecordV1 | ["execution_delegate_record", <executive_profile>, <agent_asset>] | 104 bytes |
import {
findExecutiveProfileV1Pda,
findExecutionDelegateRecordV1Pda,
} from '@metaplex-foundation/mpl-agent-registry';
const profilePda = findExecutiveProfileV1Pda(umi, {
authority: authorityPublicKey,
});
const delegatePda = findExecutionDelegateRecordV1Pda(umi, {
executiveProfile: profilePda,
agentAsset: assetPublicKey,
});
Account: ExecutiveProfileV1
Stores the authority that owns this executive profile. 40 bytes, 8-byte aligned.
| Offset | Field | Type | Size | Description |
|---|---|---|---|---|
| 0 | key | u8 | 1 | Account discriminator (1 = ExecutiveProfileV1) |
| 1 | _padding | [u8; 7] | 7 | Alignment padding |
| 8 | authority | Pubkey | 32 | The authority for this executive profile |
Account: ExecutionDelegateRecordV1
Links an executive profile to an agent asset, recording who is authorized to execute on its behalf. 104 bytes, 8-byte aligned.
| Offset | Field | Type | Size | Description |
|---|---|---|---|---|
| 0 | key | u8 | 1 | Account discriminator (2 = ExecutionDelegateRecordV1) |
| 1 | bump | u8 | 1 | PDA bump seed |
| 2 | _padding | [u8; 6] | 6 | Alignment padding |
| 8 | executiveProfile | Pubkey | 32 | The executive profile address |
| 40 | authority | Pubkey | 32 | The executive authority |
| 72 | agentAsset | Pubkey | 32 | The agent asset address |
Errors
The program returns these errors when validation fails during registration or delegation.
| Code | Name | Description |
|---|---|---|
| 0 | InvalidSystemProgram | System program account is incorrect |
| 1 | InvalidInstructionData | Instruction data is malformed |
| 2 | InvalidAccountData | Invalid account data |
| 3 | InvalidMplCoreProgram | MPL Core program account is incorrect |
| 4 | InvalidCoreAsset | Asset is not a valid MPL Core asset |
| 5 | ExecutiveProfileMustBeUninitialized | Executive profile already exists |
| 6 | InvalidExecutionDelegateRecordDerivation | Delegation record PDA derivation mismatch |
| 7 | ExecutionDelegateRecordMustBeUninitialized | Delegation record already exists |
| 8 | InvalidAgentIdentity | Agent identity account is invalid |
| 9 | AgentIdentityNotRegistered | Asset does not have a registered identity |
| 10 | AssetOwnerMustBeTheOneToDelegateExecution | Only the asset owner can delegate execution |
| 11 | InvalidExecutiveProfileDerivation | Executive profile PDA derivation mismatch |
