Programs

Agent Tools

Last updated March 12, 2026

The Agent Tools program manages executive delegation for agent assets, allowing asset owners to delegate execution permissions to executive profiles.

Summary

The Agent Tools program (TLREGni9ZEyGC3vnPZtqUh95xQ8oPqJSvNjvB7FGK8S) provides two instructions for managing execution delegation: RegisterExecutiveV1 creates an executive profile, and DelegateExecutionV1 grants that profile permission to execute on behalf of an agent asset.

  • Two instructionsRegisterExecutiveV1 (one-time profile setup) and DelegateExecutionV1 (per-asset delegation)
  • ExecutiveProfileV1 — 40-byte PDA derived from ["executive_profile", <authority>], one per wallet
  • ExecutionDelegateRecordV1 — 104-byte PDA linking an executive profile to a specific agent asset
  • Owner-only delegation — only the asset owner can create delegation records; the program validates ownership on-chain

Program ID

The same program address is deployed on both Mainnet and Devnet.

NetworkAddress
MainnetTLREGni9ZEyGC3vnPZtqUh95xQ8oPqJSvNjvB7FGK8S
DevnetTLREGni9ZEyGC3vnPZtqUh95xQ8oPqJSvNjvB7FGK8S

Overview

The tools program provides two instructions:

  1. RegisterExecutiveV1 — Create an executive profile that can act as an executor for agent assets
  2. 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.

AccountWritableSignerOptionalDescription
executiveProfileYesNoNoPDA to be created (auto-derived from authority)
payerYesYesNoPays for account rent and fees
authorityNoYesYesThe authority for this executive profile (defaults to payer)
systemProgramNoNoNoSystem program

What It Does

  1. Derives a PDA from seeds ["executive_profile", <authority>]
  2. Validates the account is uninitialized
  3. Creates and initializes the ExecutiveProfileV1 account (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.

AccountWritableSignerOptionalDescription
executiveProfileNoNoNoThe registered executive profile
agentAssetNoNoNoThe MPL Core asset to delegate
agentIdentityNoNoNoThe agent identity PDA for the asset
executionDelegateRecordYesNoNoPDA to be created (auto-derived)
payerYesYesNoPays for account rent and fees
authorityNoYesYesMust be the asset owner (defaults to payer)
systemProgramNoNoNoSystem program

What It Does

  1. Validates the executive profile exists and is initialized
  2. Validates the agent asset is a valid MPL Core asset
  3. Validates the agent identity is registered for the asset
  4. Validates the signer is the asset owner
  5. Derives a PDA from seeds ["execution_delegate_record", <executive_profile>, <agent_asset>]
  6. Creates and initializes the ExecutionDelegateRecordV1 account (104 bytes)

PDA Derivation

Both account types are PDAs derived from deterministic seeds. Use the SDK helpers to compute them.

AccountSeedsSize
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.

OffsetFieldTypeSizeDescription
0keyu81Account discriminator (1 = ExecutiveProfileV1)
1_padding[u8; 7]7Alignment padding
8authorityPubkey32The 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.

OffsetFieldTypeSizeDescription
0keyu81Account discriminator (2 = ExecutionDelegateRecordV1)
1bumpu81PDA bump seed
2_padding[u8; 6]6Alignment padding
8executiveProfilePubkey32The executive profile address
40authorityPubkey32The executive authority
72agentAssetPubkey32The agent asset address

Errors

The program returns these errors when validation fails during registration or delegation.

CodeNameDescription
0InvalidSystemProgramSystem program account is incorrect
1InvalidInstructionDataInstruction data is malformed
2InvalidAccountDataInvalid account data
3InvalidMplCoreProgramMPL Core program account is incorrect
4InvalidCoreAssetAsset is not a valid MPL Core asset
5ExecutiveProfileMustBeUninitializedExecutive profile already exists
6InvalidExecutionDelegateRecordDerivationDelegation record PDA derivation mismatch
7ExecutionDelegateRecordMustBeUninitializedDelegation record already exists
8InvalidAgentIdentityAgent identity account is invalid
9AgentIdentityNotRegisteredAsset does not have a registered identity
10AssetOwnerMustBeTheOneToDelegateExecutionOnly the asset owner can delegate execution
11InvalidExecutiveProfileDerivationExecutive profile PDA derivation mismatch

Maintained by Metaplex · Last verified March 2026 · View source on GitHub