Claw Messenger: a managed iMessage API for AI agents
Claw Messenger gives AI agents running in Docker or on a Linux server two-way iMessage, RCS, and SMS through managed infrastructure. No Mac to operate. BlueBubbles is the self-hosted alternative when you already own a Mac; compare other managed APIs when enterprise compliance or CRM integration matters more. Setup finishes only when the matching reply reaches your agent.
Choose the infrastructure you want to own
Claw Messenger operates the messaging bridge. Your agent keeps its normal Docker, Linux server, Windows, or VPS runtime.
- Best fit
- An AI agent needs managed, two-way iMessage without a Mac in your stack.
- Honest alternatives
- Use BlueBubbles when you want to self-host on your own Mac. Compare other managed APIs for enterprise compliance, CRM integrations, or a different commercial model.
- Commercial boundary
- Self-serve is $5/250, $15/2,000, $25/6,000, or $50/15,000 messages per month. The 7-day trial requires a card. Agency is invite only: $250 one-time onboarding and $199/month per subtenant, each with its own visible number billed from creation.
- Finish line
- Accepted, delivered, or read is outbound status. Two-way messaging works when the matching reply reaches the agent, webhook, or backend.
Not a fit for voice calling, native voice-note semantics, or email-only iMessage on Android. Claw Messenger is an agent API, not a personal inbox.
The shortest reliable route is to treat iMessage as a two-way API dependency. Your agent sends through REST, but it must already have an inbound path through WebSocket. Approved managed setups may use a configured webhook instead. This order prevents a common false finish where the outbound message is delivered but the reply has nowhere to go. Compare plans and limits. AI agent texting costs.
1. Connect the inbound listener
Start the listener before the first send and keep it running through the reply. WebSocket is the default path for a long-running agent process. Approved managed setups can use a configured webhook. Framework packages wrap the same boundary in their own tool or node.
2. Check readiness before sending
Use the API key in the authorization header, never in the URL. The readiness check tells you whether a receiver is connected:
curl https://claw-messenger.onrender.com/api/agent/readiness \
-H "Authorization: Bearer cm_live_YOUR_API_KEY"Continue only when the response includes "ready": true. If it returns "action": "connect_agent", start or restart the listener and check again.
3. Send one controlled message
Use a phone number you control and can answer during the test. Send a plain message first, before adding tools, scheduled jobs, or business logic. Claw Messenger chooses the available iMessage, RCS, or SMS route, so the agent should not force a service.
curl -X POST https://claw-messenger.onrender.com/api/agent/send-message \
-H "Authorization: Bearer cm_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phone_number":"+15551234567","text":"Reply with: agent loop works","claim_route":false}'4. End on the matching reply
Reply from the controlled phone and leave the listener connected until that message appears inside the agent, webhook, or backend. Accepted, delivered, and read states are useful outbound diagnostics. They do not prove that your AI agent can receive a reply.
Outbound status only
The API accepted the request or the carrier reported delivered or read, but no reply reached the agent.
Reply received by your agent
The controlled phone replied and the matching inbound message reached the connected tool, consumer, webhook, or backend.
Use the setup path that matches your agent
Every route uses the same send-and-reply proof. The difference is how the framework holds its inbound connection.
Frequently asked questions
Does an AI agent need a Mac to send iMessage?
Not when it uses a managed API such as Claw Messenger. Your agent can run on Linux, Windows, Docker, or a VPS while the messaging bridge is operated separately.
Does delivered status prove the agent can receive replies?
No. Delivered describes the outbound message. The setup works in both directions only when the matching reply reaches the agent, webhook, or backend.
One proof before production
Put your agent in a working text thread
Use the trial action above, connect the listener, and finish when the matching reply reaches your agent. Taking that working thread into a client workflow or product? Describe the first managed rollout.