Skip to content

erc8004

erc8004 discovery

Discover and resolve ERC-8004 agents.

erc8004 discovery resolve

Resolve a full agent identifier (<registry>:<agentId>) to agent details.

Arguments

NameTypeRequiredDescription
identifierstringyesAgent identifier in format <registryAddress>:<agentId>

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
IPFS_GATEWAYstringnoIPFS gateway override (default: https://ipfs.io)

Output

FieldTypeRequiredDescription
identifierstringyes
registrystringyes
agentIdstringyes
ownerstringyes
uristringyes
namestringno
descriptionstringno

Examples

sh
# Resolve agent #42 from a specific registry
erc8004 discovery resolve 0xRegistryAddress:42

Search for registered agents by name or service type.

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
IDENTITY_REGISTRY_ADDRESSstringnoIdentity registry contract address
IPFS_GATEWAYstringnoIPFS gateway override (default: https://ipfs.io)

Options

FlagTypeDefaultDescription
--namestringSearch agents by name (case-insensitive substring)
--servicestringFilter by service type (e.g. "mcp", "openapi")
--limitnumber20Maximum number of results

Output

FieldTypeRequiredDescription
resultsarrayyes
results[].agentIdstringyes
results[].ownerstringyes
results[].namestringno
results[].descriptionstringno
results[].servicesarrayno
results[].uristringyes
totalnumberyes

Examples

sh
# Search for agents named "assistant"
erc8004 discovery search --name assistant

# Find agents with MCP service endpoints
erc8004 discovery search --service mcp

# Combined search
erc8004 discovery search --name coder --service openapi --limit 5

erc8004 identity

Manage ERC-8004 agent identities.

erc8004 identity burn

Permanently destroy an agent identity token.

Arguments

NameTypeRequiredDescription
agentIdstringyesAgent token ID to burn

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
IDENTITY_REGISTRY_ADDRESSstringnoIdentity registry contract address
PRIVATE_KEYstringnoPrivate key for signing

Options

FlagTypeDefaultDescription
--confirmbooleanfalseConfirm the irreversible burn operation (required)
--dry-runbooleanfalseSimulate the burn without executing

Output

FieldTypeRequiredDescription
agentIdstringyes
statusstringyes
messagestringyes

Examples

sh
# Burn agent #1 (not currently supported)
erc8004 identity burn 1 --confirm true

This is a destructive, irreversible operation. The agent identity will be permanently deleted.

erc8004 identity get

Get details for a specific agent.

Arguments

NameTypeRequiredDescription
agentIdstringyesAgent token ID

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
IDENTITY_REGISTRY_ADDRESSstringnoIdentity registry contract address

Output

FieldTypeRequiredDescription
agentIdstringyes
ownerstringyes
uristringyes
walletstringno

Examples

sh
# Get agent #1
erc8004 identity get 1

erc8004 identity list

List registered agents, optionally filtered by owner.

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
IDENTITY_REGISTRY_ADDRESSstringnoIdentity registry contract address

Options

FlagTypeDefaultDescription
--ownerstringFilter by owner address
--limitnumber50Maximum number of results

Output

FieldTypeRequiredDescription
agentsarrayyes
agents[].agentIdstringyes
agents[].ownerstringyes
agents[].uristringyes
totalnumberyes

Examples

sh
# List first 10 agents
erc8004 identity list --limit 10

# List agents owned by an address
erc8004 identity list --owner 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 --limit 20

erc8004 identity metadata

Read agent metadata key(s).

Arguments

NameTypeRequiredDescription
agentIdstringyesAgent token ID

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
IDENTITY_REGISTRY_ADDRESSstringnoIdentity registry contract address

Options

FlagTypeDefaultDescription
--keystringSpecific metadata key to fetch

Output

FieldTypeRequiredDescription
agentIdstringyes
keystringno
valuestringno

Examples

sh
# Get contact metadata for agent #1
erc8004 identity metadata 1 --key contact

erc8004 identity register

Register a new agent identity.

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
IDENTITY_REGISTRY_ADDRESSstringnoIdentity registry contract address
PRIVATE_KEYstringnoPrivate key for signing (hex with 0x prefix)

Options

FlagTypeDefaultDescription
--uristringRegistration file URI (IPFS, HTTPS, or data: URI)

Output

FieldTypeRequiredDescription
agentIdstringyes
uristringyes
txHashstringyes

Examples

sh
# Register with IPFS URI
erc8004 identity register --uri ipfs://QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG

Requires PRIVATE_KEY environment variable for signing.

erc8004 identity set-metadata

Set a metadata key-value pair on an agent.

Arguments

NameTypeRequiredDescription
agentIdstringyesAgent token ID

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
IDENTITY_REGISTRY_ADDRESSstringnoIdentity registry contract address
PRIVATE_KEYstringnoPrivate key for signing

Options

FlagTypeDefaultDescription
--keystringMetadata key to set
--valuestringMetadata value to set

Output

FieldTypeRequiredDescription
agentIdstringyes
keystringyes
valuestringyes
txHashstringyes

Examples

sh
# Set contact metadata for agent #1
erc8004 identity set-metadata 1 --key contact --value agent@example.com

Requires PRIVATE_KEY environment variable for signing. Caller must be the token owner.

erc8004 identity set-wallet

Set an agent's associated wallet address.

Arguments

NameTypeRequiredDescription
agentIdstringyesAgent token ID

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
IDENTITY_REGISTRY_ADDRESSstringnoIdentity registry contract address
PRIVATE_KEYstringnoPrivate key for signing

Options

FlagTypeDefaultDescription
--walletstringNew wallet address
--signaturestringSignature from the new wallet authorizing the association

Output

FieldTypeRequiredDescription
agentIdstringyes
walletstringyes
txHashstringyes

Examples

sh
# Associate a new wallet with agent #1
erc8004 identity set-wallet 1 --wallet 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 --signature 0x1234...abcd

Requires PRIVATE_KEY environment variable. The signature must be from the new wallet.

erc8004 identity transfer

Transfer an agent identity token to a new owner.

Arguments

NameTypeRequiredDescription
agentIdstringyesAgent token ID to transfer

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
IDENTITY_REGISTRY_ADDRESSstringnoIdentity registry contract address
PRIVATE_KEYstringnoPrivate key for signing

Options

FlagTypeDefaultDescription
--tostringRecipient address
--safebooleantrueUse safeTransferFrom (checks recipient can receive ERC-721). Disable with --no-safe.

Output

FieldTypeRequiredDescription
agentIdstringyes
fromstringyes
tostringyes
txHashstringyes

Examples

sh
# Transfer agent #1 to a new owner
erc8004 identity transfer 1 --to 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045

Requires PRIVATE_KEY environment variable. Caller must be the token owner or approved.

erc8004 identity update

Update an agent's registration URI.

Arguments

NameTypeRequiredDescription
agentIdstringyesAgent token ID

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
IDENTITY_REGISTRY_ADDRESSstringnoIdentity registry contract address
PRIVATE_KEYstringnoPrivate key for signing

Options

FlagTypeDefaultDescription
--uristringNew registration file URI

Output

FieldTypeRequiredDescription
agentIdstringyes
uristringyes
txHashstringyes

Examples

sh
# Update agent #1's registration URI
erc8004 identity update 1 --uri ipfs://bafybeihash/new-agent-registration.json

Requires PRIVATE_KEY environment variable for signing.

erc8004 identity wallet

Get an agent's associated wallet address.

Arguments

NameTypeRequiredDescription
agentIdstringyesAgent token ID

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
IDENTITY_REGISTRY_ADDRESSstringnoIdentity registry contract address

Output

FieldTypeRequiredDescription
agentIdstringyes
walletstringyes

Examples

sh
# Get wallet bound to agent #1
erc8004 identity wallet 1

erc8004 registration

Fetch, validate, and create ERC-8004 registration files.

erc8004 registration create

Generate a registration JSON file for an agent.

Options

FlagTypeDefaultDescription
--namestringAgent name
--descriptionstringAgent description
--agentVersionstringAgent version (semver)
--homepagestringAgent homepage URL
--capabilitiesarrayCapability tags

Output

FieldTypeRequiredDescription
namestringyesHuman-readable agent name
descriptionstringnoWhat the agent does
versionstringnoAgent version (semver)
imagestringnoAgent avatar/icon URL
homepagestringnoAgent homepage or documentation URL
servicesarraynoServices the agent exposes
services[].idstringnoUnique identifier for this service (legacy field)
services[].typestringnoService type (e.g. "mcp", "openapi", "webhook")
services[].urlstringnoService endpoint URL (legacy field)
services[].namestringnoService name from the ERC-8004 registration format
services[].endpointstringnoService endpoint from the ERC-8004 registration format
services[].descriptionstringnoHuman-readable description
services[].versionstringnoService version
services[].x402unknownnoOptional x402 payment metadata for this service
services[].authobjectnoAuthentication requirements
services[].auth.typestringyesAuthentication type
services[].auth.schemestringnoAuthentication scheme details
capabilitiesarraynoHigh-level capability tags (e.g. "code-review", "data-analysis")
ownerobjectnoAgent owner information
owner.namestringnoOwner name
owner.urlstringnoOwner URL
owner.contactstringnoContact email or URL
metadataobjectnoArbitrary key-value metadata
x402SupportbooleannoOptional x402 support flag
supportedTrustarraynoOptional trust mechanisms supported by the agent
erc8004objectnoERC-8004 specific fields
erc8004.versionstringyesERC-8004 spec version
erc8004.identityRegistrystringnoIdentity registry address
erc8004.agentIdstringnoAgent token ID

Examples

sh
# Create a basic registration file
erc8004 registration create --name My Agent --description A helpful AI agent --agentVersion 1.0.0 --capabilities code-review,data-analysis

erc8004 registration fetch

Fetch and parse the registration file for an agent.

Arguments

NameTypeRequiredDescription
agentIdstringyesAgent token ID

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
IDENTITY_REGISTRY_ADDRESSstringnoIdentity registry contract address
IPFS_GATEWAYstringnoIPFS gateway override (default: https://ipfs.io)

Output

FieldTypeRequiredDescription
agentIdstringyes
uristringyes
registrationobjectyes
registration.namestringyesHuman-readable agent name
registration.descriptionstringnoWhat the agent does
registration.versionstringnoAgent version (semver)
registration.imagestringnoAgent avatar/icon URL
registration.homepagestringnoAgent homepage or documentation URL
registration.servicesarraynoServices the agent exposes
registration.services[].idstringnoUnique identifier for this service (legacy field)
registration.services[].typestringnoService type (e.g. "mcp", "openapi", "webhook")
registration.services[].urlstringnoService endpoint URL (legacy field)
registration.services[].namestringnoService name from the ERC-8004 registration format
registration.services[].endpointstringnoService endpoint from the ERC-8004 registration format
registration.services[].descriptionstringnoHuman-readable description
registration.services[].versionstringnoService version
registration.services[].x402unknownnoOptional x402 payment metadata for this service
registration.services[].authobjectnoAuthentication requirements
registration.services[].auth.typestringyesAuthentication type
registration.services[].auth.schemestringnoAuthentication scheme details
registration.capabilitiesarraynoHigh-level capability tags (e.g. "code-review", "data-analysis")
registration.ownerobjectnoAgent owner information
registration.owner.namestringnoOwner name
registration.owner.urlstringnoOwner URL
registration.owner.contactstringnoContact email or URL
registration.metadataobjectnoArbitrary key-value metadata
registration.x402SupportbooleannoOptional x402 support flag
registration.supportedTrustarraynoOptional trust mechanisms supported by the agent
registration.erc8004objectnoERC-8004 specific fields
registration.erc8004.versionstringyesERC-8004 spec version
registration.erc8004.identityRegistrystringnoIdentity registry address
registration.erc8004.agentIdstringnoAgent token ID
validbooleanyes

Examples

sh
# Fetch registration for agent #1
erc8004 registration fetch 1

erc8004 registration validate

Validate a registration file at a given URI.

Arguments

NameTypeRequiredDescription
uristringyesURI to the registration file (HTTPS, IPFS, or data:)

Environment Variables

NameTypeRequiredDefaultDescription
IPFS_GATEWAYstringnoIPFS gateway override (default: https://ipfs.io)

Output

FieldTypeRequiredDescription
uristringyes
validbooleanyes
errorsarrayno
registrationobjectno
registration.namestringyesHuman-readable agent name
registration.descriptionstringnoWhat the agent does
registration.versionstringnoAgent version (semver)
registration.imagestringnoAgent avatar/icon URL
registration.homepagestringnoAgent homepage or documentation URL
registration.servicesarraynoServices the agent exposes
registration.services[].idstringnoUnique identifier for this service (legacy field)
registration.services[].typestringnoService type (e.g. "mcp", "openapi", "webhook")
registration.services[].urlstringnoService endpoint URL (legacy field)
registration.services[].namestringnoService name from the ERC-8004 registration format
registration.services[].endpointstringnoService endpoint from the ERC-8004 registration format
registration.services[].descriptionstringnoHuman-readable description
registration.services[].versionstringnoService version
registration.services[].x402unknownnoOptional x402 payment metadata for this service
registration.services[].authobjectnoAuthentication requirements
registration.services[].auth.typestringyesAuthentication type
registration.services[].auth.schemestringnoAuthentication scheme details
registration.capabilitiesarraynoHigh-level capability tags (e.g. "code-review", "data-analysis")
registration.ownerobjectnoAgent owner information
registration.owner.namestringnoOwner name
registration.owner.urlstringnoOwner URL
registration.owner.contactstringnoContact email or URL
registration.metadataobjectnoArbitrary key-value metadata
registration.x402SupportbooleannoOptional x402 support flag
registration.supportedTrustarraynoOptional trust mechanisms supported by the agent
registration.erc8004objectnoERC-8004 specific fields
registration.erc8004.versionstringyesERC-8004 spec version
registration.erc8004.identityRegistrystringnoIdentity registry address
registration.erc8004.agentIdstringnoAgent token ID

Examples

sh
# Validate an HTTPS registration file
erc8004 registration validate https://example.com/agent.json

# Validate an IPFS registration file
erc8004 registration validate ipfs://QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG

erc8004 reputation

Manage ERC-8004 agent reputation and feedback. Defaults to the Abstract mainnet reputation registry deployment.

erc8004 reputation feedback

Submit feedback for an agent.

Arguments

NameTypeRequiredDescription
agentIdstringyesAgent token ID

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
REPUTATION_REGISTRY_ADDRESSstringnoReputation registry contract address override (defaults on Abstract mainnet)
PRIVATE_KEYstringnoPrivate key for signing

Options

FlagTypeDefaultDescription
--valuenumberFeedback value (int128, positive or negative)
--tag1stringPrimary tag (e.g. "accuracy", "speed")
--tag2stringSecondary tag
--fileUristringURI to a supporting file or report
--registrystringReputation registry contract address override

Output

FieldTypeRequiredDescription
agentIdstringyes
valuenumberyes
txHashstringyes

Examples

sh
# Submit positive feedback
erc8004 reputation feedback 1 --value 10 --tag1 accuracy --tag2 helpful

# Submit negative feedback
erc8004 reputation feedback 1 --value -5 --tag1 accuracy

Requires PRIVATE_KEY environment variable. Value is int128 (positive = good, negative = bad). Defaults to the Abstract mainnet reputation registry; override via --registry or REPUTATION_REGISTRY_ADDRESS.

erc8004 reputation get

Get the reputation score for an agent.

Arguments

NameTypeRequiredDescription
agentIdstringyesAgent token ID

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
REPUTATION_REGISTRY_ADDRESSstringnoReputation registry contract address override (defaults on Abstract mainnet)

Options

FlagTypeDefaultDescription
--registrystringReputation registry contract address override

Output

FieldTypeRequiredDescription
agentIdstringyes
totalScorestringyes
countnumberyes
averageScorestringyes

Examples

sh
# Get reputation score for agent #1
erc8004 reputation get 1

Defaults to the Abstract mainnet reputation registry. Override via --registry or REPUTATION_REGISTRY_ADDRESS.

erc8004 reputation history

View feedback history for an agent.

Arguments

NameTypeRequiredDescription
agentIdstringyesAgent token ID

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
REPUTATION_REGISTRY_ADDRESSstringnoReputation registry contract address override (defaults on Abstract mainnet)

Options

FlagTypeDefaultDescription
--limitnumber50Maximum number of results
--registrystringReputation registry contract address override

Output

FieldTypeRequiredDescription
agentIdstringyes
historyarrayyes
history[].indexnumberyes
history[].fromstringyes
history[].valuenumberyes
history[].tag1stringyes
history[].tag2stringyes
history[].fileUristringyes
history[].timestampstringyes
totalnumberyes

Examples

sh
# Show feedback history for agent #1
erc8004 reputation history 1

# Show last 10 feedbacks
erc8004 reputation history 1 --limit 10

Defaults to the Abstract mainnet reputation registry. Override via --registry or REPUTATION_REGISTRY_ADDRESS.

erc8004 validation

Manage ERC-8004 agent validation requests. Defaults to the Abstract mainnet validation registry deployment.

erc8004 validation cancel

Cancel a pending validation request.

Arguments

NameTypeRequiredDescription
requestIdstringyesValidation request ID to cancel

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
VALIDATION_REGISTRY_ADDRESSstringnoValidation registry contract address override (defaults on Abstract mainnet)
PRIVATE_KEYstringnoPrivate key for signing

Options

FlagTypeDefaultDescription
--registrystringValidation registry contract address override
--dry-runbooleanfalseSimulate the transaction without broadcasting

Output

Type: unknown

Examples

sh
# Cancel validation request #1
erc8004 validation cancel 1

# Simulate cancelling request #1
erc8004 validation cancel 1 --dry-run true

Requires PRIVATE_KEY environment variable. The request must be in Pending status. Defaults to the Abstract mainnet validation registry; override via --registry or VALIDATION_REGISTRY_ADDRESS.

erc8004 validation history

View validation request history for an agent.

Arguments

NameTypeRequiredDescription
agentIdstringyesAgent token ID

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
VALIDATION_REGISTRY_ADDRESSstringnoValidation registry contract address override (defaults on Abstract mainnet)

Options

FlagTypeDefaultDescription
--registrystringValidation registry contract address override

Output

FieldTypeRequiredDescription
agentIdstringyes
requestsarrayyes
requests[].requestIdstringyes
requests[].validatorstringyes
requests[].statusstringyes
requests[].timestampstringyes
totalnumberyes

Examples

sh
# View validation history for agent #1
erc8004 validation history 1

Defaults to the Abstract mainnet validation registry. Override via --registry or VALIDATION_REGISTRY_ADDRESS.

erc8004 validation request

Submit a validation request for an agent.

Arguments

NameTypeRequiredDescription
agentIdstringyesAgent token ID to validate

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
VALIDATION_REGISTRY_ADDRESSstringnoValidation registry contract address override (defaults on Abstract mainnet)
PRIVATE_KEYstringnoPrivate key for signing

Options

FlagTypeDefaultDescription
--validatorstringValidator address
--jobHashstringJob hash (bytes32 hex, 0x-prefixed)
--registrystringValidation registry contract address override

Output

FieldTypeRequiredDescription
requestIdstringyes
agentIdstringyes
validatorstringyes
txHashstringyes

Examples

sh
# Request validation for agent #1
erc8004 validation request 1 --validator 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 --jobHash 0x0000000000000000000000000000000000000000000000000000000000000000

Requires PRIVATE_KEY environment variable. jobHash must be a 0x-prefixed 32-byte hex string. Defaults to the Abstract mainnet validation registry; override via --registry or VALIDATION_REGISTRY_ADDRESS.

erc8004 validation status

Get the status of a validation request.

Arguments

NameTypeRequiredDescription
requestIdstringyesValidation request ID

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
VALIDATION_REGISTRY_ADDRESSstringnoValidation registry contract address override (defaults on Abstract mainnet)

Options

FlagTypeDefaultDescription
--registrystringValidation registry contract address override

Output

FieldTypeRequiredDescription
requestIdstringyes
agentIdstringyes
validatorstringyes
jobHashstringyes
statusstringyes
resultstringyes
timestampstringyes

Examples

sh
# Get status of request #1
erc8004 validation status 1

Defaults to the Abstract mainnet validation registry. Override via --registry or VALIDATION_REGISTRY_ADDRESS.

erc8004 validation submit-result

Submit the result of a validation request (validator-only).

Arguments

NameTypeRequiredDescription
requestIdstringyesValidation request ID

Environment Variables

NameTypeRequiredDefaultDescription
ABSTRACT_RPC_URLstringnoAbstract RPC URL
VALIDATION_REGISTRY_ADDRESSstringnoValidation registry contract address override (defaults on Abstract mainnet)
PRIVATE_KEYstringnoPrivate key for signing

Options

FlagTypeDefaultDescription
--statusstringValidation outcome: pass or fail
--resultstringValidation result description
--registrystringValidation registry contract address override
--dry-runbooleanfalseSimulate the transaction without broadcasting

Output

Type: unknown

Examples

sh
# Submit a passing result for request #1
erc8004 validation submit-result 1 --status pass --result All checks passed

# Simulate submitting a failure result
erc8004 validation submit-result 1 --status fail --result Endpoint unreachable --dry-run true

Requires PRIVATE_KEY environment variable. The caller must be the designated validator for this request. Defaults to the Abstract mainnet validation registry; override via --registry or VALIDATION_REGISTRY_ADDRESS.