Implementing Agent Protocol

Build a Compliant Agent in Minutes

For Agent Developers

Option 1: Use the Official SDK (Recommended)

The Agent Protocol SDK handles all API infrastructure, letting you focus solely on your agent’s logic.

Python Implementation:

python

from agent_protocol import Agent, Task, Step # Define your agent logic async def task_handler(task: Task) -> None: # Your agent's task execution logic print(f"Executing task: {task.input}") async def step_handler(step: Step) -> Step: # Your agent's step execution logic step.output = "Step completed successfully" return step # Create agent with the protocol agent = Agent(task_handler=task_handler, step_handler=step_handler) # Start the server if __name__ == "__main__": agent.start(port=8000)

Installation:

bash

pip install agent-protocol

JavaScript/TypeScript Implementation:

typescript

import { Agent } from 'agent-protocol'; const agent = new Agent({ taskHandler: async (task) => { // Your task logic }, stepHandler: async (step) => { // Your step logic return step; } }); agent.start(8000);

Installation:

bash

npm install agent-protocol

Option 2: Implement the API Manually

If you prefer full control, you can implement the REST API directly using any web framework.

Example with FastAPI (Python):

python

from fastapi import FastAPI, HTTPException from pydantic import BaseModel from typing import List, Optional import uuid app = FastAPI() # Data models class TaskInput(BaseModel): input: str additional_input: Optional[dict] = None class Task(BaseModel): task_id: str input: str artifacts: List[str] = [] class Step(BaseModel): step_id: str task_id: str name: str status: str output: str is_last: bool = False # In-memory storage (use database in production) tasks = {} steps = {} @app.post("/ap/v1/agent/tasks", response_model=Task) async def create_task(task_input: TaskInput): task_id = str(uuid.uuid4()) task = Task( task_id=task_id, input=task_input.input, artifacts=[] ) tasks[task_id] = task return task @app.post("/ap/v1/agent/tasks/{task_id}/steps", response_model=Step) async def execute_step(task_id: str): if task_id not in tasks: raise HTTPException(status_code=404, detail="Task not found") # Your agent logic here step_id = str(uuid.uuid4()) step = Step( step_id=step_id, task_id=task_id, name="Agent Step", status="completed", output="Step result", is_last=False ) steps[step_id] = step return step # Add other endpoints...

View Complete Implementation Examples

For Agent Users (Integration)

Using the Client Library:

python

from agent_protocol_client import AgentApi, ApiClient, Configuration # Configure client config = Configuration(host="http://localhost:8000") client = ApiClient(configuration=config) agent = AgentApi(client) # Create a task task_input = {"input": "Write a Python script to analyze CSV data"} task = agent.create_agent_task(body=task_input) print(f"Task created: {task.task_id}") # Execute steps until completion while True: step = agent.execute_agent_task_step(task_id=task.task_id) print(f"Step output: {step.output}") if step.is_last: break print("Task completed!")

Client Libraries Available:

  • Python: pip install agent-protocol-client
  • JavaScript/TypeScript: npm install agent-protocol-client
  • Go: Coming soon
  • Rust: Coming soon

Testing Your Implementation

1. Start your agent:

bash

python your_agent.py # Agent running on http://localhost:8000

2. Test with curl:

bash

# Create a task curl -X POST http://localhost:8000/ap/v1/agent/tasks \ -H "Content-Type: application/json" \ -d '{"input": "Hello, agent!"}' # Execute a step curl -X POST http://localhost:8000/ap/v1/agent/tasks/TASK_ID/steps

3. Use benchmarking tools:

bash

# Install AutoGPT's benchmark pip install agbenchmark # Run against your agent agbenchmark --test=your_agent_url

Best Practices

1. Stateless Design

  • Store task/step data in a database, not in memory
  • Enable horizontal scaling

2. Async Operations

  • Use async/await for step execution
  • Don’t block the API during long-running operations

3. Error Handling

  • Return meaningful error messages
  • Use appropriate HTTP status codes

4. Artifact Management

  • Store large files externally (S3, etc.)
  • Return URIs instead of embedding data

5. Documentation

  • Document your agent’s capabilities
  • Provide usage examples