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:

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.

ParameterTypeRequiredDescription
messagestringNoEcho message
{

"status": "ok",

"server": "agentos-comms",

"echo": "hello",

"pool": { "maxClients": 5, "activeClients": 1, "slotsRemaining": 4 },

"providers": { "telephony": "twilio", "email": "resend", "tts": "edge-tts" }

}

comms_send_message

Send SMS, email, or WhatsApp message.

ParameterTypeRequiredDescription
clientIdstringNoAuto-detected from client token
tostringYesRecipient (E.164 phone or email)
bodystringNoMessage text (required unless media is provided)
channelenumNosms, email, whatsapp, or line (default: sms)
subjectstringNoEmail subject (required for email)
htmlstringNoHTML body for email
mediastring[]NoMedia URLs to attach. WhatsApp: one message per file (body sent as caption). Email: fetched and attached. SMS: first URL sent as MMS.
templateIdstringNoWhatsApp template SID
templateVarsobjectNoTemplate variables
targetGenderenumNomale, 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.
{

"type": "status",

"status": "accepted",

"messageId": "uuid",

"channel": "sms",

"to": "+15559876543"

}

After sending, delivery status updates (sent, delivered, failed) are POSTed to your callbackUrl.

Compliance checks: Content filter, DNC list, TCPA time-of-day, CAN-SPAM (email).


comms_make_call

Initiate an outbound AI voice call.

ParameterTypeRequiredDescription
clientIdstringNoAuto-detected from client token
tostringYesPhone number in E.164 format
systemPromptstringNoAI instructions for this call
greetingstringNoFirst thing the AI says
voicestringNoTTS voice ID
languagestringNoLanguage code (e.g. en-US)
targetGenderenumNomale, female, or unknown — gender of the call recipient. For gendered languages, gender conjugation instructions are automatically appended to the system prompt.
recipientTimezonestringNoIANA 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.

ParameterTypeRequiredDescription
clientIdstringNoAuto-detected from client token
tostringYesPhone number in E.164
textstringYesText to speak
voicestringNoTTS voice ID
targetGenderenumNomale, female, or unknown — gender of the call recipient

comms_get_waiting_messages

Fetch messages that couldn't be delivered while your client was offline (dead letters). Fetching automatically acknowledges them — no separate step needed.

ParameterTypeRequiredDescription
clientIdstringYesClient ID
{

"success": true,

"messages": [

{

"id": 1,

"channel": "sms",

"direction": "inbound",

"from": "+15559876543",

"to": "+15551234567",

"body": "Are you there?",

"reason": "callback_failed",

"createdAt": "2026-02-22T10:00:00Z"

}

],

"count": 1

}

Dead letters are stored when: client 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 client.

ParameterTypeRequiredDescription
clientIdstringNoAuto-detected from client token
callSidstringYesActive call SID
tostringYesDestination phone or client ID
announcementTextstringNoText 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.

ParameterTypeRequiredDescription
clientIdstringNoAuto-detected from client token
targetstringYesPhone number to call (E.164)
requesterPhonestringYesYour phone number — where to bridge if they say yes
targetNamestringNoName of the person being called
requesterNamestringNoYour name
messagestringNoReason for the call
targetGenderenumNomale, female, or unknown — gender of the person being called
recipientTimezonestringNoIANA timezone. Auto-detected from phone prefix if omitted

comms_bridge_call

Manage call bridges — route inbound local calls to outbound local numbers via VoIP.

ParameterTypeRequiredDescription
actionenumYessetup, remove, list, or call
fromNumberstringNo(setup) Caller ID to match, or * for any
localNumberstringNo(setup) Twilio number that receives the call
destinationNumberstringNo(setup/call) Number to dial outbound
labelstringNo(setup) Human-readable label
bridgeIdstringNo(remove/call) Bridge route ID
callerNumberstringNo(call) Number to call first

comms_send_otp

Send a one-time verification code via SMS, email, or WhatsApp. Code expires in 5 minutes.

ParameterTypeRequiredDescription
clientIdstringNoAuto-detected from client token
tostringYesRecipient (phone E.164 or email)
channelenumYessms, email, or whatsapp
purposestringNoDescription like "account verification"

comms_verify_otp

Verify a one-time code. Returns whether the code is valid.

ParameterTypeRequiredDescription
clientIdstringNoAuto-detected from client token
contactAddressstringYesPhone or email that received the code
codestringYesThe 6-digit code to verify

comms_record_consent

Record that a contact has given consent to be contacted on a channel.

ParameterTypeRequiredDescription
clientIdstringNoAuto-detected from client token
contactAddressstringYesPhone number or email
channelenumYessms, voice, email, or whatsapp
consentTypeenumNoexpress, implied, or transactional (default: express)
sourcestringNoHow consent was obtained (web_form, verbal, etc.)

comms_revoke_consent

Revoke a contact's consent on a channel. No further outbound allowed.

ParameterTypeRequiredDescription
clientIdstringNoAuto-detected from client token
contactAddressstringYesPhone number or email
channelenumYessms, voice, email, or whatsapp

comms_check_consent

Check whether a contact has granted consent on a channel.

ParameterTypeRequiredDescription
clientIdstringNoAuto-detected from client token
contactAddressstringYesPhone number or email
channelenumYessms, voice, email, or whatsapp

comms_expand_client_pool

Resize the client pool. Admin only.

ParameterTypeRequiredDescription
maxClientsnumberYesNew maximum client count (1–10000)

comms_provision_channels

Provision phone/SMS/WhatsApp/email/voice for a new client.

ParameterTypeRequiredDescription
clientIdstringYesClient ID to provision
clientNamestringYesDisplay name
callbackUrlstringYesWebhook URL for inbound messages and delivery status
capabilitiesarrayYesChannels: sms, voice, whatsapp, email, line
countrystringNoCountry code for phone number
emailDomainstringNoCustom email domain
clientGenderenumNomale, female, or neutral (default: male). Used for gendered languages — the client's grammatical gender when speaking/writing in Hebrew, Arabic, French, Spanish, etc.

comms_deprovision_channels

Tear down all channels for a client. Releases phone number and WhatsApp pool slot.

ParameterTypeRequiredDescription
clientIdstringYesClient ID to deprovision

comms_get_channel_status

Check provisioning and health status of all channels for a client.


comms_onboard_customer

*Enterprise/SaaS edition only.*

Full automated onboarding: provisions all channels, generates DNS records, returns setup package.

ParameterTypeRequiredDescription
clientIdstringYesClient ID
clientNamestringYesDisplay name
capabilitiesarrayYesChannels to provision
emailDomainstringNoCustom email domain
greetingstringNoVoice greeting
systemPromptstringNoVoice system prompt

comms_register_provider

Register or update third-party provider credentials. Admin only.

ParameterTypeRequiredDescription
providerenumYestwilio, vonage, resend, elevenlabs, openai, deepgram, s3, r2, turso, convex
credentialsobjectYesProvider-specific credential fields
verifybooleanNoTest before saving (default: true)

comms_set_client_limits

Configure rate limits and spending caps. Admin only.

ParameterTypeRequiredDescription
clientIdstringYesClient ID to configure
limits.maxActionsPerMinutenumberNoPer-minute burst limit
limits.maxActionsPerHournumberNoHourly limit
limits.maxActionsPerDaynumberNoDaily limit
limits.maxSpendPerDaynumberNoDaily spending cap
limits.maxSpendPerMonthnumberNoMonthly spending cap

comms_get_usage_dashboard

Usage statistics, costs, and rate limits per client.

ParameterTypeRequiredDescription
clientIdstringNoSpecific client (omit for all, admin only)
periodenumNotoday, 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.

TierActions/minActions/daySpend/month
Free5100$10
Starter10500$100
Pro305,000$1,000
Enterprise10050,000$50,000
← Home