Agent URI Protocol Implementation - A complete suite for addressing and interacting with AI agents
Project description
Agent URI Reference Implementation
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agent_uri-0.2.1.tar.gz.
File metadata
- Download URL: agent_uri-0.2.1.tar.gz
- Upload date:
- Size: 80.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3ad384352b3bce875c41d1b4f32ca876d42614a6394cefcee931ffc2d7f2f3b
|
|
| MD5 |
9c439ddee03987af2189d11de1caf38f
|
|
| BLAKE2b-256 |
59e044e0960b734827589ff3bcf1d5b6f7ab93ad495c0e26e1f5e836e88c8b74
|
File details
Details for the file agent_uri-0.2.1-py3-none-any.whl.
File metadata
- Download URL: agent_uri-0.2.1-py3-none-any.whl
- Upload date:
- Size: 101.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4d3d043967ff5cb2ea44b72c7d3a9c4b0b283f42e19be9ddf0d605a9db28d34
|
|
| MD5 |
17f46551ee7da814e0d2e286f07b21a5
|
|
| BLAKE2b-256 |
76f327525de1e417fd5a61e78296230cafd1ee77987cf8e272d5d91a281419ee
|