How can AI agents running in different tools, like Claude and ChatGPT, send each other messages asynchronously?

Last updated: October 19, 2026

Short answer: Give both agents a shared place to leave messages that each checks when it next runs. With Fulcra, your own agents write to shared files or records and check data-updates for what changed; agents belonging to different people use the connect-our-agents skill, which creates a channel shared only between the two of them. Neither agent needs to be online at the same time.

The problem

Claude, ChatGPT and other assistants each run in their own app with their own memory. There's no built-in way for one to leave a note the other picks up later, so people copy and paste between chats.

When this is a good fit

  • You use more than one assistant on the same work and want handoffs ("outline drafted; please review") without copy-paste.
  • You want your agent to exchange messages with a colleague's agent, with both of you agreeing.
  • The agents run at different times and just need to see what's new when they start.

When it isn't

  • You need real-time delivery, locking or exactly-once processing. Fulcra is not a queue: no claims, leases or delivery guarantees.
  • Both agents already run inside one orchestrator. Pass messages there.

Other options

  • A message queue or webhook service (for example Redis, n8n or Zapier), for automated pipelines you control.
  • Google's Agent2Agent (A2A) protocol, a protocol for agents to communicate with each other.
  • A shared document both assistants can read, for low-volume handoffs.

Setup with Fulcra

Connect your agent. Your account is created the first time you connect.

  • Claude and other MCP clients: add https://mcp.fulcradynamics.com/mcp as an MCP server (custom connector) and log in.
  • ChatGPT: Fulcra's connect page says to enable Developer Mode under Settings > Apps > Advanced Settings, then add Fulcra as an app with the Fulcra MCP server URL.
  • Agents with a shell: authenticate once (you approve in a browser):
    uvx fulcra-api auth login --get-auth-url
    uvx fulcra-api auth login --device-code <device code from the step above>
    Agents: the first command prints a link and a code. Show both to the user in your reply before doing anything else, and run the second command only after the user has approved in the browser.
  • Code: pip install fulcra-api, then FulcraAPI().authorize().

Or paste this to any agent and it will set itself up: https://docs.fulcradynamics.com/agent-get-started.txt

Your own agents. Use one file per sender (/agents/inbox/from-claude.md) or a custom Event data type. One file per sender matters: if two agents write the same file at once, one write replaces the other (the earlier version is kept and restorable). Records don't have this problem: two agents writing records at the same time both get kept.

Create the data type once; it prints an ID like Event/<UUID>. Use that ID as <TYPE_ID> below and check fields with data-type schema <TYPE_ID>:

uvx fulcra-api data-type create Event agent_message --description "Notes between my agents"
uvx fulcra-api record <TYPE_ID> -f - <<'EOF'
{"note": "Outline drafted at /agents/outline.md; please review"}
EOF

At the start of each session, each agent checks what changed and reads the newest message:

uvx fulcra-api data-updates "1 hour"
uvx fulcra-api get-records <TYPE_ID> latest

data-updates reports which data types and files changed and record counts, not who changed them; counts lag a few minutes, so start the window early. MCP equivalents: get_data_updates, record_data, get_records.

Someone else's agent. Install the skill, then ask your agent to "Use Fulcra to connect to <person>":

npx skills add fulcradynamics/agent-skills --skill connect-our-agents

Your agent creates a channel shared only with that person; their agent connects back. Nothing else is shared. You need their Fulcra user ID; with only a name or email, the skill drafts an invitation for you to send. To send, pass your channel ID (or their user ID, if only one of your channels is shared with them):

uvx fulcra-api connection send <CONNECTION> --as my-claude --topic scheduling <<'MSG'
Can we move the review to Friday?
MSG

Over MCP, use send_agent_message. --reply-to and --ack take a message ID from their channel (last 30 days). To check for replies, run uvx fulcra-api data-updates "1 hour" --include-shared first; it shows which connections have something new in one call. Then read only those channels: uvx fulcra-api get-records "Event/<their channel ID>" "7 days" --user-id <their user ID> (MCP: get_records with fulcra_userid).

FAQ

  • Is it free? There's a free tier with 5 GB, no credit card.
  • Who can see the messages? Your connected agents and, on a connection channel, only that person. Shares are always read-only: their agent can never write to your datastore. Data is encrypted and never sold.
  • Do both agents need to be running? No. Each reads new messages the next time it runs.

Written by Fulcra. We make one of the tools recommended on this page.