Skip to main content

ERC-800Claw

ERC-8004 SDK for OpenClaw agents. Register, query, and rate agent identities on Ethereum.

From Primer Systems · @primer_systems

pip install erc-800claw

Quick Start

CLI

# Get agent details
erc-800claw agent 1

# Check if agent exists
erc-800claw exists 1

# Get agent count for an address
erc-800claw owner 0x9ce7082814bDA389F3ba548BDf2626006279569c

# Register a new agent (requires private key)
PRIVATE_KEY=0x... erc-800claw register --name "My Agent" --network sepolia

# List networks and contracts
erc-800claw networks

# Show contract addresses
erc-800claw contracts mainnet

# Use testnet
erc-800claw agent 1 --network sepolia

# JSON output
erc-800claw agent 1 --json

Python

from erc800claw import create_client

client = create_client(network='mainnet')

# Get agent by ID
agent = client.get_agent(1)
print(agent)
# {
#     'agent_id': 1,
#     'token_uri': 'ipfs://...',
#     'owner': '0x...',
#     'metadata': {'name': 'My Agent', ...},
#     'explorer_url': 'https://etherscan.io/...'
# }

# Check if agent exists
exists = client.agent_exists(1)

# Get agent count for an address
count = client.get_agent_count('0x...')
print(f"Address owns {count} agents")

# Register a new agent (no IPFS needed - uses data URI!)
import os
result = client.register_agent(
    private_key=os.environ['PRIVATE_KEY'],
    name='My Autonomous Agent',
    description='Handles customer support',
    services=[{'name': 'support', 'endpoint': 'https://myagent.com/api'}]
)
print(f"Registered agent #{result['agent_id']}")

# Give feedback to an agent
client.give_feedback(
    private_key=os.environ['PRIVATE_KEY'],
    agent_id=agent_id,
    value=4.5,        # Score out of 5
    decimals=1,
    tag1='support',
    tag2='fast'
)

API

create_client(network='mainnet', rpc_url=None)

Create a client instance.

client = create_client(
    network='mainnet',  # or 'sepolia'
    rpc_url='https://...'  # optional custom RPC
)

Read Methods

client.get_agent(agent_id)

Get agent details by ID. Returns None if agent doesn't exist.

{
    'agent_id': 1,
    'token_uri': 'ipfs://...' or None,
    'owner': '0x...',
    'metadata': {...} or None,  # Fetched from token_uri if available
    'explorer_url': 'https://...'
}

client.agent_exists(agent_id)

Check if an agent exists. Returns True or False.

client.get_agent_count(owner_address)

Get number of agents owned by an address.

client.get_reputation(agent_id, client_addresses=None, tag1='', tag2='')

Get reputation summary for an agent.

rep = client.get_reputation(
    1,
    client_addresses=['0x...'],  # Required: specific reviewers to query
    tag1='support',              # Optional: filter by tag
    tag2=''
)

client.get_network_info()

Get current network configuration.

Write Methods

All write methods require a private key for signing transactions.

client.register(private_key, agent_uri_or_metadata=None)

Register a new agent. Pass a URI string or metadata dict (auto-converted to data URI).

# With metadata dict (recommended - no IPFS needed)
result = client.register(private_key, {
    'name': 'My Agent',
    'description': 'Does cool stuff'
})

# With custom URI
result = client.register(private_key, 'ipfs://...')

# Without URI (can set later)
result = client.register(private_key)

client.register_agent(private_key, name, description='', image='', services=None, supported_trust=None)

Convenience method with structured arguments.

result = client.register_agent(
    private_key,
    name='My Agent',           # Required
    description='Agent desc',  # Optional
    image='https://...',       # Optional
    services=[{                # Optional
        'name': 'api',
        'endpoint': 'https://...'
    }],
    supported_trust=['reputation']  # Optional, default: ['reputation']
)
# Returns: {'agent_id': ..., 'tx_hash': ..., 'owner': ..., 'explorer_url': ...}

client.set_agent_uri(private_key, agent_id, new_uri_or_metadata)

Update an agent's metadata URI.

client.set_agent_uri(private_key, agent_id, {
    'name': 'Updated Name',
    'description': 'New description'
})

client.give_feedback(private_key, agent_id, value, decimals=2, tag1='', tag2='', endpoint='', feedback_uri='', feedback_hash=None)

Submit reputation feedback for an agent.

client.give_feedback(
    private_key,
    agent_id,
    value=4.5,              # Score value
    decimals=1,             # Decimal places (default: 2)
    tag1='quality',         # Primary category
    tag2='fast',            # Secondary tag
    endpoint='/api/chat',   # Which endpoint was used
    feedback_uri='',        # Optional: link to detailed feedback
    feedback_hash='0x...'   # Optional: hash of feedback data
)

Helper Functions

create_data_uri(metadata)

Create a data URI from a metadata dict (no IPFS upload needed).

from erc800claw import create_data_uri
uri = create_data_uri({'name': 'My Agent', 'description': '...'})
# Returns: data:application/json;base64,...

parse_data_uri(data_uri)

Parse a data URI back to a metadata dict.

create_registration_metadata(name, description='', image='', services=None, supported_trust=None)

Create standard ERC-8004 registration metadata.

Networks

Network Chain ID Status
Ethereum Mainnet 1 Live
Sepolia Testnet 11155111 Live

Contract Addresses

Mainnet

  • Identity Registry: 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432
  • Reputation Registry: 0x8004BAa17C55a88189AE136b182e5fdA19dE9b63

Sepolia

  • Identity Registry: 0x8004A818BFB912233c491871b3d84c89A494BD9e
  • Reputation Registry: 0x8004B663056A597Dffe9eCcC1965A193B7388713

What is ERC-8004?

ERC-8004 provides on-chain identity, reputation, and validation for autonomous agents:

  • Identity Registry - ERC-721 agent identities with registration metadata
  • Reputation Registry - Signed feedback scores between agents/clients
  • Validation Registry - Independent verification (zkML, TEE, stakers)

Learn more: 8004.org | EIP-8004

License

MIT - Primer Systems

Metadata

Release files for erc-800claw 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for erc-800claw 0.1.1
File Size Uploaded
erc_800claw-0.1.1.tar.gz 13.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for erc-800claw 0.1.1
File Interpreter ABI Platform
erc_800claw-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 26.1 kB

Release files / erc_800claw-0.1.1.tar.gz

Download URL erc_800claw-0.1.1.tar.gz
Size 13.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d445699cd2ec68483051c990dc590fbd6a5b822e1e9efecbc319b6344ce1bca1
BLAKE2b-256 checksum
How to use checksums
86b39fd494d423599f307ad9f223eba1549ce999f570ff613a9fcd46f3086666
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / erc_800claw-0.1.1-py3-none-any.whl

Download URL erc_800claw-0.1.1-py3-none-any.whl
Size 12.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6d1575151aef31c695ca97db28f66a9a213375aa7d5dd5cb5b9145fa3d9d2fc5
BLAKE2b-256 checksum
How to use checksums
2ad1bf70e5b61e58a4394717f0de2aac3f2bc973c12060f8d5db08eb3ba3319b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page