CIS-8004: Agent Registry#

CIS-8004 is the Concordium Agent Registry standard. It mints each registered AI agent as a non-fungible CIS-2 token, giving it a stable on-chain identity that is discoverable, transferable, and interoperable with the broader multi-chain agent ecosystem.

The standard is designed to be compatible with ERC-8004 (the Ethereum trustless agent standard), so agents registered on Concordium are addressable from Ethereum tooling and vice versa. Concordium extends the baseline specification with support for the CIS-8 External Key Registry cross-chain key bindings and Concordium’s own verified-identity layer.

Mainnet contract: index 10082, subindex 0. The contract advertises support for CIS-0, CIS-2, and CIS-8004.

Agent token#

Each registered agent is represented as a CIS-2 non-fungible token with a unique token_id (a u64 integer). All standard CIS-2 operations apply: agents can be transferred, burned, and queried using any CIS-2-compatible tool.

The canonical address of an agent token is expressed as a Base58Check-encoded CIS-2 token address derived from the tuple (contract_index=10082, subindex=0, token_id). This address uniquely identifies the agent across tooling that understands Concordium CIS-2 addressing.

On-chain agent state#

Field

Type

Description

token_id

u64

Sequentially assigned on registration. Immutable.

owner

AccountAddress

The Concordium account that currently owns the agent NFT. Changes on transfer.

agent_uri

string (optional)

Public URL where the Agent Card JSON is hosted.

metadata_hash

bytes32 (optional)

SHA-256 hash of the Agent Card bytes at agent_uri. On-chain integrity anchor.

external_reference

ExternalReference (optional)

A Cis8 or Cis10 reference linking the agent to an external key or platform handle. See below.

metadata

map<string, bytes>

Arbitrary on-chain key-value store. The reserved key agentWallet holds the payment wallet address.

status

Active | Revoked

Registration status. Revoked agents remain queryable but are treated as inactive.

External references#

An agent can carry one optional external_reference that links it to a cross-chain or cross-platform identity:

  • Cis8 reference — Points to a binding in the CIS-8 External Key Registry. Use this to attach an Ethereum, Solana, Cosmos, or Fetch.ai public key to the agent. The CIS-8 binding must exist before it can be set as a reference.

  • Cis10 reference — Points to a binding in the CIS-10 External Identifier Registry. Use this to attach a platform handle (Moltbook, X, GitHub, etc.) to the agent. Note that the CIS-10 contract integration is not yet active on the mainnet deployment.

Native vs. external agent ownership#

Concordium uses Base58-encoded native accounts as the primary owner type for CIS-8004 agents. This is the default for any wallet or application operating natively on Concordium.

For users and systems that operate primarily on Ethereum or another external chain, the recommended path is:

  1. Create a Concordium account to act as the on-chain owner. This is the account that signs the register transaction.

  2. Register the external key with CIS-8 by calling build_cis8_canonical_bytes to derive the canonical bytes, signing them with the Ethereum private key, then submitting build_cis8_register from the Concordium account.

  3. Register the agent in CIS-8004 with a Cis8 external reference pointing at the CIS-8 binding. This permanently links the agent’s NFT to the Ethereum address.

Once the link exists, any tooling that knows the Ethereum address can resolve the Concordium account via the CIS-8 contract, then find the agent via the CIS-8004 external reference. The Agent Card’s concordium extension block surfaces the token_address and contract references so that external registries can do this lookup without chain-specific knowledge.

Contract entrypoints#

Entrypoint

Description

register

Mints a new agent NFT to the caller. Optional: agent_uri, metadata_hash_hex, external_reference, and initial metadata key-value pairs.

revoke

Marks the agent as Revoked. Only the current owner or an approved operator can revoke.

setAgentURI

Updates agent_uri and/or metadata_hash for an existing agent. Caller must be the owner or an approved operator.

setMetadata

Sets one or more key-value pairs in the agent’s on-chain metadata store.

setAgentWallet

Convenience entrypoint for the reserved agentWallet metadata key. Setting a new wallet address requires proof of control (EIP-712 for ETH wallets, or account ownership for native Concordium wallets).

transfer

Transfers ownership of the agent NFT to a new address. Transferring automatically clears the agentWallet metadata key.

updateOperator

Grants or revokes an operator’s permission to manage the agent on the owner’s behalf.

upgrade

Admin-only: upgrades the contract module. Does not affect stored agent data.

setExternalRegistries

Admin-only: updates the linked CIS-8 and CIS-10 contract addresses.

Token address encoding#

The MCP tool token_address computes the Base58Check token address for a given (contract_index, subindex, token_id) triple. The complementary tool parse_token_address decodes a token address back into its component fields. These operations are purely off-chain and require no network round-trip.

Was this article helpful?