eFon: International Call Rates & Dialing Codes
Server Details
Live per-minute prices for international calls to mobiles and landlines in 200+ countries with the eFon app (iOS and Android): pay-as-you-go, no subscription, no connection fees, usually up to 90% cheaper than dialing directly on a mobile-operator plan. Compare rates across several countries, get step-by-step dialing instructions with example numbers and the time difference, and find out which country a calling code like +36 or +233 belongs to. Read-only, no API key or sign-in needed.
- Status
- Healthy
- Uptime
- 100.0% over 46 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 4 tools
compare_call_rates and get_call_rates both deal with per-minute rates, which could cause some confusion, but the descriptions clearly separate multi-country comparison from single-country detail. how_to_call and lookup_calling_code are cleanly distinct (dialing steps vs. reverse code lookup).
All names use snake_case with predictable verb/noun structure (compare_call_rates, get_call_rates, lookup_calling_code). how_to_call is slightly irregular in form but still readable and consistent in style.
Four tools is a tight but sensible set for a call-rate/dialing-info service, each covering a distinct query type. It is close to the thin end of the range but every tool earns its place.
The surface covers rate lookup, multi-country comparison, dialing instructions, and reverse code lookup, which spans the main user journeys. Minor gaps exist (e.g. no way to list all countries or browse available destinations), but core needs are met.
Available Tools
4 toolscompare_call_ratesCompare eFon call rates across countriesARead-onlyIdempotentInspect
eFon rate comparison: cheapest per-minute price (EUR and USD) for several countries, 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 readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely new context about the response shape (dual-currency cheapest price, sorted ascending, per-country page URL), though it says nothing about behavior on invalid or ambiguous country inputs.
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 dense sentences with no filler: the first front-loads what the tool returns, the second front-loads when to use it, followed by examples. Everything 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?
There is no output schema, so the description carries the return-value burden and does so (prices in two currencies, ordering, country page URLs). With annotations covering safety and the schema covering both parameters, an agent has everything needed to call it 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 description coverage is 100%, so both parameters are fully documented by the schema itself (formats for countries, language for names and links). The description adds only the comparison/sorting semantics, not new parameter meaning, so the baseline 3 applies.
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 gives a specific verb and resource (compare eFon call rates) and states exactly what comes back: cheapest per-minute price in EUR and USD, sorted cheapest to most expensive, each with its country page URL. That level of output specificity also separates it from the single-country get_call_rates sibling.
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?
It gives an explicit trigger condition ('when the user calls more than one country') plus two concrete example utterances, which strongly implies the not-for case (single country). It stops short of naming the alternative sibling for that case, so routing is inferred rather than stated.
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
eFon per-minute prices (EUR and USD) for calling a country, live: 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 read-only/idempotent/non-destructive, so the safety profile is covered; the description usefully adds that rates are caller-location-independent, that data is 'live', and it enumerates the returned content (rate lines, cheapest price, announced price change, page URL, app links). That return-shape disclosure is valuable given there is no output schema, though 'live' is not defined (refresh cadence / caching is unstated).
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 resource and granularity come first, followed by the return inventory, with usage triggers last — a sensible front-loaded order with no filler. The opening sentence is heavily comma-loaded, but every clause conveys distinct information.
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 carries the return-value burden and does so by listing what comes back; annotations cover the safety profile and the schema covers both parameters fully. Only minor gaps remain: error behavior for an unresolvable country and what 'live' means in practice.
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 description coverage is 100%, so both 'country' (multilingual names, ISO code, dialing code) and 'language' (enum, default en) are already fully documented with examples. The description adds no parameter-level detail beyond noting that rates do not vary by caller, which justifies the absence of a caller parameter but does not extend the schema semantics.
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 the resource precisely: per-minute eFon prices in EUR and USD for calling a named country, including the granularity of rate lines (mobile/landline/network). The scope ('a country', single-country lookup) implicitly separates it from compare_call_rates, but no sibling is named explicitly, so the agent must infer the boundary between this and the comparison tool.
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?
It supplies concrete trigger queries ('how much does it cost to call X', 'cheapest way to call X', 'is calling X from abroad expensive'), which maps user intent to the tool well. However, it never states when NOT to use it or names compare_call_rates/how_to_call as the alternatives for multi-country or dialing-instruction queries, so routing between siblings is left to inference.
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
eFon dialing guide 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 readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine value by disclosing exactly what the caller receives (exit code, country code, example numbers, time difference/daylight overlap, guide URL, cheapest rate) and how omitting origin changes the output format.
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 purpose is front-loaded and the second sentence carries the one invocation rule. The middle enumeration of returned fields is long and slightly run-on, but with no output schema it earns its place by telling the agent what it will get.
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 correctly carries the burden of describing return content, and it does so thoroughly, including units like time difference and daylight hours. The remaining gap is routing relative to the three sibling tools, which is left unaddressed.
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 baseline is 3, but the description adds behavior the schema does not: omitting origin switches the result to the international (+) format only. That is a meaningful semantic rule about the optional param that an agent cannot infer from the schema alone.
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 resource (eFon dialing guide) and its scope (calling a destination country from an origin country), with the exact contents enumerated. It is clear what the tool returns, but it never distinguishes itself from siblings like lookup_calling_code or get_call_rates, and the mention of the 'cheapest eFon rate' overlaps with rate-focused siblings without clarification.
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 only guidance is 'Omit origin for the international (+) format only', which explains one invocation mode but not when to choose this tool over lookup_calling_code or get_call_rates. Usage is implied by the purpose rather than stated, with no exclusions or alternatives named.
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
eFon calling-code lookup: 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.
| 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/openWorld=false, so the safety profile is covered. The description adds substantive behavioral detail beyond that: shared-code handling, and that the result includes capital, example number, an eFon rate page, cheapest per-minute callback rate, and a one-ring scam warning. No auth/rate-limit caveats, but this is well above the annotation baseline.
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 every clause (shared codes, example queries, return contents) earns its place. It is a single long run-on sentence with a slightly promotional tail ('Includes the cheapest eFon per-minute rate...'), which keeps it from a 5.
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 carries the return-value burden and does so: it names the country/countries, capital, example number, rate page and scam warning an agent will get back. Nothing an agent needs to call this 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?
Schema coverage is 100%, so both parameters (code, language enum with default) are already documented, including the accepted formats. The description's mention of shared codes adds a little interpretation value but no syntax beyond the schema, so the baseline 3 applies.
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 ('calling-code lookup: which country ... a code belongs to') and clarifies the shared-code edge case (+1, +7, +44). It is clearly distinguishable from siblings get_call_rates, compare_call_rates and how_to_call, which deal with rates and dialing procedure rather than country identification.
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 concrete trigger phrases ('which country is +36', 'who is calling me from +233', 'what does 00252 mean', missed call from an unknown foreign number), which is clear usage context. It does not, however, explicitly state when to prefer a sibling (e.g. how_to_call) or any exclusions, so it stops short of a 5.
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
Publisher details
- Operator
- EFON LIMITED (eFon) · Publisher source
- Operator website
- https://efon.com
- Vendor relationship
- First-party
- Documentation
- https://efon.com/mcp
- Trust center
- Not available
- Restrictions
- None: free and public, no sign-in, API key or paid plan needed; no regional limits. Read-only.
Related MCP Connectors
Exact international dialing instructions for any country or number, plus per-minute call prices.
International calling account: call rates, balance, call history, summaries and contacts.
International calls from your AI agent: price per minute and a Call link to the browser dialer.
Virtual phone number coverage, monthly prices, calling and forwarding rates, help articles.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceLive gas prices with gwei tiers, USD cost estimates, and congestion level. Time your transactions perfectly with pay-per-call via x402.MIT
- AlicenseNot gradedqualityCmaintenanceValidates 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.269 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables assistants to look up verified daily cheapest travel eSIM and physical SIM sellers and prices for 54 destination countries and 1–30 day trips, compare countries by cost, check recent price trends, and inspect seller price-change and sell-out histories. It is a free, no-auth, read-only remote MCP server whose results include a source citation and as-of date.-
- FlicenseNot gradedqualityDmaintenanceProvides real-time electricity prices, cheapest hours, and contract comparison for 40+ countries, enabling AI agents to make energy-aware decisions.5-
Glama MCP Gateway
Add one secure layer between your agents and this server.