@omnidim-ai/mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OMNIDIM_API_KEY | Yes | Your OmniDimension API key. Get one at https://omnidim.io/api-management |
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 | {} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| createSessionA | Create a voice Session: a short-lived, single-conversation
reservation that lets a client hold a live voice chat with your
agent. This is step 1 of 2. Creating the Session does not start any
audio on its own; it returns a Call this endpoint from your server with your API key, and return
only the (Tags: Sessions) |
| listAgentsA | Retrieve all agents for the authenticated user with pagination support. (Tags: Agents) |
| createAgentA | Create a new agent with the provided configuration. The full config supports transcriber, model, voice, web search, transfer, end-call conditions, post-call actions (email + webhook), ambient background track, initial ringing sound, and multilingual support.
(Tags: Agents) |
| getAgentA | Get details of a specific agent by ID. The response also includes a |
| updateAgentA | Update an existing agent. Send only the fields you want to change.
|
| deleteAgentA | Permanently delete an agent. (Tags: Agents) |
| listAgentVersionsA | List an agent's saved versions, newest first. Includes manual (named) versions, automatic versions, and system backups taken before a restore. (Tags: Agents) |
| createAgentVersionB | Save the agent's current configuration as a named version. (Tags: Agents) |
| deleteAgentVersionB | Delete a saved version. (Tags: Agents) |
| renameAgentVersionA | Rename a saved version or edit its note. Version history is immutable otherwise; only the name and note can change. (Tags: Agents) |
| diffAgentVersionA | Get a record-level diff for this version. By default it shows what changed in this version compared with the version before it. Use |
| restoreAgentVersionA | Restore a version onto the live agent. Your current setup is saved first as a backup version, so restoring is undoable. Configuration is brought back; any knowledge files or integrations that were deleted since this version was saved can't be re-linked, and are reported in |
| dispatchCallB | Initiate a call to a phone number using a specified agent. The phone number must include a country code with a leading plus. (Tags: Calls) |
| listCallLogsC | Retrieve call logs with pagination and optional filtering. (Tags: Calls) |
| getCallLogA | Detailed information about a specific call (duration, status, transcript, sentiment, extracted variables). (Tags: Calls) |
| fetchBulkCallsA | List bulk-call campaigns with pagination and optional status filter. (Tags: Bulk calls) |
| createBulkCallA | Create a new bulk-call campaign. Only name, phone_number_id and a contact_list are needed to dial a list now; every other field adds one behaviour on top (drafts, rotation, filtering, scheduling, retries, dynamic feeding). The guide below the field reference walks the whole journey: the first campaign and its response, each behaviour with a working request, every refusal message with its fix, and the endpoints that operate a campaign once it runs. (Tags: Bulk calls) |
| addBulkCallContactA | Push a single contact into a dynamic bulk-call campaign in real time. Dynamic campaigns are created from the dashboard (Bulk Call
(Tags: Bulk calls) |
| getBulkCallA | Get detailed information about a bulk-call campaign. (Tags: Bulk calls) |
| bulkCallActionsA | Pause, resume, or reschedule a running campaign. (Tags: Bulk calls) |
| cancelBulkCallB | Cancel a bulk-call campaign. (Tags: Bulk calls) |
| listBulkCallLinesA | Per-contact results for a campaign: what happened on each call, the variables you sent with that contact, and a pointer to the recording. PagingThere is one rule. Call it with no Each call returns a page of rows, oldest first: Transcripts are not in the rowEach row carries (Tags: Bulk calls) |
| listBulkCallNumbersA | The campaign's number pool, and which number is dialing right now.
(Tags: Bulk calls) |
| addBulkCallNumberA | Add one of your numbers to the campaign's rotation pool. Works while the campaign is running, which is how you bring in a fresh number when the pool is running out of healthy ones. The number must belong to you and must not already be in the pool. A number with no agent attached gets this campaign's agent attached automatically; a number attached to a different agent is refused. (Tags: Bulk calls) |
| setBulkCallNumberActiveA | Stop or resume dialing from one number in the pool. Pausing is what you want when a number starts going bad mid-campaign: dialing moves to the next number in sequence and the paused number keeps its history and counters. The last active number of a running campaign cannot be paused, since the campaign would have nothing to dial from. Send the state you want rather than a toggle, so retrying the same request is harmless.
(Tags: Bulk calls) |
| addBulkCallContactsA | Add up to 1000 contacts to a campaign in one request. This is the batch form of Add contact to dynamic campaign. Prefer it whenever you have more than a handful: one request of 500 contacts is far cheaper than 500 requests, on your side and ours. Repeated numbers are kept, not merged. If the same number appears twice with different variables, it is called twice, because two rows for one number usually means two real reasons to call. Rows that fail validation are reported in (Tags: Bulk calls) |
| startBulkCallA | Start a campaign that was created with Drafts let you build a campaign over several requests: create it, add contacts in batches, set the number pool, set concurrency, then start when everything is in place. A campaign that is already running, scheduled, or finished cannot be started. (Tags: Bulk calls) |
| setBulkCallConcurrencyA | Change how many calls the campaign places at once, including while it is running. Raise it to finish sooner, lower it if your team cannot keep up with transfers or your numbers are being answered less. The ceiling is your account's concurrency limit. (Tags: Bulk calls) |
| retryBulkCallA | Re-queue contacts that did not connect, without creating a new campaign. Use it after a campaign finishes with more no-answers than you expected, or when the reason was on your side (a bad window, a number that was having a bad day). Retried contacts keep their original variables. (Tags: Bulk calls) |
| setBulkCallDailyTimeControlA | Restrict a campaign to a daily calling window, in the campaign's timezone. Outside the window the campaign holds rather than finishing, and resumes the next day. (Tags: Bulk calls) |
| getBulkCallLiveStatusA | Real-time status of a running bulk-call campaign. (Tags: Bulk calls) |
| listKnowledgeBaseFilesA | List all knowledge-base files for the authenticated user. (Tags: Knowledge base) |
| canUploadFileA | Check whether a file can be uploaded based on size and type. (Tags: Knowledge base) |
| uploadKnowledgeBaseFileC | Upload a PDF file. The file content must be Base64 encoded. (Tags: Knowledge base) |
| attachKnowledgeBaseFilesB | Attach multiple knowledge-base files to an agent. (Tags: Knowledge base) |
| detachKnowledgeBaseFilesA | Detach multiple knowledge-base files from an agent. (Tags: Knowledge base) |
| deleteKnowledgeBaseFileA | Permanently delete a file. Removes it from any attached agents. Cannot be undone. (Tags: Knowledge base) |
| listPhoneNumbersA | Retrieve the phone numbers on your account, whether you bought them from the OmniDimension number shop or imported your own. (Tags: Phone numbers) |
| searchPhoneNumbersA | Search the OmniDimension number shop for phone numbers available to buy
in a region. Price and validity are flat per region, so every result
shows the same A region can have more than one carrier, each stocking different
number series. Pass the (Tags: Phone numbers) |
| purchasePhoneNumberA | Buy a phone number from the OmniDimension number shop. The monthly rental comes out of your wallet and the number is added to your account, ready to attach to an agent. (Tags: Phone numbers) |
| releasePhoneNumberA | Give up a phone number and stop its rental, so it is not charged at the next renewal. Only a number currently allocated to the account can be released. (Tags: Phone numbers) |
| attachPhoneNumberA | Attach an account-owned phone number to an existing agent. (Tags: Phone numbers) |
| detachPhoneNumberB | Detach a phone number from its associated agent. (Tags: Phone numbers) |
| importTwilioNumberA | Import an existing Twilio number by providing your Twilio credentials. (Tags: Phone numbers) |
| importExotelNumberA | Import an Exotel number by providing your Exotel credentials. (Tags: Phone numbers) |
| importSipTrunkC | Import a phone number associated with a SIP trunk. (Tags: Phone numbers) |
| listLLMProvidersA | Retrieve all available Large Language Model providers. (Tags: Providers) |
| listVoicesA | Retrieve voices with filtering and pagination support. ElevenLabs supports advanced filtering by name, language, accent, and gender. Other providers support basic pagination only. (Tags: Providers) |
| listSTTProvidersB | Retrieve all Speech-to-Text providers. (Tags: Providers) |
| listTTSProvidersA | Retrieve all Text-to-Speech providers. (Tags: Providers) |
| listAllProvidersC | Comprehensive response with services and voices in one payload. (Tags: Providers) |
| getVoiceB | Detailed metadata for a specific voice. (Tags: Providers) |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| provision_agent | Create a working voice agent end to end: configure it, give it a number, and verify it can place a call and speak. |
| audit_calls | Review and summarize call logs: find failures, inspect transcripts and sentiment, or audit a specific agent or campaign. |
| build_outbound_campaign | Set up and launch a bulk-call campaign safely: draft it, batch the contacts in, size concurrency from the numbers, check calling hours, then start and watch it. |
| restore_agent_version | Safely roll an agent back to an earlier saved version: find the right snapshot, preview exactly what restoring changes, then restore. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| OmniDimension routing guide | Which tool to call when, ID flow between calls, and the non-obvious rules proven against the live API. |
| Recommended provider stacks by language | Which transcriber (STT), voice (TTS), and language model to choose, grouped by the caller's language. Reflects what works in production. |
| Choosing a voice | How to pick a voice from listVoices (use the name as voice_id), per-provider notes, and the verify-on-a-test-call rule. |
| Which carrier to buy from | What each region's carriers stock, why `carrier` is required on search and purchase, and the ask-do-not-pick rule. The only place an agent on this server can learn a carrier value. |
| Building an agent with createAgent | The createAgent field shape with two complete, copy-ready example configurations (Indian-English support, Hindi/Hinglish reminder). |
| Running outbound campaigns | The campaign lifecycle end to end: draft, batch contacts (two contact shapes, do not mix), rotation, concurrency arithmetic, the agent-timezone trap, cursor-paged results. |
| Agent version history | How to save, diff, and restore agent config snapshots: which tool to call, what the diff `against` modes mean, how to decide on a restore, and the 403/409 gotchas. |
TDQS
Scored across 52 tools
Each tool targets a distinct resource and action pair: bulk calls, phone numbers, agents, providers, and knowledge files are clearly separated. Even close tools like listLLMProviders vs listSTTProviders vs listTTSProviders vs listAllProviders are differentiated by their explicit service scope. No two tools appear to be duplicates.
The vast majority of tools follow a predictable camelCase verb + noun pattern (createAgent, listPhoneNumbers, deleteKnowledgeBaseFile). Minor deviations exist such as bulkCallActions, which is a noun-style name rather than a verb + noun, and fetchBulkCalls vs the more common list* verb family. Overall naming is consistent and readable.
With 52 tools, this is a very large surface area, well above the 25+ threshold for a 'too many' rating. Although the domains are logically grouped, the sheer number makes it harder for agents to scan and select, and some bulk-control tools could arguably be consolidated into fewer—though still functional—endpoints.
The tool surface covers full CRUD lifecycles for agents, agent versions, phone numbers, knowledge-base files, and bulk-call campaigns, plus call logs and provider listing. Minor gaps exist, such as no explicit end-session or session retrieval beyond creation, and no file-content retrieval for knowledge-base files, but there are no dead-end workflows that would stop an agent.