eFon international call rates & VoIP
Server Details
International call & VoIP rates: per-minute prices to call 200+ countries, comparison, dialing help.
- Status
- Healthy
- Uptime
- 99.9% over 24 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool has a distinct primary purpose: single-country rates, multi-country comparison, dialing instructions, and reverse code lookup. The only mild overlap is between get_call_rates and compare_call_rates (both return per-minute prices), but the descriptions clearly scope one to a single country and the other to several, and cross-reference each other for the full list.
Three tools follow a clean verb_noun pattern (compare_call_rates, get_call_rates, lookup_calling_code). how_to_call deviates slightly into a phrase-style name, but it remains readable and semantically clear within the same snake_case convention.
Four tools is well-scoped for a read-only call-rate information server. Each tool covers a genuinely different query intent (single rate, comparison, dialing steps, code reverse lookup) with no filler.
The read-only domain is well covered: rates, comparisons, dialing instructions, and code reverse lookup all exist. Minor gaps remain, such as a forward country-name-to-code lookup or a way to enumerate all supported countries, but agents can work around these with existing tools.
Available Tools
4 toolscompare_call_ratesCompare eFon call rates across countriesARead-onlyIdempotentInspect
Cheapest eFon per-minute price (EUR and USD) for several countries at once, sorted from cheapest to most expensive, each with its country page URL. Use this when the user calls more than one country ("rates to India, Pakistan and Bangladesh", "which is cheaper to call, Mexico or Colombia?").
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Language for country names and the returned page links. | en |
| countries | Yes | Up to 20 countries, each in any of the formats above. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by describing the output format (sorted, with country page URLs and dual-currency pricing), which is beyond what annotations provide. It doesn't disclose any potential latency or edge cases, but that's minor for a simple read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The first sentence describes the output and the second gives usage guidance with examples. Information is front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully specifies what the agent will receive: per-minute prices in both currencies, sorted, with page URLs. It also provides usage guidance. For a tool of this simplicity, nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for both parameters, including the country format flexibility and the language enum. The description adds no extra parameter semantics beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Compare'), resource (eFon call rates), and what it returns (cheapest per-minute price in EUR and USD, sorted, with URLs). It clearly distinguishes itself from siblings by specifying multi-country use, with concrete examples.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use this when the user calls more than one country' and gives two example queries. This leaves no ambiguity about when to choose this tool over get_call_rates (single country) or how_to_call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_call_rateseFon call rates to a countryARead-onlyIdempotentInspect
Current eFon per-minute prices (EUR and USD) for calling a country: every rate line (mobile / landline / specific networks or regions), the cheapest price, any announced price change, the country page URL and app download links. Rates are the same wherever the caller is. Use this for "how much does it cost to call X", "cheapest way to call X", "international / VoIP call rates to X" or "is calling X from abroad expensive".
| Name | Required | Description | Default |
|---|---|---|---|
| country | Yes | Country name in any language, ISO 3166-1 alpha-2 code or dialing code — e.g. 'Eritrea', 'ER', 'Эритрея', '+291'. | |
| language | No | Language for country names and the returned page links. | en |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the read-only, idempotent, non-destructive safe profile. The description adds useful behavior beyond that: rates are the same regardless of caller location, prices include EUR and USD, and announced price changes are surfaced. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first line states the core purpose and output list, while the second gives concrete query patterns. The list of returned elements is dense but each item earns its place by clarifying scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description enumerates the relevant return contents: every rate line, the cheapest price, announced price changes, page URL, and app download links. It also clarifies caller-location independence, which is important for international-calling queries. The only mild gap is exact response structure, which is acceptable given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already fully documents the country and language parameters. The description reinforces that the query target is a country through phrases like 'calling a country' and examples like 'call X', but it adds no new format, constraints, or parameter-specific details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool returns: 'Current eFon per-minute prices (EUR and USD) for calling a country' plus rate lines, cheapest price, and related links. The query intent examples make the resource unmistakable, but it doesn't explicitly differentiate itself from the sibling compare_call_rates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete user intents like 'how much does it cost to call X' and 'cheapest way to call X', which clearly signal when to invoke the tool. It lacks explicit exclusions or mention of alternatives like compare_call_rates, stopping short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
how_to_callHow to dial a country from anotherARead-onlyIdempotentInspect
Dialing instructions for calling a destination country from an origin country: exit code, country code, example mobile and landline numbers written the way to dial them, the time difference and the hours when it is daytime on both ends, plus the eFon guide URL and the cheapest eFon rate. Omit origin for the international (+) format only.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | Country the caller is in (optional). Country name in any language, ISO 3166-1 alpha-2 code or dialing code — e.g. 'Eritrea', 'ER', 'Эритрея', '+291'. | |
| language | No | Language for country names and the returned page links. | en |
| destination | Yes | Country name in any language, ISO 3166-1 alpha-2 code or dialing code — e.g. 'Eritrea', 'ER', 'Эритрея', '+291'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior, so the description's job is to add content-level context. It does: the exact return payload (both mobile and landline dialing examples, time difference, daytime windows, guide URL, and cheapest rate) plus the international-format variant. This is meaningful disclosure given there is no output schema, and it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose before the content list, and the second sentence is a crisp rule with zero filler. The main list is dense — a long colon-heavy sentence — but every item carries meaning, so nothing is wasted. Slightly less scannable than a bulleted form, but appropriately sized for a tool with no output schema to document.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with 100% schema coverage, full annotations, and one enum, the description covers required and optional parameters, the omit-origin rule, and the return contents in detail. The only notable gap is the ambiguity with get_call_rates caused by including the cheapest rate without explaining when to prefer the sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the schema already documents each parameter with examples and accepted formats. The description adds one genuinely new semantic: when to omit origin ('for the international (+) format only'), which the schema does not state beyond labeling origin optional. That extra condition justifies a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific task ('dialing instructions for calling a destination country from an origin country') and enumerates exactly what the caller gets: exit code, country code, example mobile and landline numbers, time difference, daytime hours, eFon guide URL, and cheapest rate. However, it never names or routes to the sibling get_call_rates, and the inclusion of 'cheapest eFon rate' overlaps with that tool's apparent domain, so selection between the two is not fully resolved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: an agent can infer this tool is for dialing instructions, and the closing sentence gives a concrete usage rule ('Omit origin for the international (+) format only'). But there is no when/when-not guidance versus the sibling get_call_rates, which also plausibly returns rate information. The alternative is never mentioned, so an agent choosing between the two gets no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_calling_codeWhich country is this calling code?ARead-onlyIdempotentInspect
Reverse lookup of an international dialing code: which country (or countries, for shared codes like +1, +7 or +44) a code such as +36, 0036 or +1 876 belongs to, with capital, example number and the eFon rate page. Use this for "which country is +36", "who is calling me from +233", "what does 00252 mean" or a missed call from an unknown foreign number. Includes the cheapest eFon per-minute rate for calling back and a scam warning for one-ring calls; for the full rate list use get_call_rates.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Dialing code or the start of an international number: '+36', '0036', '36', '+1 876', '00252 61 123 4567'. | |
| language | No | Language for country names and the returned page links. | en |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is carried. The description adds genuinely new behavioral context: the result includes capital, an example number, the eFon rate page, the cheapest per-minute callback rate, and a scam warning for one-ring calls. It does not mention any rate limits or the shape of the failure case when a code is unknown, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and scoped by the shared-code caveat in the first clause, then use cases, then the sibling hand-off. It is dense and somewhat run-on as a single long sentence, but every clause carries information an agent can act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description enumerates what comes back (country, capital, example number, rate page, cheapest rate, scam warning), so return content is not a gap. Combined with full annotation coverage and full schema coverage, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (including the language enum) are already documented in the schema. The description restates accepted code formats ('+36, 0036 or +1 876') that the schema description already gives, adding no new syntax or normalization rules. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('reverse lookup of an international dialing code') and immediately bounds the scope, including the shared-code case (+1, +7, +44). It also names the sibling it is not (get_call_rates for the full rate list), so an agent can separate it from the other rate tools without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit triggering queries ('which country is +36', 'who is calling me from +233', 'what does 00252 mean', a missed call from an unknown foreign number) and an explicit alternative with its condition: use get_call_rates for the full rate list. When-to-use and when-to-use-something-else are both covered.
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 tool update
- Added
lookup_calling_code
1 tool update
- Added
compare_call_rates
2 tool updates
- First observed
get_call_rates - First observed
how_to_call
Related MCP Connectors
Exact international dialing instructions for any country or number, plus per-minute call prices.
- VoixCallOAuthcom.voixcall
International calling account: call rates, balance, call history, summaries and contacts.
Virtual phone number coverage, monthly prices, calling and forwarding rates, help articles.
International calls from your AI agent: price per minute and a Call link to the browser dialer.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceValidates phone numbers and provides country calling codes, enabling AI agents to look up international dialing codes and filter by country name, ISO code, or calling code.15 npmMIT
- AlicenseNot gradedqualityCmaintenanceFormat, validate and normalize international phone numbers, work out exactly how to dial one country from another, clean phone columns in CRM or contact exports, and find calling windows across time zones — using the countrycalling.codes API and MCP server.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to retrieve and compare verified country facts such as VAT/GST, public holidays, visas, tipping, and minimum wages across 70 countries, with automatic x402 micropayments in USDC on Base per call.110 npmMIT
- FlicenseNot gradedqualityDmaintenanceProvides tools to retrieve and compare detailed information about countries, including population, region, and currency data. It allows users to search for specific countries or list them by region.-
Glama MCP Gateway
Add one secure layer between your agents and this server.