Skip to main content

Agent URI Protocol Implementation - A complete suite for addressing and interacting with AI agents

Project description

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

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

agent_uri-0.3.0.tar.gz (128.7 kB view details)

Uploaded Source

Built Distribution

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

agent_uri-0.3.0-py3-none-any.whl (160.8 kB view details)

Uploaded Python 3

File details

Details for the file agent_uri-0.3.0.tar.gz.

File metadata

  • Download URL: agent_uri-0.3.0.tar.gz
  • Upload date:
  • Size: 128.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for agent_uri-0.3.0.tar.gz
Algorithm Hash digest
SHA256 a8ef879bd8f35117a771f2f1e2c4c814a28653118b04fca04ba3b3db1eefa7aa
MD5 7c883c604ba9f45d841aeba8d2c79c2a
BLAKE2b-256 3489072ce78652878e52363050556abefad0d2f0825e1c978f64b30f3f14bb5a

See more details on using hashes here.

File details

Details for the file agent_uri-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: agent_uri-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 160.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for agent_uri-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 51b1744be323001b7c9a8b62ee634f0ab3baede1e0c2d8568fcd74730b3d006f
MD5 cd7e4bb11525dc40b9da063c34ddb840
BLAKE2b-256 1744bf59df8f9189157255100b3ac50f9e80168f494ae2fa72b350066411bd26

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