OpenClaw

Short machine-oriented summary for any agent or automation tool /llm.md.

StarAgent can call your OpenClaw gateway's POST /hooks/agent endpoint whenever someone leaves a voicemail (and on missed calls if you enable webhooks). Each request runs an agent turn with a plain-text message that includes caller metadata, optional extracted fields, and the full transcript.

1. Enable hooks in OpenClaw

In your OpenClaw gateway configuration, turn hooks on and set a dedicated token. The official docs describe this block as hooks.enabled, hooks.token, and hooks.path (defaults to /hooks). Query-string tokens are not accepted. Use a header instead.

Reference configuration and security notes are in the upstream docs at docs.openclaw.ai/automation/webhook.

NemoClaw

If you use NVIDIA NemoClaw, auxiliary services can publish a quick tunnel URL. Append /hooks/agent and paste it into StarAgent Setup. See the step-by-step NemoClaw guide.

In Setup, you can also choose Create stable hostname under OpenClaw webhooks to get https://oc-*.staragent.io/hooks/agent. That uses Cloudflare Tunnel (same idea as BlueBubbles) and forwards to localhost:18789 on the machine where you run the install command.

bb-*.staragent.io is only for BlueBubbles (localhost:1234), not the OpenClaw hook, unless you customized routing.

2. Point StarAgent at your gateway

  1. 1Copy your public gateway base URL (for example the host you expose through Tailscale, Cloudflare Tunnel, or your VPS). The webhook path must be the agent hook, typically /hooks/agent.
  2. 2In StarAgent Setup, open Webhooks, enable the integration, and set Payload format to OpenClaw gateway (POST /hooks/agent).
  3. 3Paste the full URL into Endpoint URL, for example https://your-host/hooks/agent.
  4. 4Enter the same value you configured as hooks.token under Hook secret. StarAgent sends it as Authorization: Bearer ….
  5. 5Click Save, then Send test to confirm your gateway returns HTTP 200.

What OpenClaw receives

In OpenClaw mode StarAgent does not send the raw StarAgent JSON document. It posts the shape OpenClaw expects, with a generated message string. The body also includes name: "StarAgent", wakeMode: "now", and deliver: false so the run is accepted without forcing delivery to a chat surface. Adjust behavior in OpenClaw if you want replies routed to Telegram, Slack, or another channel.

{
  "message": "StarAgent phone event\nEvent type: voicemail\n...",
  "name": "StarAgent",
  "wakeMode": "now",
  "deliver": false
}

Structured voicemail fields

When you use extract mode, StarAgent still builds the long message for OpenClaw, but your other automations can consume the native JSON webhook instead. Voicemail webhooks may include extracted_fields and inferred_contact. See the webhook reference.

Standard JSON mode

If you leave the payload format on Standard JSON, StarAgent keeps posting the documented incoming_call and voicemail payloads. Use that when your middleware or OpenClaw mapping layer wants the raw object.

Security. Treat your hook token like a password. Restrict who can reach the gateway port, rotate the token if it leaks, and scope OpenClaw tool profiles for hook-driven agents.