Skip to main content
Glama

Create voice campaign

create_voice_campaign
Destructive

Create an AI voice campaign as a DRAFT: it places no call until it is launched. It is outbound and run by the AI agent of an AI phone line (voice_line_id). Give it its contacts in the same call: contact_rows (phone, name, variables the AI agent reads, optional fallback group and order), or contact_ids of existing contacts, or a label/segment audience (audience_type with audience). Send exactly one of them. Phone numbers are checked right away (a bad one refuses the whole call and says which rows); do-not-call numbers and duplicates are flagged afterwards and read in validation_summary. idempotency_key is required: reuse the same one when you retry, so no second campaign is made. The answer has the campaign id, which every other voice campaign tool takes, and contacts_import. Consent is not part of creating: it is attested when launching.

Input Schema

NameRequiredDescriptionDefault
titleYes
audienceNoWith audience_type label: {label_ids: [ids]}; with segment: {custom_filter_id: id}. The contacts are taken when the campaign launches.
timezoneNoIANA name, for example America/Bogota.
ai_settingsNoWhat the AI agent does in this campaign: opening (text per locale es/en), first_speaker (agent or caller), dispositions, extraction_fields, voicemail, hot_lead, ringing_seconds (15 to 60), variable_map. Read get_voice_campaign for the shape in use.
contact_idsNoIds of this account's contacts (their phone number is the one called), at most 2000.
descriptionNo
dialer_modeNoHow fast contacts are dialed (progressive by default).
contact_rowsNoThe people to call, at most 2000. Their phone numbers stay in this account; send each person once.
max_attemptsNoCalls to one contact before giving up.
scheduled_atNoWhen to start, in the future: YYYY-MM-DDTHH:MM in the campaign timezone, or with an offset. Launching a campaign that has one schedules it instead of starting it.
audience_typeNoOnly with audience, instead of contact_rows and contact_ids.
voice_line_idYesThe AI phone line that calls (its agent talks, its number shows).
calling_windowNoThe hours and days the campaign may call, in its timezone.
idempotency_keyYesAny unique text you make up for this request. Sending the same one again returns the campaign already created instead of making a second.
retry_delay_minsNoMinutes before the next attempt.
target_concurrency_limitNoCalls at the same time.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: drafts place no call, phones are validated synchronously and a bad row rejects the whole request, DNC/duplicate flags appear afterwards in validation_summary, and the response includes the campaign id used by every other voice campaign tool. The idempotency_key retry semantics sit in tension with idempotentHint=false, but the annotation is defensible (the tool is only safe to retry when the key is reused; a new key creates a second campaign), and the description resolves the ambiguity for the caller.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense paragraph, but front-loaded with the highest-value fact (DRAFT, no calls placed) and every sentence carries operational information. It runs long and would scan better as short clauses or bullets, which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter, nested-object tool with no output schema, the description covers the essentials: contact sourcing, sync vs. async validation, idempotency, and the return shape (campaign id + contacts_import). It leaves defaults and error payload format to the schema, which is acceptable, so only minor gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 88%, so the baseline is 3. The description does add real value the schema cannot express — the mutually exclusive one-of constraint across contact_rows / contact_ids / audience_type+audience, the retry contract for idempotency_key, and where validation results surface — but it stays at the baseline rather than explaining the 16-parameter surface in depth.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb + resource plus a critical scope qualifier: 'Create an AI voice campaign as a DRAFT: it places no call until it is launched.' This immediately separates it from launch_voice_campaign and test_call_voice_campaign in the sibling list, and names the owning entity (AI phone line, voice_line_id).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states contacts must be supplied in the same call and that exactly one of contact_rows / contact_ids / audience must be sent, which is the main source of misuse. It also clarifies that consent is not part of creation but is attested at launch. It does not name the launch/update siblings by name, so routing to the next step is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources