MCP Tools Reference
All tools are called via the MCP protocol over SSE transport. Each tool requires authentication unless running in demo mode.
Gendered Languages
Languages like Hebrew, Arabic, French, Spanish, Portuguese, Italian, German, Russian, Polish, and Hindi conjugate verbs and adjectives by gender. For these languages:
- Agent gender (
agentGender) — set during provisioning (male/female/neutral). Determines how the AI refers to itself. - Target gender (
targetGender) — set per-interaction on outbound tools (male/female/unknown). Determines how the AI addresses the recipient.
For voice calls, gender conjugation instructions are automatically appended to the system prompt. For text messages, gender context is returned as metadata in the response so your AI can conjugate correctly.
Non-gendered languages (English, Chinese, Japanese, etc.) are unaffected — the gender parameters are accepted but produce no instructions.
comms_ping
Health check and connectivity test.
| Parameter | Type | Required | Description |
|---|---|---|---|
message | string | No | Echo message |
{
"status": "ok",
"server": "agentos-comms",
"echo": "hello",
"pool": { "maxAgents": 5, "activeAgents": 1, "slotsRemaining": 4 },
"providers": { "telephony": "twilio", "email": "resend", "tts": "edge-tts" }
}
comms_send_message
Send SMS, email, or WhatsApp message.
| Parameter | Type | Required | Description |
|---|---|---|---|
agentId | string | No | Auto-detected from agent token |
to | string | Yes | Recipient (E.164 phone or email) |
body | string | Yes | Message text |
channel | enum | No | sms, email, whatsapp, or line (default: sms) |
subject | string | No | Email subject (required for email) |
html | string | No | HTML body for email |
templateId | string | No | WhatsApp template SID |
templateVars | object | No | Template variables |
targetGender | enum | No | male, female, or unknown — gender of the message recipient. Used for gendered languages (Hebrew, Arabic, French, etc.). Returns gender context metadata in the response so your AI can conjugate correctly. |
{
"success": true,
"messageId": "uuid",
"externalId": "SMxxxxxx",
"status": "queued",
"cost": 0.0075,
"channel": "sms",
"from": "+15551234567",
"to": "+15559876543",
"genderContext": { "agentGender": "male", "targetGender": "female" }
}
Compliance checks: Content filter, DNC list, TCPA time-of-day, CAN-SPAM (email).
comms_make_call
Initiate an outbound AI voice call.
| Parameter | Type | Required | Description |
|---|---|---|---|
agentId | string | No | Auto-detected from agent token |
to | string | Yes | Phone number in E.164 format |
systemPrompt | string | No | AI instructions for this call |
greeting | string | No | First thing the AI says |
voice | string | No | TTS voice ID |
language | string | No | Language code (e.g. en-US) |
targetGender | enum | No | male, female, or unknown — gender of the call recipient. For gendered languages, gender conjugation instructions are automatically appended to the system prompt. |
recipientTimezone | string | No | IANA timezone (e.g. America/New_York). Auto-detected from phone prefix if omitted |
{
"success": true,
"callSid": "CAxxxxxx",
"sessionId": "uuid",
"status": "queued",
"from": "+15551234567",
"to": "+15559876543"
}
comms_send_voice_message
Generate TTS audio and deliver via phone call.
| Parameter | Type | Required | Description |
|---|---|---|---|
agentId | string | No | Auto-detected from agent token |
to | string | Yes | Phone number in E.164 |
text | string | Yes | Text to speak |
voice | string | No | TTS voice ID |
targetGender | enum | No | male, female, or unknown — gender of the call recipient |
comms_get_waiting_messages
Fetch messages that couldn't be delivered while your agent was offline (dead letters). Fetching automatically acknowledges them — no separate step needed.
| Parameter | Type | Required | Description |
|---|---|---|---|
agentId | string | Yes | Agent ID |
{
"success": true,
"messages": [
{
"id": 1,
"channel": "sms",
"direction": "inbound",
"from": "+15559876543",
"to": "+15551234567",
"body": "Are you there?",
"reason": "agent_offline",
"createdAt": "2026-02-22T10:00:00Z"
}
],
"count": 1
}
Dead letters are stored when: agent is offline (inbound), send fails (outbound), or provider errors. Acknowledged messages are auto-purged after 7 days.
comms_transfer_call
Transfer a live voice call to a human or another agent.
| Parameter | Type | Required | Description |
|---|---|---|---|
agentId | string | No | Auto-detected from agent token |
callSid | string | Yes | Active call SID |
to | string | Yes | Destination phone or agent ID |
announcementText | string | No | Text to say before transfer |
comms_call_on_behalf
Secretary call — calls someone on your behalf. An AI asks if they're available, and if yes, bridges you into the call.
| Parameter | Type | Required | Description |
|---|---|---|---|
agentId | string | No | Auto-detected from agent token |
target | string | Yes | Phone number to call (E.164) |
requesterPhone | string | Yes | Your phone number — where to bridge if they say yes |
targetName | string | No | Name of the person being called |
requesterName | string | No | Your name |
message | string | No | Reason for the call |
targetGender | enum | No | male, female, or unknown — gender of the person being called |
recipientTimezone | string | No | IANA timezone. Auto-detected from phone prefix if omitted |
comms_bridge_call
Manage call bridges — route inbound local calls to outbound local numbers via VoIP.
| Parameter | Type | Required | Description |
|---|---|---|---|
action | enum | Yes | setup, remove, list, or call |
fromNumber | string | No | (setup) Caller ID to match, or * for any |
localNumber | string | No | (setup) Twilio number that receives the call |
destinationNumber | string | No | (setup/call) Number to dial outbound |
label | string | No | (setup) Human-readable label |
bridgeId | string | No | (remove/call) Bridge route ID |
callerNumber | string | No | (call) Number to call first |
comms_send_otp
Send a one-time verification code via SMS, email, or WhatsApp. Code expires in 5 minutes.
| Parameter | Type | Required | Description |
|---|---|---|---|
agentId | string | No | Auto-detected from agent token |
to | string | Yes | Recipient (phone E.164 or email) |
channel | enum | Yes | sms, email, or whatsapp |
purpose | string | No | Description like "account verification" |
comms_verify_otp
Verify a one-time code. Returns whether the code is valid.
| Parameter | Type | Required | Description |
|---|---|---|---|
agentId | string | No | Auto-detected from agent token |
contactAddress | string | Yes | Phone or email that received the code |
code | string | Yes | The 6-digit code to verify |
comms_record_consent
Record that a contact has given consent to be contacted on a channel.
| Parameter | Type | Required | Description |
|---|---|---|---|
agentId | string | No | Auto-detected from agent token |
contactAddress | string | Yes | Phone number or email |
channel | enum | Yes | sms, voice, email, or whatsapp |
consentType | enum | No | express, implied, or transactional (default: express) |
source | string | No | How consent was obtained (web_form, verbal, etc.) |
comms_revoke_consent
Revoke a contact's consent on a channel. No further outbound allowed.
| Parameter | Type | Required | Description |
|---|---|---|---|
agentId | string | No | Auto-detected from agent token |
contactAddress | string | Yes | Phone number or email |
channel | enum | Yes | sms, voice, email, or whatsapp |
comms_check_consent
Check whether a contact has granted consent on a channel.
| Parameter | Type | Required | Description |
|---|---|---|---|
agentId | string | No | Auto-detected from agent token |
contactAddress | string | Yes | Phone number or email |
channel | enum | Yes | sms, voice, email, or whatsapp |
comms_expand_agent_pool
Resize the agent pool. Admin only.
| Parameter | Type | Required | Description |
|---|---|---|---|
maxAgents | number | Yes | New maximum agent count (1–10000) |
comms_provision_channels
Provision phone/SMS/WhatsApp/email/voice for a new agent.
| Parameter | Type | Required | Description |
|---|---|---|---|
agentId | string | Yes | Agent ID to provision |
displayName | string | Yes | Display name |
capabilities | array | Yes | Channels: sms, voice, whatsapp, email, line |
country | string | No | Country code for phone number |
emailDomain | string | No | Custom email domain |
agentGender | enum | No | male, female, or neutral (default: male). Used for gendered languages — the agent's grammatical gender when speaking/writing in Hebrew, Arabic, French, Spanish, etc. |
comms_deprovision_channels
Tear down all channels for an agent. Releases phone number and WhatsApp pool slot.
| Parameter | Type | Required | Description |
|---|---|---|---|
agentId | string | Yes | Agent ID to deprovision |
comms_get_channel_status
Check provisioning and health status of all channels for an agent.
comms_onboard_customer
*Enterprise/SaaS edition only.*
Full automated onboarding: provisions all channels, generates DNS records, returns setup package.
| Parameter | Type | Required | Description |
|---|---|---|---|
agentId | string | Yes | Agent ID |
displayName | string | Yes | Display name |
capabilities | array | Yes | Channels to provision |
emailDomain | string | No | Custom email domain |
greeting | string | No | Voice greeting |
systemPrompt | string | No | Voice system prompt |
comms_register_provider
Register or update third-party provider credentials. Admin only.
| Parameter | Type | Required | Description |
|---|---|---|---|
provider | enum | Yes | twilio, vonage, resend, elevenlabs, openai, deepgram, s3, r2, turso, convex |
credentials | object | Yes | Provider-specific credential fields |
verify | boolean | No | Test before saving (default: true) |
comms_set_agent_limits
Configure rate limits and spending caps. Admin only.
| Parameter | Type | Required | Description |
|---|---|---|---|
agentId | string | Yes | Agent ID to configure |
limits.maxActionsPerMinute | number | No | Per-minute burst limit |
limits.maxActionsPerHour | number | No | Hourly limit |
limits.maxActionsPerDay | number | No | Daily limit |
limits.maxSpendPerDay | number | No | Daily spending cap |
limits.maxSpendPerMonth | number | No | Monthly spending cap |
comms_get_usage_dashboard
Usage statistics, costs, and rate limits per agent.
| Parameter | Type | Required | Description |
|---|---|---|---|
agentId | string | No | Specific agent (omit for all, admin only) |
period | enum | No | today, week, month, or all |
comms_get_billing_summary
*Enterprise/SaaS edition only.*
Billing summary with provider costs, markup, and billed costs.
comms_set_billing_config
*Enterprise/SaaS edition only.*
Set billing tier, markup, and billing email. Admin only.
| Tier | Actions/min | Actions/day | Spend/month |
|---|---|---|---|
| Free | 5 | 100 | $10 |
| Starter | 10 | 500 | $100 |
| Pro | 30 | 5,000 | $1,000 |
| Enterprise | 100 | 50,000 | $50,000 |