Skip to main content

API Transports

API Transports expose AgentVisor™ agents to external clients through protocol-specific endpoints on a shared HTTP server.

Transport vs Gateway

This page covers Transports - how external clients access AgentVisor agents (inbound). For how agents access external services (outbound), see:

The Problem

AI agents must be accessible to diverse clients:

  • AI assistants (Claude Desktop, Cursor) that discover and invoke tools
  • Other AI agents that coordinate tasks across systems
  • Web applications that orchestrate agent workflows
  • Internal services that need programmatic agent access

Each client ecosystem has established protocols. Requiring clients to adopt a single protocol creates friction and limits adoption.

AgentVisor solves this by supporting multiple API transports - each speaking the native protocol of its target ecosystem while sharing common infrastructure.

Available Transports

TransportProtocolEndpointUse Case
OpenAPI/RESTHTTP/LangGraph Agent Protocol clients, web applications, programmatic access
MCPJSON-RPC 2.0/mcpClaude Desktop, Cursor, MCP-compatible AI tools
A2AJSON-RPC 2.0/a2aGoogle Agent-to-Agent Protocol clients, multi-agent systems

OpenAPI/REST Transport (Default)

The OpenAPI/REST transport implements the LangGraph Agent Protocol, providing:

  • Thread and run management (/threads, /runs)
  • Synchronous and asynchronous execution modes
  • State streaming via Server-Sent Events
  • OpenAPI specification at /openapi.json
  • Swagger UI at /swagger-ui/

This is the primary transport for programmatic agent access.

MCP Transport

The MCP transport implements the Model Context Protocol, exposing AgentVisor as an MCP server. External clients (Claude Desktop, Cursor, IDEs, other agents) can both invoke actions (tools) and browse runtime state (resources).

Tools (tools/list, tools/call) — six categories, all enabled by default:

  • agents — one auto-generated invocation tool per registered agent
  • threadscreate_thread, get_thread, update_thread, delete_thread, search_threads, copy_thread
  • runsget_run, list_runs, cancel_run, wait_for_run
  • stateget_thread_state, update_thread_state, get_thread_history
  • storestore_put, store_get, store_delete, store_search
  • systemhealth_check, list_agents

Resources (resources/list, resources/read) — runtime state browsable via agentvisor:// URIs covering threads, checkpoints, agent schemas, and store items.

Categories can be selectively disabled via api.mcp.tools.<category> in configuration. See MCP Transport Guide for configuration and client setup.

A2A Transport

The A2A transport implements Google's Agent2Agent Protocol, enabling:

  • Agent capability discovery via Agent Cards
  • Task-based agent invocation
  • Inter-agent communication for multi-agent workflows

See A2A Transport Guide for configuration and protocol details.

Shared Infrastructure

All transports share common infrastructure, ensuring consistent behavior:

┌──────────────────────────────────────────────────────────────────────┐
│ External Clients │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────────┐ │
│ │ Web Apps │ │ Claude Desktop │ │ A2A Agents │ │
│ │ REST clients │ │ Cursor │ │ Other systems │ │
│ └────────┬────────┘ └────────┬────────┘ └────────┬─────────┘ │
│ │ │ │ │
│ REST/HTTP MCP (JSON-RPC) A2A (JSON-RPC) │
│ │ │ │ │
├───────────┼──────────────────────┼──────────────────────┼────────────┤
│ Shared HTTP Server (api.listen_addr) │
│ │ │ │ │
│ ┌────────▼────────┐ ┌────────▼────────┐ ┌────────▼────────┐ │
│ │ OpenAPI │ │ MCP │ │ A2A │ │
│ │ Transport │ │ Transport │ │ Transport │ │
│ │ /threads, /runs │ │ /mcp │ │ /a2a │ │
│ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │ │
│ └──────────────────────┴──────────────────────┘ │
│ │ │
│ ┌─────────────▼─────────────┐ │
│ │ Shared Components │ │
│ │ • Authentication │ │
│ │ • TLS │ │
│ │ • Thread/Run API │ │
│ │ • Policy enforcement │ │
│ └───────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘

Authentication

All transports share authentication configuration:

api:
auth:
enabled: true
oidc_issuer: "https://auth.example.com"
oidc_audience: "agentvisor"

When authentication is enabled, all transports require valid bearer tokens. The same token works across all endpoints.

TLS

All transports share TLS configuration:

api:
tls:
enabled: true
cert_file: "/path/to/server.crt"
key_file: "/path/to/server.key"

A single certificate secures all transport endpoints.

Policy Enforcement

All transport requests flow through the policy engine:

Client Request → Transport → Policy Engine → Agent Execution

Evaluate principal,
agent, and action

ALLOW or DENY

Policy decisions apply uniformly regardless of which transport received the request.

Configuration

Enable or disable transports independently in agentvisor.yaml:

api:
listen_addr: ":8090" # Shared HTTP server

# Shared authentication
auth:
enabled: false # Disable for development

# Shared TLS
tls:
enabled: false # Disable for development

# Transport toggles
openapi:
enabled: true # OpenAPI/REST (default: enabled)
mcp:
enabled: false # MCP transport (default: disabled)
a2a:
enabled: false # A2A transport (default: disabled)

Environment Variables

VariableDefaultDescription
AGENTVISOR_API_LISTEN_ADDR:8090HTTP server address (shared)
AGENTVISOR_API_OPENAPI_ENABLEDtrueEnable OpenAPI/REST transport
AGENTVISOR_API_MCP_ENABLEDfalseEnable MCP transport
AGENTVISOR_API_A2A_ENABLEDfalseEnable A2A transport
AGENTVISOR_API_AUTH_ENABLEDfalseEnable authentication (shared)
AGENTVISOR_API_TLS_ENABLEDfalseEnable TLS (shared)

Transport Selection

Choose transports based on your client ecosystem:

Client TypeRecommended Transport
Web applicationsOpenAPI
LangGraph clientsOpenAPI
Claude DesktopMCP
CursorMCP
MCP-compatible toolsMCP
A2A agentsA2A
Multi-agent orchestrationA2A
Custom integrationsOpenAPI

Multiple transports can be enabled simultaneously. Each provides a different interface to the same agents and capabilities.