Skip to main content
Glama
Yasmine-Works

VoIPSense Maroc MCP Server

Inject a single lead

inject_lead
Idempotent

Adds a single contact to a VoIPSense call list by listId or listName, normalizing phone numbers to E.164. Skips existing numbers as duplicates or updates their fields when requested.

Instructions

POST /v1/leads (permission callcenter:write). Adds one contact to a list (by listId or listName). Idempotent: a number already in the list returns duplicate=true without creating a duplicate. Returns { id, phone, created, duplicate, listId, listNumber, listName, … }.

Input Schema

NameRequiredDescriptionDefault
cityNo
emailNo
phoneYesPhone number in any format (0612345678, +212612345678, 00212…). Normalized to E.164 at dial time.
listIdNoTarget list: UUID or the list number shown in the console (e.g. 101). Use listId OR listName.
companyNo
lastNameNo
listNameNoTarget list by exact name. Combine with createList=true to create it if missing.
firstNameNo
createListNoCreate the list named listName if it does not exist.
customFieldsNoFree key/value fields, e.g. { "Service": "Implant, Blanchiment", "Source": "Site web" }. With updateIfExists, customFields are replaced entirely.
outboundLineNoWith createList: exact name or id of an active line (trunk) used for every call from this list. Always overrides the campaign line. 400 if unknown/inactive.
updateIfExistsNoUpdate fields of a contact already in the list instead of ignoring it (status/attempts/history are never touched).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true and openWorldHint=true, so the description clears a lower bar, yet it still adds value: it names the required permission (callcenter:write), explains concretely what idempotency means (duplicate=true, no duplicate created), and sketches the return payload despite no output schema. What is missing is any error behavior beyond the mention of duplicate.

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?

Front-loaded with endpoint and permission, then targeting, idempotency, and return shape in three tight sentences. The return-field list with a trailing ellipsis is slightly cluttered but earns its place given the absence of an output schema.

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 mutation with a nested customFields object and no output schema, the definition covers the essentials: auth permission, list targeting, idempotency behavior, and return shape. It could say more about failure modes (unknown list, invalid phone, permission denied), but nothing critical to correct invocation is missing.

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 58%, above the baseline threshold, and the schema documents the key targeting params (phone, listId, listName, createList, customFields, outboundLine, updateIfExists). The description adds the listId-or-listName targeting rule but says nothing about the remaining plain fields (city, email, company, names), so it neither compensates for the gap nor exceeds schema value.

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

Purpose4/5

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

States a concrete verb and resource: 'Adds one contact to a list', with the endpoint POST /v1/leads and required permission. 'One contact' implicitly contrasts with the inject_leads_batch sibling, but the sibling is never named, so the differentiation is left to inference.

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

Usage Guidelines3/5

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

The description conveys the basic use case (adding a contact to a list by listId or listName) but never states when to prefer this over inject_leads_batch, nor when-not to use it. Usage is implied rather than spelled out against alternatives.

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