Voicent MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| VOICENT_PASSWORD | No | The gateway's Remote Connect Password, needed when the gateway isn't on this machine | |
| VOICENT_USERNAME | No | Login name, if `VOICENT_PASSWORD` is a user's password instead of the Remote Connect Password. In cloud-service mode, the account owner uses `admin`, not an email address | |
| VOICENT_ALLOW_CRM | No | `0` turns off the CRM tools. Default: on | on |
| VOICENT_FILE_ROOT | No | Folder that audio, import and export files must stay inside. File tools refuse to run without it | |
| VOICENT_ACCOUNT_ID | No | Account ID (`cc_card_id`), needed only for a gateway in cloud-service mode | |
| VOICENT_TIMEOUT_MS | No | Request timeout. Default: 30000 | 30000 |
| VOICENT_ALLOW_CALLS | No | `0` turns off single calls and texts. Default: on | on |
| VOICENT_GATEWAY_URL | No | Gateway address. Default: http://localhost:8155 | http://localhost:8155 |
| VOICENT_ALLOWED_NUMBERS | No | Limits single calls and texts to these comma-separated numbers. Default: any number | |
| VOICENT_ALLOW_CAMPAIGNS | No | `1` turns on campaigns and list imports |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| call_statusA | Check a call or text created earlier. Status is in_progress, made, failed, retry, pending, mixed, waitresponse, waitagent or expired. Each attempt also lists times, the confirmation result and any recording. Wait a few seconds between checks. |
| campaign_statusB | Get a campaign's status and counts: made, live, machine, noanswer, linebusy, failed, dnc, optout and others. |
| import_statusA | Check the progress of the current contact list import. Only the most recent import can be checked. |
| call_textB | Place a real phone call that speaks the given text using text-to-speech. Returns a request ID. |
| call_audioA | Place a real phone call that plays a WAV file (PCM 16-bit, 8 kHz, mono) inside the configured file folder. Returns a request ID. |
| call_ivrA | Place a real phone call that runs an outbound app deployed from Voicent IVR Studio. Refuses a name that isn't deployed. Check call_status for the callee's responses. Returns a request ID. |
| send_smsB | Send a real text message to one phone number. Returns a request ID. |
| call_removeA | Delete a call or text record. If it hasn't been placed yet, this also cancels it. |
| crm_get_fieldA | Read one field of a customer, organization or potential record. There is no search: you need the record ID, or a customer's phone number or email. |
| crm_add_or_updateA | Add a record, or update the customer it matches. An existing customer is matched by record_id, or else by phone number and email in the fields, and duplicates can match the wrong record. Only empty values are filled unless overwrite is true. |
| crm_set_fieldA | Change one field of a customer, organization or potential record. This replaces the current value. DO_NOT_CALL and DO_NOT_EMAIL can be set to yes, but not cleared. |
| crm_add_noteB | Add a note to a customer, organization or potential record. |
| crm_schedule_callbackB | Schedule a callback for an agent to make, or update one you already have the ID for. This doesn't place a call. |
| crm_notify_agentA | Show a notification to an agent in the CRM. Plain text only. This doesn't contact a customer. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Tools are grouped into clear resource families (crm_*, call_*, *_status) and the three call placement tools are cleanly separated by medium (TTS, WAV, IVR app). The one soft boundary is crm_add_or_update (with overwrite) versus crm_set_field, since both can change an existing field value, but the descriptions largely disambiguate them.
Most tools follow a <group>_<object> pattern, and the crm_ family is consistently verb_noun (crm_get_field, crm_set_field, crm_add_note). However the call family flips ordering/noun-verb intent (call_status vs call_text/call_audio/call_ivr, plus campaign_status/import_status), so conventions are mixed though still readable.
14 tools sit comfortably in the well-scoped range and each maps to a distinct operation (field access, messaging, campaign/import monitoring, agent notifications). Nothing appears redundant or padding-like.
Core outbound actions and status checks are covered, but the surface has notable gaps: no CRM search or list (explicitly stated), no way to read more than one field at a time, no campaign creation/listing despite campaign_status, and DO_NOT_CALL/DO_NOT_EMAIL flags can be set but never cleared. Agents can work around some of these via record IDs, but discovery-heavy workflows will hit dead ends.