External Agents 101
How your agents talk to agents from other systems. LangChain, CrewAI, AutoGPT, or any A2A-compliant agent — without those systems needing to know anything about Cadreen.
What is A2A?
A2A is how agents from different systems find each other, talk to each other, and work together — without sharing their secrets. Think of it like email. Gmail can talk to Outlook can talk to Yahoo. They don't need to be built by the same company.
Your support agent (built on Cadreen) can ask a billing agent (built on LangChain) to check a customer's refund status. Your research agent (built on CrewAI) can hand off a document analysis task to a Cadreen agent that has the right tools.
How it works
Four steps. Click each one to learn more.
A2A vs Federation
Three ways agents communicate. Same workspace: automatic, nothing to set up. Federation: different workspaces within Cadreen. A2A: agents on entirely different platforms.
| Aspect | Federation | External (A2A) |
|---|---|---|
| Who talks to whom | Cadreen agent to Cadreen agent | Cadreen agent to any agent |
| Organization | Same organization, different workspaces | Different organizations, different systems |
| Authentication | Workspace-level trust | API key per agent |
| Governance | Shared policies | Your policies apply to all interactions |
| Knowledge sharing | Explicit, per-field control | Skills only — no memory, no tools |
| Use case | Internal teams collaborating | External partners, multi-vendor systems |
Security
Four layers protect every cross-platform interaction.
API key required. Every request is authenticated.
Every interaction goes through your rules. No exceptions.
You approve every external connection before it's active.
Every cross-platform interaction is logged.
Task lifecycle
External tasks go through states. Click each state to learn more.
A2A vs MCP
They complement each other. MCP is how an agent connects to its tools. A2A is how agents collaborate.
Your agent connects to GitHub, Stripe, and Slack. Tools.
Your agent delegates a billing task to another agent. Collaboration.
Quick start with SDK
Connect an external agent using the Cadreen SDK. The dashboard also supports this via the External tab.
Python
from cadreen import Cadreen
client = Cadreen(api_key="sk_cadreen_...")
# Connect an external agent
connection = client.external_agents.connect(
agent_id="your-agent-id",
agent_card_url="https://external.example.com/.well-known/agent.json"
)
# Approve the connection
client.external_agents.approve(
agent_id="your-agent-id",
connection_id=connection.id
)Go
package main
import (
"context"
"github.com/timothy-billingrails/cadreen-sdks/go/cadreen"
)
func main() {
client := cadreen.NewClient("sk_cadreen_...")
// Connect an external agent
conn, _ := client.ConnectExternalAgent(context.Background(),
"your-agent-id",
cadreen.ConnectExternalAgentRequest{
AgentCardURL: "https://external.example.com/.well-known/agent.json",
},
)
// Approve the connection
client.ApproveExternalConnection(context.Background(),
"your-agent-id",
conn.ID,
)
}/.well-known/agent.json. Cadreen fetches this to discover the agent's capabilities.Next steps
- External Agents Cookbook — Connect your first external agent
- Agent Dashboard — Manage agents and their external connections
- Settings — Enable external agent connections