Skip to content

Integrations

Each integration is one module under agent_adapter.integrations and, where it needs a framework, one extra (install with pip install "agent-adapter[<extra>]"). Framework imports are lazy, so an integration costs nothing until you call it. Each must pass a contract test that runs a real tool through that framework and the real Executor.

Integration Module Extra
OpenAI openai none (plain dicts)
Gemini gemini gemini
Anthropic anthropic none (plain dicts)
LangChain langchain langchain
OpenAPI openapi openapi
MCP mcp mcp
OpenAI Agents SDK openai_agents openai-agents
Pydantic AI pydantic_ai pydantic-ai
LlamaIndex llamaindex llamaindex
CrewAI crewai crewai (own environment)
Microsoft Agent Framework agent_framework agent-framework
Agno agno agno
Strands Agents strands strands (own environment)
Haystack haystack haystack
Claude Agent SDK claude_agent claude-agent
Semantic Kernel semantic_kernel semantic-kernel (own environment)
DSPy dspy dspy
smolagents smolagents smolagents
AutoGen 0.7 autogen autogen
LangGraph langgraph langgraph
Google ADK 2.x adk adk (own environment)
CAMEL-AI camel camel (own environment)
AG2 ag2 ag2
A2A a2a a2a
AG-UI ag_ui ag-ui

Not on this list? Connect anywhere attaches 12 more stacks through MCP, REST or the TS client.

flowchart LR
  REG[("Registry")] --> OA["OpenAI"]
  REG --> GM["Gemini"]
  REG --> AN["Anthropic"]
  REG --> MAF["Agent Framework"]
  REG --> AGNO["Agno"]
  REG --> ST["Strands"]
  REG --> HS["Haystack"]
  REG --> CL["Claude Agent SDK"]
  REG --> SK["Semantic Kernel"]
  REG --> DSPY["DSPy"]
  REG --> SMOL["smolagents"]
  REG --> AGEN["AutoGen"]
  REG --> LG["LangGraph"]
  REG --> ADK["Google ADK"]
  REG --> LC["LangChain"]
  REG --> MCP["MCP server"]
  REG --> OAG["OpenAI Agents SDK"]
  REG --> PAI["Pydantic AI"]
  REG --> LI["LlamaIndex"]
  REG --> CR["CrewAI"]
  REG --> CAM["CAMEL-AI"]
  REG --> AG2["AG2"]
  REG --> A2A["A2A server"]
  REG --> AGUI["AG-UI bridge"]
  A2AC["A2A agent"] --> REG
  MCPC["MCP client"] --> REG
  LCT["LangChain tools"] --> REG
  OAPI["OpenAPI spec"] --> REG

Every integration is available; arrows into the registry are importers.

Matrix

Target Exports Also Status
OpenAI (Chat / Responses) tool dicts, strict schemas — Available
Gemini function declarations, genai_tool(), AFC callables run_function_calls Available
Anthropic input_schema tools — Available
Microsoft Agent Framework FunctionTools approval_mode="always_require", answered by resolve_approvals(response, port, registry) Available
Agno Functions requires_confirmation, resolved by resolve_requirements(output, port, registry) Available
Strands Agents AgentTools strands_approval_hook(port, registry) Available
Haystack Tools confirmation_hook(port, registry) Available
Claude Agent SDK SDK MCP server claude_sdk_bridge(registry, port): server + its own can_use_tool (edits via updated_input) Available
Semantic Kernel kernel functions, plugin approval_filter(port, registry) Available
DSPy dspy.Tool per spec (acall; sync __call__ via run_sync) — Available
smolagents Tool subclass per spec (sync forward via run_sync) — Available
AutoGen 0.7 BaseTool per spec (native call id, CancellationToken) — Available
LangGraph tool_node (interrupt approvals, one at a time), tool_task + fan_out (Send), reducer(rule) channels compile_flow(flow) -> StateGraph, run_compiled (parity with the local runner) Available
Google ADK 2.x BaseTool per spec; confirmations answered by resolve_confirmations(events, port, registry) (one-use tokens, edits) compile_flow(flow) -> Workflow (superstep driver), run_workflow, resume_message Available
LangChain StructuredTools importer: import_langchain Available
MCP lowlevel Server and stateless Streamable HTTP app over for_target("mcp"); annotations from effects; principal-scoped ids import_mcp importer, mcp_client Available
OpenAI Agents SDK FunctionTools with needs_approval resolve_interruptions (edits travel in one-use tokens) Available
OpenAPI — importer: import_openapi(registry, spec, base_url=, auth=) Available
Pydantic AI Tool.from_schema, requires_approval resolve_deferred (edits via override_args) Available
LlamaIndex FunctionTool with fn_schema (async + run_sync) — Available
CrewAI BaseTools (_run via run_sync, _arun) own environment Available
CAMEL-AI FunctionTools via camel_tools(registry) the executor's port decides (no native gate, no call id); own environment Available
AG2 FunctionTools via ag2_tools(registry, approval=port) one-use token gate in tool middleware Available
A2A a2a_app, a2a_executor, agent_card connect_a2a, import_a2a importer; approvals via input-required Available
AG-UI AGUIBridge event stream (SSE), agui_endpoint approvals as interrupts; resumes ask your port Available

Where your app runs (FastAPI, Flask, Celery, scripts) is covered on Sync code and backends and the backend guides: FastAPI, Flask, Django, Celery, Scripts, Serverless, Queues. Every backend, its attach call and its tests: Backends and runtimes.

Install several

pip install "agent-adapter[all]" installs every extra that co-installs from wheels without downgrading another one. pip check and every contract test run on that set in the contract-all-compatible nox session. Pinned ranges and test sessions: Support matrix.

In all Own environment, and why
openai, gemini, anthropic, redis, otel, langchain, langgraph, mcp, openai-agents, pydantic-ai, llamaindex, openapi, agent-framework, agno, haystack, smolagents, claude-agent, autogen, server, server-wsgi, ag2, a2a, ag-ui, sqlalchemy, dynamodb crewai: needs mcp<2 (the mcp extra needs >=2.3)
strands: needs mcp<2.2
semantic-kernel: pins pydantic<2.14
adk: pins opentelemetry<=1.44, older than the otel extra resolves to
camel: needs mcp<2 (the mcp extra needs >=2.3) and pins pydantic<=2.12.0 (google-genai in all needs >=2.12.5)
dspy: pulls in LiteLLM (about 300 MB), which caps openai<3, below the openai extra; the adapter itself never uses it

Install an own-environment extra in a separate venv, for example pip install "agent-adapter[crewai]"; each has its own contract-<target> nox session.

Third-party integrations

The Integration protocol (export_tool, bind_context, bind_approval, optional compile_flow) plus the agent_adapter.integrations entry-point group: a new framework is supported without changing the adapter. get_integration(name) finds built-in and third-party integrations the same way. See Writing an integration.

Schema per family

Integrations reuse the three schema transforms:

Transform Used by
OpenAI strict OpenAI, OpenAI Agents SDK
Gemini Gemini, ADK
Anthropic (plain) Anthropic, MCP

Details on Schemas.