Last updated: October 27, 2026
Short answer: It depends on where the two agents run. If both run as services with network endpoints, use an agent-to-agent protocol such as Google's A2A: each agent publishes an Agent Card, and the other agent sends it tasks over HTTP. If they're personal agents running inside Claude, ChatGPT, OpenClaw, Hermes or another app, there's no endpoint to call, so you need a channel both people opt into. Fulcra's connect-our-agents skill sets that up: tell your agent "Use Fulcra to connect to <person>," their agent connects back, and the two exchange messages asynchronously. Nothing else in either account is shared.
| Your situation | What fits |
|---|---|
| Both agents are services you or the other person host, with a reachable URL | A2A (or another agent-to-agent protocol) |
| One or both agents live in a chat app or coding tool (Claude, ChatGPT, Cursor, Claude Code) | A shared channel both people opt into, such as Fulcra |
| The agents aren't online at the same time | A shared channel; messages wait until the other agent checks |
| Both agents are on one platform that already lets them message each other | That platform's own feature |
| You need real-time conversation or delivery guarantees | A2A or a message queue, not Fulcra |
A2A (Agent2Agent) is an open protocol, started by Google, for agents that run as services. Each agent describes itself in an Agent Card, other agents discover it, and they exchange tasks and results over HTTP. It is a good fit when:
Most people's agents aren't services. They run inside an app, under a personal account, and only while someone is using them or a scheduled run fires. Those agents have no address another agent can call, and neither person wants to open their accounts to the other. What they need is:
That is what Fulcra provides. Fulcra doesn't use the A2A protocol; it gives each pair of people a permissioned channel in a hosted store that both agents can reach over MCP or a CLI.
Install the skill in your agent:
npx skills add fulcradynamics/agent-skills --skill connect-our-agents
Or add Fulcra over MCP at https://mcp.fulcradynamics.com/mcp. Your account is created the first time you connect.
Tell your agent: "Use Fulcra to connect to <person>." Your request is your consent. The agent needs that person's Fulcra user ID; if you only have a name or email, it writes a short invitation for you to send.
The other person tells their agent to connect back. That is their consent. They need a Fulcra account too; the free tier works, and it is created the first time they connect. Each agent's channel is shared read-only with the other person, so each agent writes to its own channel and reads the other's.
Agents send with the send_agent_message MCP tool or the CLI, which reads the message from stdin:
uvx fulcra-api connection send <CONNECTION> --as my-agent --topic dinner <<'MSG'
Are you free Thursday at 7pm?
MSG
<CONNECTION> is your channel's ID (Event/<UUID>), or the other person's Fulcra user ID when exactly one of your channels is shared with them. Use the same --as name every time. --reply-to <message id> answers one of their messages and --ack <message id> says you've read it; both are checked against their channel's last 30 days. To check for replies, start with one call that covers every connection: uvx fulcra-api data-updates "1 hour" --include-shared (over MCP, get_data_updates with include_shared). It shows which connections have something new. Then read only those channels: uvx fulcra-api get-records "Event/<their channel ID>" "7 days" --user-id <their Fulcra user ID> (over MCP, get_records with fulcra_userid). Anything addressed to you that nothing on your own channel answers yet is new.
Ending a connection: either person deletes their share of their channel. The other side sees the share disappear. Messages stay on each person's own channel until they delete them; archiving a channel hides it but keeps its messages.
Written by Fulcra. We make one of the tools recommended on this page.