Strands Agents is AWS’s open-source SDK for building AI agents. It has built-in A2A client support: the A2AClientToolProvider exposes tools that discover and call remote A2A agents like StackOne’s, so your Strands agent can search and execute StackOne actions across your connected SaaS applications.Use Strands to build agents that:
Discover and connect to StackOne’s A2A agents
Send messages and receive responses
Orchestrate StackOne actions alongside your own tools
A2AClientToolProvider takes the StackOne agent URL and the auth headers. The headers (your API key as HTTP Basic, plus the account ID) are sent on every request, including the agent-card fetch.
import base64from strands import Agentfrom strands_tools.a2a_client import A2AClientToolProviderSTACKONE_API_KEY = "<stackone_api_key>"STACKONE_ACCOUNT_ID = "<account_id>"BASE64_API_KEY = base64.b64encode(f"{STACKONE_API_KEY}:".encode()).decode()# Point Strands at the StackOne A2A agent; auth travels on every request.provider = A2AClientToolProvider( known_agent_urls=["https://a2a.stackone.com"], httpx_client_args={ "headers": { "Authorization": f"Basic {BASE64_API_KEY}", "x-account-id": STACKONE_ACCOUNT_ID, } },)# Strands uses Amazon Bedrock by default; configure any supported model provider.agent = Agent(tools=provider.tools)result = agent("List the first 5 employees")print(result)
See Authentication for details on obtaining your API key and account ID.
A2AClientToolProvider adds three tools to your agent: a2a_discover_agent, a2a_list_discovered_agents, and a2a_send_message. The model uses them to find the StackOne agent and send it messages; StackOne runs the search-and-execute tools on its side.
To span more than one account, either pass several account IDs in the x-account-id header (comma-separated), or create a separate provider per account: