Skip to main content

Agent URI Reference Implementation

Test Coverage Python Version License CI Status Security Code Style

This repository contains a reference implementation of the agent:// protocol as defined in the protocol specification.

Overview

The agent:// protocol is a URI-based framework for addressing, invoking, and interoperating with autonomous and semi-autonomous software agents. It introduces a layered architecture that supports minimal implementations (addressing and transport) and extensible features (capability discovery, contracts, orchestration).

This reference implementation provides a complete implementation of the protocol, including:

  • URI parsing and validation
  • Agent descriptor handling
  • Resolution framework
  • Transport bindings (HTTPS, WebSocket, Local)
  • Security implementations
  • Client and server SDKs
  • Integration with other protocols (Agent2Agent, MCP)
  • Example implementations and tools

Architecture

The implementation follows a modular, layered architecture:

agent-uri/
├── README.md                    # Project overview, setup instructions
├── pyproject.toml               # Modern Poetry-based build configuration
├── Makefile                     # Development commands and workflows
├── agent_uri/                   # Unified Python package
│   ├── __init__.py              # Package initialization and public API
│   ├── parser.py                # URI parsing and validation
│   ├── descriptor/              # Agent descriptor handling
│   │   ├── models.py            # Data models for agent descriptors
│   │   ├── parser.py            # Descriptor parsing and validation
│   │   ├── validator.py         # Schema validation
│   │   └── compatibility.py     # Agent Card compatibility layer
│   ├── resolver/                # Resolution framework
│   │   ├── resolver.py          # Agent resolution logic
│   │   └── cache.py             # Caching mechanisms
│   ├── transport/               # Transport bindings
│   │   ├── base.py              # Abstract transport interface
│   │   ├── registry.py          # Transport registry
│   │   └── transports/          # Transport implementations
│   │       ├── https.py         # HTTPS transport
│   │       ├── websocket.py     # WebSocket transport
│   │       └── local.py         # Local/direct transport
│   ├── client.py                # Client SDK for agent communication
│   ├── server.py                # Server SDK for agent hosting
│   ├── capability.py            # Capability framework and decorators
│   ├── auth.py                  # Authentication and authorization
│   ├── cli.py                   # Command-line interface
│   └── common/                  # Shared utilities and types
│       └── error/               # Error handling framework
├── docs/                        # Documentation
│   ├── rfc/                     # RFC documents and specifications
│   ├── spec/                    # Technical specifications
│   └── examples.md              # Usage examples and tutorials
├── examples/                    # Example implementations
│   └── echo-agent/              # Echo agent demonstration
└── scripts/                     # Development and build scripts

Installation

Install from PyPI:

pip install agent-uri

Or install from source:

git clone https://github.com/agent-uri/agent-uri.git
cd agent-uri
make install-dev

Quick Start

Parsing Agent URIs

from agent_uri import parse_agent_uri

# Parse a basic agent URI
uri = parse_agent_uri("agent://example.com/my-agent")
print(f"Host: {uri.host}, Path: {uri.path}")

# Parse with protocol and capability
uri = parse_agent_uri("agent+https://api.example.com/agents/assistant/chat")
print(f"Protocol: {uri.protocol}, Capability: {uri.capability}")

Creating an Agent Server

from agent_uri import FastAPIAgentServer, capability

@capability(
    name="echo",
    description="Echo back the input message",
    version="1.0.0"
)
async def echo_handler(message: str) -> dict:
    return {"response": f"Echo: {message}"}

# Create and configure server
server = FastAPIAgentServer(
    name="my-agent",
    version="1.0.0",
    description="A simple echo agent"
)
server.register_capability("echo", echo_handler)

# Run the server
if __name__ == "__main__":
    server.run(host="0.0.0.0", port=8000)

Using the Agent Client

from agent_uri import AgentClient

# Connect to an agent
client = AgentClient("agent+https://api.example.com/my-agent")

# Invoke a capability
result = await client.invoke("echo", {"message": "Hello, World!"})
print(result["response"])  # "Echo: Hello, World!"

Development

This project uses Poetry and uv for dependency management:

# Install development dependencies
make install-dev

# Run tests
make test-all

# Run linting and formatting
make lint
make format

# Run type checking
make type-check

# Run security checks
make security

See the Makefile for all available commands.

Documentation

License

BSD 3-Clause License

Release files for agent-uri 0.3.0

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

Source distribution (sdist)

Source distribution for agent-uri 0.3.0
File Size Uploaded
agent_uri-0.3.0.tar.gz 128.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for agent-uri 0.3.0
File Interpreter ABI Platform
agent_uri-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 289.5 kB

Release files / agent_uri-0.3.0.tar.gz

Download URL agent_uri-0.3.0.tar.gz
Size 128.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a8ef879bd8f35117a771f2f1e2c4c814a28653118b04fca04ba3b3db1eefa7aa
BLAKE2b-256 checksum
How to use checksums
3489072ce78652878e52363050556abefad0d2f0825e1c978f64b30f3f14bb5a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / agent_uri-0.3.0-py3-none-any.whl

Download URL agent_uri-0.3.0-py3-none-any.whl
Size 160.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
51b1744be323001b7c9a8b62ee634f0ab3baede1e0c2d8568fcd74730b3d006f
BLAKE2b-256 checksum
How to use checksums
1744bf59df8f9189157255100b3ac50f9e80168f494ae2fa72b350066411bd26
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.1

2 release files

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