1"use strict";(self.webpackChunkinnovation_labs=self.webpackChunkinnovation_labs||[]).push([[2685],{65941:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"agent-creation/uagents-adapter-guide","title":"uAgents Adapters","description":"uAgents Adapters provide a bridge between the uAgents ecosystem and various agentic frameworks, enabling seamless communication between different AI agent architectures.","source":"@site/docs/agent-creation/uagents-adapter-guide.md","sourceDirName":"agent-creation","slug":"/agent-creation/uagents-adapter-guide","permalink":"/resources/docs/next/agent-creation/uagents-adapter-guide","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"id":"uagents-adapter-guide","title":"uAgents Adapters"},"sidebar":"tutorialSidebar","previous":{"title":"uAgent Creation","permalink":"/resources/docs/next/agent-creation/uagent-creation"},"next":{"title":"uAgent to uAgent Communication","permalink":"/resources/docs/next/agent-communication/uagent-uagent-communication"}}');var r=t(74848),s=t(28453);const i={id:"uagents-adapter-guide",title:"uAgents Adapters"},o="uAgents Adapters: Connecting AI Framework Ecosystems",d={},l=[{value:"Why Use Adapters?",id:"why-use-adapters",level:2},{value:"Prerequisites",id:"prerequisites",level:2},{value:"Installation",id:"installation",level:2},{value:"Available Adapters",id:"available-adapters",level:2},{value:"1. LangChain Adapter",id:"1-langchain-adapter",level:3},{value:"2. LangGraph Adapter",id:"2-langgraph-adapter",level:3},{value:"3. CrewAI Adapter",id:"3-crewai-adapter",level:3},{value:"Common Parameters",id:"common-parameters",level:2},{value:"Communication Protocol",id:"communication-protocol",level:2},{value:"Cleanup and Management",id:"cleanup-and-management",level:2},{value:"4. MCP Server Adapter",id:"4-mcp-server-adapter",level:2},{value:"Agentverse-only (direct) deployment",id:"agentverse-only-direct-deployment",level:4},{value:"Local agent with mailbox connection",id:"local-agent-with-mailbox-connection",level:4},{value:"A2A Adapters (Inbound & Outbound)",id:"a2a-adapters-inbound--outbound",level:2},{value:"Next Steps",id:"next-steps",level:2}];function c(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",mdxAdmonitionTitle:"mdxAdmonitionTitle",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"uagents-adapters-connecting-ai-framework-ecosystems",children:"uAgents Adapters: Connecting AI Framework Ecosystems"})}),"\n",(0,r.jsx)(n.p,{children:"uAgents Adapters provide a bridge between the uAgents ecosystem and various agentic frameworks, enabling seamless communication between different AI agent architectures."}),"\n",(0,r.jsx)(n.h2,{id:"why-use-adapters",children:"Why Use Adapters?"}),"\n",(0,r.jsx)(n.p,{children:"Different frameworks and technologies have different strengths:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"LangChain"}),": Powerful for composing LLMs with tools and chains"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"LangGraph"}),": Excellent for complex orchestration and stateful workflows"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"CrewAI"}),": Specialized for multi-agent collaborative systems"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"MCP Server Adapter"}),": Host MCP servers on Agentverse (or locally with mailbox) so ASI",":One"," can discover and use them via the Chat Protocol"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The uAgents Adapter package lets you use these specialized frameworks while still benefiting from the uAgents ecosystem for communication, discovery, and deployment."}),"\n",(0,r.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsx)(n.p,{children:"Before installing adapters, make sure your environment meets these requirements:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Python 3.10+"})," (Python 3.8 and older uAgents releases are not supported for adapters)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"uagents>=0.25.5"})})," (required by ",(0,r.jsx)(n.code,{children:"uagents-adapter"}),"; older pins such as ",(0,r.jsx)(n.code,{children:"uagents==0.25.5"})," will fail)"]}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'python --version # should report 3.10 or newer\npip install "uagents>=0.25.5"\n'})}),"\n",(0,r.jsx)(n.h2,{id:"installation",children:"Installation"}),"\n",(0,r.jsx)(n.p,{children:"Install the base package:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"pip install uagents-adapter\n"})}),"\n",(0,r.jsx)(n.p,{children:"Install with specific framework support:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'# Install with LangChain supp
1ort\npip install "uagents-adapter[langchain]"\n\n# Install with CrewAI support\npip install "uagents-adapter[crewai]"\n\n# Install with MCP support\npip install "uagents-adapter[mcp]"\n\n# Install with A2A Inbound support\npip install "uagents-adapter[a2a-inbound]"\n\n# Install with A2A Outbound support\npip install "uagents-adapter[a2a-outbound]"\n\n# Install with all extras\npip install "uagents-adapter[all]"\n'})}),"\n",(0,r.jsx)(n.h2,{id:"available-adapters",children:"Available Adapters"}),"\n",(0,r.jsx)(n.p,{children:"The uAgents Adapter package currently supports several major AI frameworks."}),"\n",(0,r.jsxs)(n.admonition,{title:"Setup for the examples below",type:"note",children:[(0,r.jsx)(n.p,{children:"These snippets assume you already have:"}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["An Agentverse API key set as ",(0,r.jsx)(n.code,{children:"AGENTVERSE_API_KEY"})," (see ",(0,r.jsx)(n.a,{href:"/docs/agentverse/agentverse-api-key",children:"Agentverse API Key"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:["A framework agent/app object you created earlier (",(0,r.jsx)(n.code,{children:"langchain_agent"}),", ",(0,r.jsx)(n.code,{children:"langgraph_app"}),", or ",(0,r.jsx)(n.code,{children:"my_crew"}),")"]}),"\n"]}),(0,r.jsxs)(n.p,{children:["For complete runnable apps, see the ",(0,r.jsx)(n.a,{href:"/docs/examples/adapters/crewai-adapter-example",children:"adapter examples"}),"."]})]}),"\n",(0,r.jsx)(n.h3,{id:"1-langchain-adapter",children:"1. LangChain Adapter"}),"\n",(0,r.jsx)(n.p,{children:"Connect LangChain agents, chains, and tools to the uAgents ecosystem."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Installation:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'pip install "uagents-adapter[langchain]"\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:'import os\nfrom uagents_adapter import LangchainRegisterTool\n\n# Assumes `langchain_agent` is your existing LangChain agent/runnable\nAGENTVERSE_API_KEY = os.environ["AGENTVERSE_API_KEY"]\n\n# Register a LangChain agent as a uAgent\ntool = LangchainRegisterTool()\nagent_info = tool.invoke({\n "agent_obj": langchain_agent,\n "name": "my_langchain_agent",\n "port": 8000,\n "description": "A LangChain agent powered by GPT-4",\n "api_token": AGENTVERSE_API_KEY,\n})\n'})}),"\n",(0,r.jsx)(n.h3,{id:"2-langgraph-adapter",children:"2. LangGraph Adapter"}),"\n",(0,r.jsx)(n.p,{children:"Integrate LangGraph's powerful orchestration with uAgents."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Installation:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'pip install "uagents-adapter[langchain]"\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:'import os\nfrom uagents_adapter import LangchainRegisterTool\n\n# Assumes `langgraph_app` is your compiled LangGraph app\nAGENTVERSE_API_KEY = os.environ["AGENTVERSE_API_KEY"]\n\n# Wrap LangGraph agent function for uAgent integration\ndef langgraph_agent_func(query):\n # Process with LangGraph\n result = langgraph_app.invoke(query)\n return result\n\n# Register the LangGraph function as a uAgent\ntool = LangchainRegisterTool()\nagent_info = tool.invoke({\n "agent_obj": langgraph_agent_func,\n "name": "my_langgraph_agent",\n "port": 8080,\n "description": "A LangGraph orchestration agent",\n "api_token": AGENTVERSE_API_KEY,\n})\n'})}),"\n",(0,r.jsxs)(n.p,{children:["See the full walkthrough: ",(0,r.jsx)(n.a,{href:"/docs/examples/adapters/langgraph-adapter-example",children:"LangGraph Adapter Example"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"3-crewai-adapter",children:"3. CrewAI Adapter"}),"\n",(0,r.jsx)(n.p,{children:"Expose CrewAI's collaborative agent teams as uAgents."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Installation:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'pip install "uagents-adapter[crewai]"\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:'import os\nfrom uagents_adapter import CrewaiRegisterTool\n\n# Assumes `my_crew` is your existing CrewAI Crew instance\nAGENTVERSE_API_KEY = os.environ["AGENTVERSE_API_KEY"]\n\n# Create a function to handle CrewAI operations\ndef crew_handler(query):\n # Process with CrewAI\n result = my_crew.kickoff(inputs={"query": query})\n return result\n\n# Register the CrewAI function as a uAgent\ntool = CrewaiRegisterTool()\nagent_info = tool.invoke({\n "agent_obj": crew_handler,\n "name": "my_crew_agent",\n "port": 8081,\n "description": "A CrewAI team of specialized agents",\n "api_token": AGENTVERSE_API_KEY,\n})\n'})}),"\n",(0,r.jsxs)(n.p,{children:["See the full walkthrough: ",(0,r.jsx)(n.a,{href:"/docs/examples/adapter
1s/crewai-adapter-example",children:"CrewAI Adapter Example"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"common-parameters",children:"Common Parameters"}),"\n",(0,r.jsx)(n.p,{children:"All adapters accept the following parameters:"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Parameter"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"agent_obj"})}),(0,r.jsx)(n.td,{children:"object"}),(0,r.jsx)(n.td,{children:"The framework-specific agent or function to wrap"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"name"})}),(0,r.jsx)(n.td,{children:"string"}),(0,r.jsx)(n.td,{children:"Name for your agent in the uAgents ecosystem"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"port"})}),(0,r.jsx)(n.td,{children:"int"}),(0,r.jsx)(n.td,{children:"Port for the agent's HTTP server"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"description"})}),(0,r.jsx)(n.td,{children:"string"}),(0,r.jsx)(n.td,{children:"Human-readable description of agent capabilities"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"api_token"})}),(0,r.jsx)(n.td,{children:"string"}),(0,r.jsx)(n.td,{children:"Your Agentverse API key for registration"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"mailbox"})}),(0,r.jsx)(n.td,{children:"bool"}),(0,r.jsx)(n.td,{children:"Whether to use Agentverse mailbox for persistence (optional)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"ai_agent_address"})}),(0,r.jsx)(n.td,{children:"string"}),(0,r.jsxs)(n.td,{children:["Optional uAgent address (",(0,r.jsx)(n.code,{children:"agent1q..."}),") of an AI agent that converts natural language into a structured query prompt. Leave unset to use the package default (or set ",(0,r.jsx)(n.code,{children:"AI_AGENT_ADDRESS"})," in the environment). Example: ",(0,r.jsx)(n.code,{children:'"agent1qtlpfshtlcxekgrfcpmv7m9zpajuwu7d5jfyachvpa4u3dkt6k0uwwp2lct"'})]})]})]})]}),"\n",(0,r.jsx)(n.h2,{id:"communication-protocol",children:"Communication Protocol"}),"\n",(0,r.jsxs)(n.p,{children:["Once registered, adapter agents communicate using the uAgents chat protocol. ",(0,r.jsx)(n.code,{children:"uagents_core"})," is installed with ",(0,r.jsx)(n.code,{children:"uagents>=0.25.5"}),"."]}),"\n",(0,r.jsx)(n.admonition,{title:"Handler context required",type:"note",children:(0,r.jsxs)(n.p,{children:["The snippet below assumes you are inside an async uAgent handler where ",(0,r.jsx)(n.code,{children:"ctx"})," is the ",(0,r.jsx)(n.code,{children:"Context"})," argument, and ",(0,r.jsx)(n.code,{children:"adapter_agent_address"})," is the address of the registered adapter agent (an ",(0,r.jsx)(n.code,{children:"agent1q..."})," string returned at registration or copied from Agentverse)."]})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:'from datetime import datetime, timezone\nfrom uuid import uuid4\n\nfrom uagents import Context\nfrom uagents_core.contrib.protocols.chat import (\n ChatMessage,\n TextContent,\n)\n\n# Example: inside `@agent.on_message(...)` or another async handler\nasync def send_to_adapter(ctx: Context, adapter_agent_address: str) -> None:\n message = ChatMessage(\n timestamp=datetime.now(timezone.utc),\n msg_id=uuid4(),\n content=[TextContent(type="text", text="Your query here")],\n )\n await ctx.send(adapter_agent_address, message)\n'})}),"\n",(0,r.jsxs)(n.p,{children:["For a complete chat-protocol walkthrough, see ",(0,r.jsx)(n.a,{href:"/docs/agent-communication/agent-chat-protocol",children:"Agent Chat Protocol"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"cleanup-and-management",children:"Cleanup and Management"}),"\n",(0,r.jsx)(n.p,{children:"Always clean up your agents when shutting down to ensure proper deregistration."}),"\n",(0,r.jsx)(n.admonition,{title:"Matching registration name",type:"note",children:(0,r.jsxs)(n.p,{children:["Pass the ",(0,r.jsx)(n.strong,{children:"same"})," ",(0,r.jsx)(n.code,{children:"name"})," you used when registering the agent (for example ",(0,r.jsx)(n.code,{children:'"my_langchain_agent"'}),"), not a display label or address."]})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:'import time\nfrom uagents_adapter import
1cleanup_uagent\n\nAGENT_NAME = "my_langchain_agent" # must match the `name` used in tool.invoke(...)\n\ntry:\n # Your agent code here\n while True:\n time.sleep(1)\nexcept KeyboardInterrupt:\n # Clean up the agent\n cleanup_uagent(AGENT_NAME)\n print("Agent stopped.")\n'})}),"\n",(0,r.jsx)(n.h2,{id:"4-mcp-server-adapter",children:"4. MCP Server Adapter"}),"\n",(0,r.jsxs)(n.p,{children:["The MCP Server Adapter lets you host your FastMCP servers directly on Agentverse or run locally with a mailbox, making them discoverable by ASI",":One"," through the Chat Protocol."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Installation:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'pip install "uagents-adapter[mcp]"\n'})}),"\n",(0,r.jsxs)(n.p,{children:["First, create a FastMCP server implementation in a ",(0,r.jsx)(n.code,{children:"server.py"})," file that exposes the required ",(0,r.jsx)(n.code,{children:"list_tools"})," and ",(0,r.jsx)(n.code,{children:"call_tool"})," async methods. Then, in the following ",(0,r.jsx)(n.code,{children:"agent.py"}),", import the MCP server instance and use it with the ",(0,r.jsx)(n.code,{children:"MCPServerAdapter"}),"."]}),"\n",(0,r.jsxs)(n.admonition,{type:"note",children:[(0,r.jsxs)(n.mdxAdmonitionTitle,{children:["ASI",":One"," API key and model"]}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"MCPServerAdapter"})," needs an ASI",":One"," API key for LLM-powered tool selection."]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Get a key: ",(0,r.jsxs)(n.a,{href:"/docs/asione/asi1-getting-started",children:["Getting Started with ASI",":One"]})," (or ",(0,r.jsx)(n.a,{href:"/docs/asione/asi-one-quickstart",children:"Quickstart"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:["Prefer an environment variable, e.g. ",(0,r.jsx)(n.code,{children:"export ASI_ONE_API_KEY=..."}),", instead of hardcoding"]}),"\n",(0,r.jsxs)(n.li,{children:["Choose a model based on your workload; start with ",(0,r.jsx)(n.a,{href:"/docs/asione/models/asi1",children:(0,r.jsx)(n.code,{children:"asi1"})}),", or use ",(0,r.jsx)(n.a,{href:"/docs/asione/models/asi1-extended",children:(0,r.jsx)(n.code,{children:"asi1-extended"})})," / ",(0,r.jsx)(n.a,{href:"/docs/asione/models/asi1-fast",children:(0,r.jsx)(n.code,{children:"asi1-fast"})})," when you need deeper reasoning or lower latency"]}),"\n"]})]}),"\n",(0,r.jsx)(n.h4,{id:"agentverse-only-direct-deployment",children:"Agentverse-only (direct) deployment"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:'import os\nfrom uagents import Agent\nfrom uagents_adapter import MCPServerAdapter\nfrom server import mcp # FastMCP instance from your server.py\n\n# Create an MCP adapter\nmcp_adapter = MCPServerAdapter(\n mcp_server=mcp,\n asi1_api_key=os.environ["ASI_ONE_API_KEY"],\n model="asi1", # Options: asi1, asi1-extended, asi1-fast\n)\n\n# Create a direct uAgent for Agentverse\nagent = Agent()\n\n# Add the MCP adapter protocols to the agent\nfor protocol in mcp_adapter.protocols:\n agent.include(protocol)\n\n# Run the MCP adapter with the agent\nmcp_adapter.run(agent)\n'})}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["See: ",(0,r.jsx)(n.a,{href:"../examples/mcp-integration/mcp-adapter-example",children:"Create MCP Server on Agentverse Example"})," \u2014 how to deploy a FastMCP server as a uAgent using ",(0,r.jsx)(n.code,{children:"MCPServerAdapter"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"local-agent-with-mailbox-connection",children:"Local agent with mailbox connection"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:'import os\nfrom uagents import Agent\nfrom uagents_adapter import MCPServerAdapter\nfrom server import mcp # FastMCP instance from your server.py\n\n# Create an MCP adapter\nmcp_adapter = MCPServerAdapter(\n mcp_server=mcp,\n asi1_api_key=os.environ["ASI_ONE_API_KEY"],\n model="asi1", # Options: asi1, asi1-extended, asi1-fast\n)\n\n# Create a local uAgent with mailbox\nagent = Agent(\n name="alice",\n port=8000,\n seed="put_your_seed_phrase_here",\n mailbox=True,\n)\n\n# Add the MCP adapter protocols to the agent\nfor protocol in mcp_adapter.protocols:\n agent.include(protocol)\n\n# Ru
1n the MCP adapter with the agent\nmcp_adapter.run(agent)\n'})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Important:"})," When creating MCP tools, include detailed docstrings using triple quotes (",(0,r.jsx)(n.code,{children:'"""'}),") describing what each tool does, when it should be used, and what parameters it expects. These descriptions help ASI",":One"," decide when and how to use your tools."]}),"\n",(0,r.jsx)(n.h2,{id:"a2a-adapters-inbound--outbound",children:"A2A Adapters (Inbound & Outbound)"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"A2A adapters"})," bridge Fetch.ai's ",(0,r.jsx)(n.code,{children:"uAgents"})," with the wider ",(0,r.jsx)(n.em,{children:"Agent-to-Agent"})," (A2A) protocol ecosystem, letting any Agentverse agent collaborate with A2A agents (and vice-versa) without code changes."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Adapter"}),(0,r.jsx)(n.th,{children:"Direction"}),(0,r.jsx)(n.th,{children:"Typical Use-Case"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Inbound A2A Adapter"})}),(0,r.jsx)(n.td,{children:"A2A \u2192 Agentverse"}),(0,r.jsx)(n.td,{children:"Expose an existing Agentverse agent as a standard A2A endpoint so external A2A clients can discover & invoke it."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Outbound A2A Adapter"})}),(0,r.jsx)(n.td,{children:"Agentverse \u2192 A2A"}),(0,r.jsxs)(n.td,{children:["Register one or more A2A agents as a single uAgent, so Agentverse workflows & ASI",":One"," can leverage their capabilities."]})]})]})]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Installation:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'# Install A2A Inbound adapter\npip install "uagents-adapter[a2a-inbound]"\n\n# Install A2A Outbound adapter\npip install "uagents-adapter[a2a-outbound]"\n'})}),"\n",(0,r.jsx)(n.p,{children:"For full tutorials see:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/docs/examples/adapters/a2a-inbound-adapter-example",children:(0,r.jsx)(n.strong,{children:"Inbound Adapter Example"})})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/docs/examples/adapters/a2a-outbound-adapter-example",children:(0,r.jsx)(n.strong,{children:"Outbound Adapter Example"})})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"next-steps",children:"Next Steps"}),"\n",(0,r.jsx)(n.p,{children:"Pick one path and run a complete example:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Framework adapters"})," \u2014 start with ",(0,r.jsx)(n.a,{href:"/docs/examples/adapters/crewai-adapter-example",children:"CrewAI Adapter Example"})," or ",(0,r.jsx)(n.a,{href:"/docs/examples/adapters/langgraph-adapter-example",children:"LangGraph Adapter Example"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"MCP on Agentverse"})," \u2014 follow ",(0,r.jsx)(n.a,{href:"/docs/examples/mcp-integration/mcp-adapter-example",children:"Create MCP Server on Agentverse"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"A2A interoperability"})," \u2014 try ",(0,r.jsx)(n.a,{href:"/docs/examples/adapters/a2a-inbound-adapter-example",children:"Inbound A2A"})," or ",(0,r.jsx)(n.a,{href:"/docs/examples/adapters/a2a-outbound-adapter-example",children:"Outbound A2A"})]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Before you run any example, confirm ",(0,r.jsx)(n.strong,{children:"Python 3.10+"}),", ",(0,r.jsx)(n.code,{children:"uagents>=0.25.5"}),", and the relevant API keys (",(0,r.jsx)(n.a,{href:"/docs/agentverse/agentverse-api-key",children:"Agentverse"}),", ",(0,r.jsxs)(n.a,{href:"/docs/asione/asi1-getting-started",children:["ASI",":One"]}),")."]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>o});var a=t(96540);const r={},s=a.createContext(r);function i(e){const n=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),a.createElement(s.Provider,{value:n},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.