Skip to main content

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

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.2.1.tar.gz (80.0 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.2.1-py3-none-any.whl (101.2 kB view details)

Uploaded Python 3

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

Hashes for agent_uri-0.2.1.tar.gz
Algorithm Hash digest
SHA256 a3ad384352b3bce875c41d1b4f32ca876d42614a6394cefcee931ffc2d7f2f3b
MD5 9c439ddee03987af2189d11de1caf38f
BLAKE2b-256 59e044e0960b734827589ff3bcf1d5b6f7ab93ad495c0e26e1f5e836e88c8b74

See more details on using hashes here.

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

Hashes for agent_uri-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f4d3d043967ff5cb2ea44b72c7d3a9c4b0b283f42e19be9ddf0d605a9db28d34
MD5 17f46551ee7da814e0d2e286f07b21a5
BLAKE2b-256 76f327525de1e417fd5a61e78296230cafd1ee77987cf8e272d5d91a281419ee

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