Amber — Phone-Capable Voice Agent
Give your agent a phone number. Amber answers calls, places confirmed outbound calls, completes phone tasks, logs transcripts, and exposes MCP tools.
Rank
62
Safety
84
Downloads
5.1k
Updated
Oct 9, 2026
Version
5.5.50
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 5.1K downloads reported by the source. Last updated 10/9/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 9, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 9, 2026
- Adoption signal
- 5.1K downloadsadoption · observed Oct 9, 2026
- Latest release
- 5.5.50release · observed Aug 24, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s177cd8521x179ryrctnxwgpth83hrgh:amber-phone-agent- Install using `clawhub skill install s177cd8521x179ryrctnxwgpth83hrgh:amber-phone-agent` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/batthis/amber-phone-agent before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-batthis-amber-phone-agent/snapshot"
Documentation
CLAWHUB
160,000 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
amber-skills/calendar/SKILL.md
---
name: calendar
version: 1.2.0
description: "Query and manage the operator's calendar — check availability and create new entries"
metadata: {"amber": {"capabilities": ["read", "act"], "confirmation_required": true, "timeout_ms": 5000, "permissions": {"local_binaries": ["ical-query"], "telegram": false, "openclaw_action": false, "network": false}, "function_schema": {"name": "calendar_query", "description": "Check the operator's calendar availability or create a new entry. PRIVACY RULE: When reporting availability to callers, NEVER disclose event titles, names, locations, or any details about what the operator is doing. Only share whether they are free or busy at a given time (e.g. 'free from 2pm to 4pm', 'busy until 3pm'). Treat all calendar event details as private and confidential. Calendar creation requires explicit confirmation from the caller before the action proceeds.", "parameters": {"type": "object", "properties": {"action": {"type": "string", "enum": ["lookup", "create"], "description": "Whether to look up availability or create a new event"}, "range": {"type": "string", "description": "For lookup: today, tomorrow, week, or a specific date like 2026-02-23", "pattern": "^(today|tomorrow|week|\\d{4}-\\d{2}-\\d{2})$"}, "title": {"type": "string", "description": "For create: the event title", "maxLength": 200}, "start": {"type": "string", "description": "For create: start date-time like 2026-02-23T15:00", "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$"}, "end": {"type": "string", "description": "For create: end date-time like 2026-02-23T16:00", "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$"}, "calendar": {"type": "string", "description": "Optional: specific calendar name", "maxLength": 100}, "notes": {"type": "string", "description": "For create: event notes", "maxLength": 500}, "location": {"type": "string", "description": "For create: event location", "maxLength": 200}, "confirmed": {"type": "boolean", "description": "Required for create actions after the caller explicitly confirms the booking details."}}, "required": ["action"]}}}}
---
# Calendar Skill
Query the operator's calendar for availability and create new entries via `ical-query`.
## Capabilities
- **read**: Check free/busy availability for today, tomorrow, this week, or a specific date
- **act**: Create new calendar entries (explicit confirmation required)
## Privacy Rule
**Event details are never disclosed to callers.** This is enforced at two levels:
1. **Handler level** — the handler strips all event titles, names, locations, and notes from ical-query output before returning results. Only busy time slots (start/end times) are returned.
2. **Model level** — the function description instructs Amber to only communicate availability ("free from 2pm to 4pm") and never reveal what the events are.
Amber should say things like:
- ✅ "The operator is free between 2 and 4 this afternoon"
- ✅ "They're busy until 3pm, then free for the rest of the day"
- ❌ "They have a meamber-skills/crm/SKILL.md
---
name: crm
version: 1.0.0
description: "Local contact memory and interaction log for operator-reviewed phone follow-up"
metadata: {"amber": {"capabilities": ["read", "act"], "confirmation_required": false, "timeout_ms": 3000, "permissions": {"local_binaries": [], "telegram": false, "openclaw_action": false, "network": false}, "function_schema": {"name": "crm", "description": "Manage local contacts and interaction history for operator-reviewed phone follow-up. Use lookup_contact at the start of inbound calls (automatic, using caller ID) to check if the caller is known and retrieve relevant operator-approved context. Use upsert_contact to save caller-volunteered contact details (name, email, company) when appropriate under the operator's caller notice/consent policy. Use log_interaction at the end of every call to record what happened (summary, outcome). Use context_notes for concise, relevant follow-up context; avoid sensitive, intimate, or unnecessary personal details. Do not ask robotic CRM questions; capture only details naturally relevant to the call purpose and retention policy.", "parameters": {"type": "object", "properties": {"action": {"type": "string", "enum": ["lookup_contact", "upsert_contact", "log_interaction", "get_history", "search_contacts", "tag_contact"], "description": "The CRM action to perform"}, "phone": {"type": "string", "description": "Contact phone number in E.164 format (e.g. +14165551234)", "pattern": "^\\+[1-9]\\d{6,14}$|^$"}, "name": {"type": "string", "maxLength": 200}, "email": {"type": "string", "maxLength": 200}, "company": {"type": "string", "maxLength": 200}, "context_notes": {"type": "string", "maxLength": 1000, "description": "Concise operator-reviewed follow-up context. Avoid sensitive, intimate, or unnecessary personal details."}, "summary": {"type": "string", "maxLength": 500, "description": "One-liner: what the call was about"}, "outcome": {"type": "string", "enum": ["message_left", "appointment_booked", "info_provided", "callback_requested", "transferred", "other"], "description": "Call outcome"}, "details": {"type": "object", "description": "Structured extras as key-value pairs (e.g. appointment_date, purpose)"}, "query": {"type": "string", "maxLength": 200}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 10}, "add": {"type": "array", "items": {"type": "string", "maxLength": 50}, "maxItems": 10}, "remove": {"type": "array", "items": {"type": "string", "maxLength": 50}, "maxItems": 10}}, "required": ["action"]}}}}
---
# CRM Skill — Contact Memory for Voice Calls
Stores local, operator-reviewed caller context and interaction history for phone follow-up.
## How It Works
### On Every Inbound Call
1. **Lookup** — Call `crm` with `lookup_contact` using the caller's phone number (from Twilio caller ID) only under the operator's caller notice/consent and retention policy.
2. **If known** — Greet by name and use `context_notes` only when relevant to the call purpose. Avoid surprisingamber-skills/send-message/SKILL.md
---
name: send-message
version: 1.0.0
description: "Leave a message for the operator — saved to call log and delivered via the operator's preferred messaging channel"
metadata: {"amber": {"capabilities": ["act"], "confirmation_required": true, "confirmation_prompt": "Would you like me to leave that message?", "timeout_ms": 5000, "permissions": {"local_binaries": [], "telegram": true, "openclaw_action": true, "network": false}, "function_schema": {"name": "send_message", "description": "Leave a message for the operator. The message will be saved to the call log and sent to the operator via their messaging channel. IMPORTANT: Always confirm with the caller before calling this function — ask 'Would you like me to leave that message?' and only proceed after they confirm.", "parameters": {"type": "object", "properties": {"message": {"type": "string", "description": "The caller's message to leave for the operator", "maxLength": 1000}, "caller_name": {"type": "string", "description": "The caller's name if they provided it", "maxLength": 100}, "callback_number": {"type": "string", "description": "A callback number if the caller provided one", "maxLength": 30}, "urgency": {"type": "string", "enum": ["normal", "urgent"], "description": "Whether the caller indicated this is urgent"}, "confirmed": {"type": "boolean", "description": "Must be true — only set after the caller has explicitly confirmed their message and given permission to send it. The router will reject this call if confirmed is not true."}}, "required": ["message", "confirmed"]}}}}
---
# Send Message
Allows callers to leave a message for the operator. This skill implements the
"leave a message" pattern that is standard in phone-based assistants.
## Flow
1. Caller indicates they want to leave a message
2. Amber confirms: "Would you like me to leave that message?"
3. On confirmation, the message is:
- **Always** saved to the call log first (audit trail)
- **Then** delivered to the operator via their configured messaging channel
## Security
- The recipient is determined by the operator's configuration — never by caller input
- No parameter in the schema accepts a destination or recipient
- Confirmation is required before sending (enforced programmatically at the router layer — the router checks `params.confirmed === true` before invoking; LLM prompt guidance is an additional layer, not the sole enforcement)
- Message content is sanitized (max length, control characters stripped)
## Delivery Failure Handling
- If messaging delivery fails, the call log entry is marked with `delivery_failed`
- The operator's assistant can check for undelivered messages during heartbeat checks
- Amber tells the caller "I've noted your message" — never promises a specific delivery channelpackaging/cowork/skills/calendar/SKILL.md
---
name: calendar
description: >
Check availability and create calendar entries. Used during calls to
book appointments and check schedule conflicts. Use when the user or
a caller needs to schedule something or check availability.
---
# Calendar
Query and manage the operator's calendar during or outside of calls.
## MCP Tools
### calendar_query
Look up or create calendar events.
- `action` (string, required): "lookup" or "create"
- `query` (string, required for lookup): Natural language query (e.g., "am I free Tuesday at 3pm?")
- `title` (string, required for create): Event title
- `start` (string, required for create): Start time (ISO 8601)
- `end` (string, required for create): End time (ISO 8601)
- `calendar` (string): Which calendar to use (defaults to operator's primary)
- `location` (string): Event location
- `notes` (string): Event notes
## Guidelines
- When checking availability during a call, present options naturally ("I see an opening at 2pm and 4pm — which works better?")
- Always confirm the final date, time, and details before creating an event
- Include only the minimum scheduling context needed in event notes (for example, requester name and appointment purpose).
- Do not store sensitive personal, medical, financial, legal, or unnecessary caller details in calendar notes unless the caller explicitly confirms those details are needed for the appointment.packaging/cowork/skills/call-screening/SKILL.md
--- name: call-screening description: > Screen incoming phone calls with an AI receptionist. Amber answers calls, identifies the caller, determines the purpose, takes a message, and delivers a structured summary. Use when the user wants to set up call screening, check screened call results, or customize screening behavior. --- # Call Screening Amber acts as an AI receptionist for inbound calls. She answers professionally, gathers information, and delivers structured summaries — so you only pick up calls that matter. Privacy: screening can process caller audio/metadata through your configured providers and may produce local transcripts/summaries. Configure caller notice/consent, retention, and access controls before production use. ## Screening Flow 1. **Greeting** — Amber answers with a customizable greeting 2. **Identification** — Asks who's calling and what it's regarding 3. **Information gathering** — Collects caller name, callback number, message 4. **CRM lookup** — Checks if the caller is a known contact (auto-enriches context) 5. **Calendar check** — If the caller wants to book time, checks availability 6. **Summary delivery** — Sends a structured summary with all captured details ## MCP Tools ### start_screening Enable inbound call screening on the configured Twilio number. ### stop_screening Disable screening (calls ring through normally). ### get_screening_status Check whether screening is currently active. ## Customization The screening personality, greeting, and behavior are defined in AGENT.md. Users can edit this file to: - Change the assistant's name and personality - Customize the greeting message - Set business hours and after-hours behavior - Define which callers should be put through vs. screened - Add organization-specific context (company name, services, etc.)
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/batthis/skills/amber-phone-agent",
"sourceUrl": "https://clawhub.ai/batthis/skills/amber-phone-agent",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T04:23:34.821Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-batthis-amber-phone-agent/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-batthis-amber-phone-agent/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-09T04:23:34.821Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "5.1K downloads",
"href": "https://clawhub.ai/batthis/amber-phone-agent",
"sourceUrl": "https://clawhub.ai/batthis/amber-phone-agent",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T04:23:34.821Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "5.5.50",
"href": "https://clawhub.ai/batthis/amber-phone-agent",
"sourceUrl": "https://clawhub.ai/batthis/amber-phone-agent",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-08-24T01:45:41.314Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-batthis-amber-phone-agent/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-batthis-amber-phone-agent/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 5.5.50",
"description": "Sharpen ClawHub positioning around giving agents a phone number and completing real phone tasks.",
"href": "https://clawhub.ai/batthis/amber-phone-agent",
"sourceUrl": "https://clawhub.ai/batthis/amber-phone-agent",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-08-24T01:45:41.314Z",
"isPublic": true
}
]
}Record generated Oct 9, 2026.
