Skip to main content

Python SDK for agent portability, discovery and trust based on ERC-8004

Project description

Agent0 SDK

Python SDK for agent portability, discovery and trust based on ERC-8004.

Agent0 is the SDK for agentic economies. It enables agents to register, advertise their capabilities and how to communicate with them, and give each other feedback and reputation signals. All this using blockchain infrastructure (ERC-8004) and decentralized storage, enabling permissionless discovery without relying on proprietary catalogues or intermediaries.

What Does Agent0 SDK Do?

Agent0 SDK v0.2 enables you to:

  • Create and manage agent identities - Register your AI agent on-chain with a unique identity, configure presentation fields (name, description, image), set wallet addresses, and manage trust models with x402 support
  • Advertise agent capabilities - Publish MCP and A2A endpoints, with automated extraction of MCP tools and A2A skills from endpoints
  • Enable permissionless discovery - Make your agent discoverable by other agents and platforms using rich search by attributes, capabilities, skills, tools, tasks, and x402 support
  • Build reputation - Give and receive feedback, retrieve feedback history, and search agents by reputation with cryptographic authentication
  • Cross-chain registration - One-line registration with IPFS nodes, Pinata, Filecoin, or HTTP URIs
  • Public indexing - Subgraph indexing both on-chain and IPFS data for fast search and retrieval

⚠️ Alpha Release

Agent0 SDK v0.2 is in alpha with bugs and is not production ready. We're actively testing and improving it.

Bug reports & feedback: GitHub: Report issues | Telegram: @marcoderossi | Email: marco.derossi@consensys.net

Installation

Prerequisites

  • Python 3.8 or higher
  • pip package manager
  • Private key for signing transactions (or run in read-only mode)
  • Access to an Ethereum RPC endpoint (e.g., Alchemy, Infura)
  • (Optional) IPFS provider account (Pinata, Filecoin, or local IPFS node)

Install from PyPI

pip install agent0-sdk

Install from Source

git clone https://github.com/agent0lab/agent0-py.git
cd agent0-py
pip install -e .

Quick Start

1. Initialize SDK

from agent0_sdk import SDK
import os

# Initialize SDK with IPFS and subgraph
sdk = SDK(
    chainId=11155111,  # Ethereum Sepolia testnet
    rpcUrl=os.getenv("RPC_URL"),
    signer=os.getenv("PRIVATE_KEY"),
    ipfs="pinata",  # Options: "pinata", "filecoinPin", "node"
    pinataJwt=os.getenv("PINATA_JWT")  # For Pinata
    # Subgraph URL auto-defaults from DEFAULT_SUBGRAPH_URLS
)

2. Create and Register Agent

# Create agent
agent = sdk.createAgent(
    name="My AI Agent",
    description="An intelligent assistant for various tasks. Skills: data analysis, code generation.",
    image="https://example.com/agent-image.png"
)

# Configure endpoints (automatically extracts capabilities)
agent.setMCP("https://mcp.example.com/")  # Extracts tools, prompts, resources
agent.setA2A("https://a2a.example.com/agent-card.json")  # Extracts skills
agent.setENS("myagent.eth")

# Configure wallet and trust
agent.setAgentWallet("0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb", chainId=11155111)
agent.setTrust(reputation=True, cryptoEconomic=True)

# Add metadata and set status
agent.setMetadata({"version": "1.0.0", "category": "ai-assistant"})
agent.setActive(True)

# Register on-chain with IPFS
agent.registerIPFS()
print(f"Agent registered: {agent.agentId}")  # e.g., "11155111:123"
print(f"Agent URI: {agent.agentURI}")  # e.g., "ipfs://Qm..."

3. Load and Edit Agent

# Load existing agent for editing
agent = sdk.loadAgent("11155111:123")  # Format: "chainId:agentId"

# Edit agent properties
agent.updateInfo(description="Updated description with new capabilities")
agent.setMCP("https://new-mcp.example.com/")

# Re-register to update on-chain
agent.registerIPFS()
print(f"Updated: {agent.agentURI}")

4. Search Agents

# Search by name, capabilities, or attributes
results = sdk.searchAgents(
    name="AI",  # Substring search
    mcpTools=["code_generation"],  # Specific MCP tools
    a2aSkills=["python"],  # Specific A2A skills
    active=True,  # Only active agents
    x402support=True  # Payment support
)

for agent in results['items']:
    print(f"{agent.name}: {agent.description}")
    print(f"  Tools: {agent.mcpTools}")
    print(f"  Skills: {agent.a2aSkills}")

# Get single agent (read-only, faster)
agent_summary = sdk.getAgent("11155111:123")

5. Give and Retrieve Feedback

# Prepare feedback (only score is mandatory)
feedback_file = sdk.prepareFeedback(
    agentId="11155111:123",
    score=85,  # 0-100 (mandatory)
    tags=["data_analyst", "finance"],  # Optional
    capability="tools",  # Optional: MCP capability
    name="code_generation",  # Optional: MCP tool name
    skill="python"  # Optional: A2A skill
)

# Give feedback
feedback = sdk.giveFeedback(agentId="11155111:123", feedbackFile=feedback_file)

# Search feedback
results = sdk.searchFeedback(
    agentId="11155111:123",
    capabilities=["tools"],
    minScore=80,
    maxScore=100
)

# Get reputation summary
summary = sdk.getReputationSummary("11155111:123")
print(f"Average score: {summary['averageScore']}")

IPFS Configuration Options

# Option 1: Filecoin Pin (free for ERC-8004 agents)
sdk = SDK(
    chainId=11155111,
    rpcUrl="...",
    signer=private_key,
    ipfs="filecoinPin",
    filecoinPrivateKey="your-filecoin-private-key"
)

# Option 2: IPFS Node
sdk = SDK(
    chainId=11155111,
    rpcUrl="...",
    signer=private_key,
    ipfs="node",
    ipfsNodeUrl="https://ipfs.infura.io:5001"
)

# Option 3: Pinata (free for ERC-8004 agents)
sdk = SDK(
    chainId=11155111,
    rpcUrl="...",
    signer=private_key,
    ipfs="pinata",
    pinataJwt="your-pinata-jwt-token"
)

# Option 4: HTTP registration (no IPFS)
sdk = SDK(chainId=11155111, rpcUrl="...", signer=private_key)
agent.register("https://example.com/agent-registration.json")

Use Cases

  • Building agent marketplaces - Create platforms where developers can discover, evaluate, and integrate agents based on their capabilities and reputation
  • Agent interoperability - Discover agents by specific capabilities (skills, tools, tasks), evaluate them through reputation signals, and integrate them via standard protocols (MCP/A2A)
  • Managing agent reputation - Track agent performance, collect feedback from users and other agents, and build trust signals for your agent ecosystem
  • Cross-chain agent operations - Deploy and manage agents across multiple blockchain networks with consistent identity and reputation

🚀 Coming Soon

  • More chains (currently Ethereum Sepolia only)
  • Support for validations
  • Multi-chain agents search
  • Enhanced x402 payments
  • Semantic/Vectorial search
  • Advanced reputation aggregation
  • Import/Export to centralized catalogues

Tests

Complete working examples are available in the tests/ directory:

  • test_registration.py - Agent registration with HTTP URI
  • test_registrationIpfs.py - Agent registration with IPFS
  • test_feedback.py - Complete feedback flow with IPFS storage
  • test_search.py - Agent search and discovery
  • test_transfer.py - Agent ownership transfer

Documentation

Full documentation is available at sdk.ag0.xyz, including:

License

MIT License - see LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agent0_sdk-0.2.0.tar.gz (69.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agent0_sdk-0.2.0-py3-none-any.whl (77.0 kB view details)

Uploaded Python 3

File details

Details for the file agent0_sdk-0.2.0.tar.gz.

File metadata

  • Download URL: agent0_sdk-0.2.0.tar.gz
  • Upload date:
  • Size: 69.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for agent0_sdk-0.2.0.tar.gz
Algorithm Hash digest
SHA256 bd874d9691f5c1bef8e1f7187c66f03cc7c5f1622f45221b5e86949ff514de10
MD5 825a1e40bb2a50827f825793e4d187a9
BLAKE2b-256 d8da035620cbe1a3dd8fb59759e8009e7de30e7e68d1fe96ab27e872c31c5a14

See more details on using hashes here.

File details

Details for the file agent0_sdk-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: agent0_sdk-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 77.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for agent0_sdk-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 062bcf5a178ad738a837d19b78df47719646906b593eabffa85159d2a88053ae
MD5 249d1615dc0706d2e84b104ab4eeaa3c
BLAKE2b-256 55f148624efd8c5457e28a2bf5f3453b1299f7cd4448bc8b44af763d175c28ec

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page