Skip to main content
Glama

Server Details

Real phone calls for AI agents: Spain, Mexico, US, Canada, Latin America, UK, EU. From 0.25 USD/min.

Ownership verified
Status
Healthy
Uptime
39.1% over 25 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
Deyaho/deyaho-phone-calls-mcp
GitHub Stars
0
Server Listing
Deyaho Phone Calls MCP
ChatGPT
–
Claude
–

TDQS

A4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool covers a distinct action on the call resource: make_call creates, get_call retrieves one by id, list_calls enumerates, and get_pricing returns static account/pricing metadata. There is no plausible way to confuse them, and make_call's description explicitly points to get_call for results.

Naming Consistency5/5

All four names follow a clean snake_case verb_noun pattern (get_, list_, make_) with the noun consistently referring to calls or pricing. No mixed conventions or vague verbs.

Tool Count5/5

Four tools is a tight, well-scoped surface for an outbound-calling service: create a call, poll it, list history, and check pricing/balance. Nothing appears redundant or gratuitous.

Completeness3/5

The create/read/list lifecycle is covered, but there is no cancel_call for terminating an in-flight or mistaken call, no scheduling for later calls, and no webhook/callback mechanism (agents must poll get_call). Balance is visible via get_pricing but there is no top-up or account operation, leaving some notable gaps.

Available Tools

4 tools
get_callGet call resultA
Read-onlyIdempotent
Inspect

Get the status, duration, summary, collected data and transcript of a call placed with make_call.

NameRequiredDescriptionDefault
call_idYesThe call_id returned by make_call

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered structurally. The description usefully enumerates what data comes back, but says nothing about whether status can be pending/in-progress (i.e., whether polling is required) or about latency/rate limits, which is the main behavioral unknown for a result-fetching tool.

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?

A single front-loaded sentence with no filler; every clause maps to a concrete piece of returned data or the call_id provenance.

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?

With no output schema, the description carries the burden of describing return values and does so by listing the fields. The remaining gap is lifecycle context (what status values exist, whether a result may be incomplete), which is minor for a simple getter but would have made it fully self-sufficient.

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 100% and the single call_id parameter is fully documented in the schema, including its origin ('returned by make_call'). The description restates that provenance but adds no syntax, format, or error semantics beyond the schema, so the baseline of 3 applies.

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?

Names a specific verb (Get) and resource (a call) and enumerates the fields returned: status, duration, summary, collected data, transcript. The phrase 'a call placed with make_call' scopes it to a single call, which implicitly distinguishes it from the sibling list_calls.

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?

By tying call_id to 'returned by make_call,' it implies the call sequence (create with make_call, then retrieve with get_call). However, it never explicitly states when to use this instead of list_calls, nor does it mention whether repeated polling is expected while a call is in progress.

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

get_pricingGet pricing and balanceA
Read-onlyIdempotent
Inspect

Free. Show the price per call/minute, limits, allowed countries and calling hours, and your remaining balance.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds the cost fact ('Free') and, critically, enumerates what the response contains since there is no output schema.

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?

Two short sentences, front-loaded with the cost fact and then a compact list of returned fields. Nothing is wasted and 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 parameterless read tool with no output schema, the description supplies the return contents and the cost trait, which is most of what an agent needs. It could say slightly more about format (e.g., currency or units), but nothing essential is missing.

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

Parameters4/5

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

The tool takes zero parameters, which is the baseline-4 case. The description does not discuss parameters, and nothing about parameters needs explaining.

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 ('Show the price... and your remaining balance') and enumerates the exact data returned. None of the siblings (get_call, list_calls, make_call) deal with pricing or balance, so it is unambiguous which tool this is.

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 leading 'Free.' implicitly tells the agent this call costs nothing and is safe to make for pre-flight checks before make_call, but it never explicitly says when to use this versus the calling tools. Usage is inferable rather than stated.

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

list_callsList recent callsA
Read-onlyIdempotent
Inspect

List the most recent calls placed with your key (newest first).

NameRequiredDescriptionDefault
limitNoHow many calls, default 10

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, so safety is covered. The description adds useful context — result ordering (newest first) and that results are scoped to the caller's key — but says nothing about truncation, pagination, or what a returned call record contains.

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?

A single front-loaded sentence with no filler; ordering and scope are stated before any detail.

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 one-optional-parameter read tool with full annotation coverage and full schema descriptions, this is close to sufficient. The one real gap is that an agent cannot tell from the description whether it can page beyond the 50-item cap.

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 100% with the limit parameter documented as "How many calls, default 10" and bounded 1–50, so the description need not repeat it. Baseline 3 applies since the description contributes no additional parameter meaning.

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?

Specific verb (list) and resource (calls), plus scope ("placed with your key") and ordering ("newest first"). It is clearly distinct from make_call and get_call by implication, though it never explicitly names them.

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?

Usage is implied by "most recent calls" but there is no explicit when-to-use guidance versus get_call, and no mention of what happens when more calls exist than the limit allows.

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

make_callMake a phone callAInspect

Place a real outbound phone call with an AI voice agent and get a call_id. The agent introduces itself as an AI assistant of the business you name, pursues the goal you describe, collects the requested data and hangs up. Destinations: Spain (+34), Mexico (+52), United States and Canada (+1), Colombia (+57), Peru (+51) and United Kingdom (+44). With a prepaid key, at their own price per minute (see get_pricing): Argentina, Belize, Bolivia, Brazil, Chile, Costa Rica, Dominican Republic, Ecuador, El Salvador, Guatemala, Honduras, Nicaragua, Panama, Paraguay, Puerto Rico, Uruguay, Austria, Belgium, France, Germany, Ireland, Italy, Netherlands and Portugal. Calls are short (max 4 minutes). United States and Canada: informational calls only, every day 08:00-21:00 local time of the recipient, with prior_express_consent=true and call_type. Colombia, Peru and United Kingdom: service calls only, Monday to Saturday 09:00-21:00. Set call_purpose: service calls (appointments, reminders, surveys of your own customers, calls the person asked for) run Monday to Saturday 09:00-21:00 local time; commercial calls, only to Spain and Mexico, run Monday to Friday (Spain 09:00-21:00 and only from a 400 number; Mexico 09:00-19:00). In Spain and Mexico, no calls on Sundays or national holidays. You must confirm the recipient asked for or agreed to be contacted. The result is returned by get_call using the call_id. Pass website_url (the business website) and/or business_info so the agent can answer questions about prices, hours or services during the call.

NameRequiredDescriptionDefault
toYesDestination phone number in E.164 format, e.g. +34600111222 or +525512345678
goalYesWhat the call must achieve, in plain language
collectNoData points to collect, e.g. ['preferred date', 'email']
languageYesLanguage the agent speaks (ISO 639-1)
call_typeNoRequired for +1 destinations: informational calls only, never cold prospecting
website_urlNoWebsite of the business you call for. It is read before the call (up to 10 pages) so the agent can answer questions about prices, hours, services or address
call_purposeYesservice: appointments, reminders, surveys of your own customers, or a call the person asked for. commercial: selling or offering something to someone who did not ask for it. It sets the allowed calling hours; commercial calls to Spain require a 400 number
business_infoNoExtra facts about the business the agent may need (prices, hours, services, policies). The agent answers only with this and the website, never invents
business_nameYesName of the business on whose behalf the agent calls
consent_confirmedYesMust be true: the recipient requested or agreed to be contacted
consent_statementYesHow and when the recipient requested or agreed to be contacted
prior_express_consentNoRequired true for +1 destinations: the recipient gave prior consent to be called (TCPA)

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only say readOnly=false and openWorld=true; the description carries the real behavioral load: the call is a REAL outbound call to a human, capped at 4 minutes, the agent identifies as an AI, answers only from website_url/business_info, and hangs up. It also discloses cost implications via get_pricing and the legal precondition of recipient consent, which the annotations cannot express.

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

Conciseness3/5

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

Front-loaded with the purpose, but the remainder is one dense block mixing country lists, time windows, and consent rules. The content mostly earns its place, yet the regulatory matrix would scan far better as structured lines rather than a prose run-on.

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

Completeness5/5

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

For a 12-parameter, non-idempotent, real-world side-effecting tool with no output schema, this is complete: it explains what is produced (call_id), where to retrieve the result (get_call), cost lookup (get_pricing), and every jurisdictional constraint an agent must satisfy before calling. Nothing needed to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description still adds meaning: it explains why call_purpose matters (it drives allowed hours and the 400-number requirement in Spain), why website_url/business_info exist (up to 10 pages read pre-call, agent must not invent), and reinforces that consent must be genuinely obtained rather than just a boolean set.

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: "Place a real outbound phone call with an AI voice agent and get a call_id." It distinguishes itself from siblings immediately by noting the result comes back through get_call, and by pointing to get_pricing for destinations behind a prepaid key.

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?

Gives rich eligibility context: per-country destination support, calling windows, the +1 informational-only rule, and the prohibition on cold commercial calls outside Spain/Mexico. It routes follow-up reads to get_call and get_pricing. It does not explicitly frame these as "use this instead of X", but the operational conditions are clear enough that selection is unambiguous.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedmake_call6 fields changed
      • addedInput schema / properties / call_purpose
        Added value: +{
        +  "description": "service: appointments, reminders, surveys of your own customers, or a call the person asked for. commercial: selling or offering something to someone who did not ask for it. It sets the allowed calling hours; commercial calls to Spain require a 400 number",
        +  "enum": [
        +    "service",
        +    "commercial"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / call_type
        Added value: +{
        +  "description": "Required for +1 destinations: informational calls only, never cold prospecting",
        +  "enum": [
        +    "appointment",
        +    "reminder",
        +    "collection"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / language / description
        Previous value: -"Language the agent speaks"New value: +"Language the agent speaks (ISO 639-1)"
      • changedInput schema / properties / language / enum
        Previous value: -[
        -  "es",
        -  "en"
        -]New value: +[
        +  "es",
        +  "en",
        +  "pt",
        +  "fr",
        +  "de",
        +  "it",
        +  "nl",
        +  "zh",
        +  "ar",
        +  "ru",
        +  "ja",
        +  "ko",
        +  "tr",
        +  "pl",
        +  "hi",
        +  "sv",
        +  "uk",
        +  "id",
        +  "ms",
        +  "vi",
        +  "el",
        +  "ro",
        +  "cs",
        +  "da",
        +  "no",
        +  "fi",
        +  "bg",
        +  "hr",
        +  "hu",
        +  "sk"
        +]
      • addedInput schema / properties / prior_express_consent
        Added value: +{
        +  "description": "Required true for +1 destinations: the recipient gave prior consent to be called (TCPA)",
        +  "type": "boolean"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "to",
        -  "goal",
        -  "language",
        -  "business_name",
        -  "consent_confirmed",
        -  "consent_statement"
        -]New value: +[
        +  "to",
        +  "goal",
        +  "language",
        +  "business_name",
        +  "call_purpose",
        +  "consent_confirmed",
        +  "consent_statement"
        +]
  2. 1 tool update
    • Changedmake_call2 fields changed
      • addedInput schema / properties / business_info
        Added value: +{
        +  "description": "Extra facts about the business the agent may need (prices, hours, services, policies). The agent answers only with this and the website, never invents",
        +  "maxLength": 4000,
        +  "type": "string"
        +}
      • addedInput schema / properties / website_url
        Added value: +{
        +  "description": "Website of the business you call for. It is read before the call (up to 10 pages) so the agent can answer questions about prices, hours, services or address",
        +  "format": "uri",
        +  "maxLength": 300,
        +  "type": "string"
        +}
  3. 4 tool updates
    • First observedget_call
    • First observedget_pricing
    • First observedlist_calls
    • First observedmake_call

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Make phone calls and join Zoom, Microsoft Teams and Google Meet meetings from any AI agent. A self-hosted, open-source voice agent that calls businesses and people through your own SignalWire or Twilio number, joins meetings as a bot that answers when spoken to, says it is an AI, and returns the outcome, decisions, action items and transcript.
    14
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to place real phone calls, navigate IVR trees, and retrieve structured answers with transcripts and recordings.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.