Skip to main content
Glama
ingalgi-krishna

Dunefox Voice MCP Server

Create a campaign (as a draft)

create_campaign

Launch outbound voice campaigns to a lead group or filter, assigning an agent and scheduling calls. Campaigns start as drafts until activated.

Instructions

Create an outbound campaign against a lead group or a filter. Starts as "draft" - call update_campaign with status:"running" to actually dial. Same trial block, concurrency cap and calling-hours narrowing as the dashboard. Needs the "campaigns" scope, and the workspace's campaigns entitlement.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
agentIdYesThe agent that places these calls.
targetTypeNo
concurrencyNoClamped to the plan's max concurrent calls.
leadGroupIdNoRequired unless targetType is "filter".
scheduledAtNoISO datetime. Leave out to start it manually instead.
retryEnabledNo
targetFilterNo
budgetCapCentsNo
callingWindowEndNo
maxRetryAttemptsNo
callingWindowStartNoHH:mm, narrowed into the legal hours for the workspace's market.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only declare openWorldHint=true and idempotentHint=false, so the description carries most of the burden — and it does: draft-only creation, no live dialing, trial block, concurrency cap, calling-hours narrowing, required 'campaigns' scope and a workspace entitlement. It does not say whether repeated calls with the same name duplicate campaigns (relevant given idempotentHint=false) or describe the response payload.

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

Conciseness5/5

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

Three compact sentences, front-loaded with the core action and the draft-state caveat first. Every clause carries information an agent needs; there is no filler.

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 12-parameter, nested-object mutation tool with no output schema and only thin annotations, the description covers the essential call flow (draft creation, promotion via update_campaign, auth scope) well. It falls short on several non-required parameters whose meaning lives nowhere, but the critical path is complete.

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 only 42% across 12 parameters, so the description must compensate and only partially does: it implies targetType/leadGroupId/targetFilter semantics via 'against a lead group or a filter', and reinforces the concurrency clamp and calling-hours narrowing. budgetCapCents, retryEnabled, maxRetryAttempts and targetFilter internals remain undocumented in both places.

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?

States a specific verb and resource ('Create an outbound campaign') plus the targeting source (lead group or filter). It also implicitly separates itself from the sibling write tool by naming update_campaign as the state-transition path, so an agent can distinguish create from update without opening schemas.

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

Usage Guidelines5/5

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

Gives explicit lifecycle guidance: the campaign is created as a draft and will not dial until update_campaign is called with status:"running". The alternative tool and the condition that selects it are both named, leaving nothing to inference.

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