Calmido Phone Number Lookup
Server Details
Who is calling? Spam reports, a verdict and the business behind NL, BE and LU phone numbers.
- Status
- Healthy
- Uptime
- 99.8% over 23 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- Calmido
TDQS
Scored across 3 tools
search (find entry by number) is distinct, but fetch and lookup_phone_number overlap heavily: both return the verdict, reports, and business for a number, differing only in input form (id vs. raw number). An agent could reasonably pick either for 'who called me', and the id-based fetch exists mainly as a second step after search, which is not obvious from the names alone.
lookup_phone_number follows a verb_noun pattern, but fetch and search are bare verbs with no object, mixing conventions within a 3-tool set. Readable, but not a predictable pattern overall.
Three tools is on the thin side but reasonable for a focused phone-lookup directory. The slight redundancy between fetch and lookup_phone_number means one could arguably be dropped.
The surface covers the domain well: search to find an entry, lookup for a full number-based query, and fetch to retrieve details by id. There are no major lifecycle gaps for a read-only directory service.
Available Tools
3 toolsfetchFetch a Calmido directory entryARead-onlyIdempotentInspect
Retrieve who is behind a phone number from the Calmido directory: the community verdict, the number of reports, the most reported category and the registered business, with a link to the evidence. The id is the one search returned: the number in E.164 digits.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The id `search` returned: the number in E.164 digits. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| text | Yes | |
| title | Yes | |
| metadata | Yes |
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 covered. The description adds genuine value by previewing the returned payload (community verdict, report counts, business registration, evidence link), which tells the agent what it will learn without opening the output schema. It stops short of stating behavior for a missing or unknown number.
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, front-loaded with the action and the payoff, no filler. Minor redundancy: the second sentence about the id restates the schema's parameter description almost word for word, so it earns only partial credit.
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 an output schema present, the description needn't detail return values, and it still usefully summarizes them; annotations carry the safety profile. The one gap left for an agent is edge-case behavior (unknown number, missing entry), which neither description nor annotations address.
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% and the single `id` parameter is documented in-schema with the same E.164-digits phrasing. The description essentially repeats that constraint verbatim rather than adding new meaning (no format examples, no note on what an invalid id yields). Baseline 3 for a schema-covered parameter.
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 ('Retrieve') and resource ('who is behind a phone number from the Calmido directory'), then enumerates exactly what comes back: verdict, report count, top category, registered business, evidence link. An agent can distinguish this from the sibling `search` because the description frames this as the follow-up lookup for a known id.
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 clause 'The id is the one `search` returned' establishes the intended usage sequence: search first, then fetch. What's missing is any routing against the other sibling, `lookup_phone_number`, which is presumably a competing way to resolve a number — the agent gets no signal on when to pick this over that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_phone_numberLook up a phone number (Calmido)ARead-onlyIdempotentInspect
Look up who is behind a phone number in the Netherlands, Belgium or Luxembourg: community reports, spam and scam categories, a trust verdict, and the registered business if there is one, from the Calmido phone directory. Use it whenever someone asks who called them, whether a number is safe, spam or a scam, or which company a number belongs to. Accepts international (+31 20 123 4567) and national (020 123 4567) formats; pass country for a national number outside the Netherlands. The verdict is one of: business (no reports, a known registered business), empty (no reports and no known business: not a sign that the number is safe), neutral (reported, but not enough evidence to flag), safe (reported, and the community found nothing alarming), suspicious (flagged as a threat), restricted (the identity was erased on request; the reports remain) or unavailable (the lookup could not be read: it says nothing about the number). An invalid number returns an error. Calls are rate limited per address; over the limit the error says how many seconds to wait.
| Name | Required | Description | Default |
|---|---|---|---|
| number | Yes | The phone number: international (+31 20 123 4567, or 31201234567 without the plus) or national (020 123 4567, starting with 0). Spaces, dashes and brackets are ignored. | |
| country | No | ISO 3166-1 alpha-2 country (NL, BE or LU) of a national-format number, which starts with 0. Ignored for an international number. Defaults to NL; if the number is not valid there, BE and LU are tried. | |
| language | No | Language of the summary sentence, the category name and the page link: nl, en or fr. Defaults to en. |
Output Schema
| Name | Required | Description |
|---|---|---|
| number | Yes | |
| summary | Yes | |
| verdict | Yes | |
| business | Yes | |
| page_url | Yes | |
| restricted | Yes | |
| report_count | Yes | |
| top_category | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely new operational context: rate limiting per address, an error that reports seconds to wait, an error on invalid numbers, and precise semantics for each verdict including the important caveat that 'empty' is not a sign the number is safe. The distinction between 'restricted' (identity erased, reports remain) and 'unavailable' (lookup unreadable, says nothing) is exactly the kind of nuance annotations cannot carry.
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 purpose, then usage, then formats, then the verdict taxonomy, then error/rate-limit behavior — a sensible ordering with no filler sentences. It runs long mainly because the seven-way verdict enumeration is spelled out, which is defensible but costs some density.
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?
An output schema exists, so return values need not be explained, and the description still covers the failure modes (invalid number, rate limit, unreadable lookup) and the interpretive pitfalls of the verdict values. An agent has everything needed to decide to call it and to judge the result.
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, but the description adds practical meaning: it restates accepted international and national formats with examples and notes that `country` is only needed for a national number outside the Netherlands. The per-verdict enumeration also ties output meaning back to the lookup rather than to any single parameter, so this is modestly 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?
States a specific verb and resource ('Look up who is behind a phone number') plus the geographic scope (NL/BE/LU) and exactly what data comes back (community reports, spam/scam categories, trust verdict, registered business). The named data source ('Calmido phone directory') further pins it down, so an agent can distinguish it from the generic `fetch` and `search` siblings at a glance.
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 triggering conditions: 'Use it whenever someone asks who called them, whether a number is safe, spam or a scam, or which company a number belongs to.' That is strong positive routing guidance, but there is no when-not clause and no explicit mention of the `search`/`fetch` siblings as alternatives, 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.
searchSearch the Calmido phone directoryARead-onlyIdempotentInspect
Find a phone number in the Calmido directory (Netherlands, Belgium, Luxembourg). The query is a phone number, international (+31 20 123 4567) or national (020 123 4567); it is not a name or free text. Returns the matching directory entry, if any. Pass its id to fetch for the verdict and reports.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | A phone number, international (+31 20 123 4567) or national (020 123 4567). |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds real value beyond them: it discloses that a match may not exist ('if any') and describes the two-step workflow into `fetch` for verdicts and reports, which 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the resource and scope, then input format, then return and next step. No sentence is redundant with another or with structured fields.
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 single-parameter read tool with an output schema and full annotation coverage, this covers everything the agent needs: scope, accepted format, negative constraint, possibility of no match, and where to go next. Nothing essential 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 baseline is 3. The description goes beyond the schema by constraining the input negatively ('not a name or free text') and giving both international and national formats, which reduces wasted calls with names as queries.
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 and resource ('Find a phone number in the Calmido directory') plus the geographic scope (NL/BE/LU), and the final sentence distinguishes it from `fetch` by explaining the handoff. It does not differentiate itself from the sibling `lookup_phone_number`, whose name suggests an overlapping purpose, leaving some ambiguity for the agent.
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 says what the query is and is not ('it is not a name or free text') and describes the follow-on step ('Pass its id to `fetch`'), which gives clear usage context. There is no explicit rule for choosing this over `lookup_phone_number`, so the alternative-selection guidance is incomplete.
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.
3 tool updates
- Added
fetch - Changed
lookup_phone_number3 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"ISO 3166-1 alpha-2 country of a national-format number. Defaults to NL, then BE and LU are tried."New value: +"ISO 3166-1 alpha-2 country (NL, BE or LU) of a national-format number, which starts with 0. Ignored for an international number. Defaults to NL; if the number is not valid there, BE and LU are tried." - changed
Input schema / properties / language / descriptionPrevious value: -"Language of the summary sentence and the page link: nl, en or fr. Defaults to en."New value: +"Language of the summary sentence, the category name and the page link: nl, en or fr. Defaults to en." - changed
Input schema / properties / number / descriptionPrevious value: -"The phone number, international (+31 20 123 4567) or national (020 123 4567)."New value: +"The phone number: international (+31 20 123 4567, or 31201234567 without the plus) or national (020 123 4567, starting with 0). Spaces, dashes and brackets are ignored."
- Added
search
1 tool update
- Changed
lookup_phone_number1 field changed- changed
Input schema / properties / language / descriptionPrevious value: -"Language of the summary sentence: nl, en or fr. Defaults to en."New value: +"Language of the summary sentence and the page link: nl, en or fr. Defaults to en."
1 tool update
- First observed
lookup_phone_number
Publisher details
- Operator
- Calmido
- Operator website
- https://www.calmido.com
- Vendor relationship
- First-party
- Documentation
- https://www.calmido.com/nl-en/developers
- Trust center
- Not applicable
- Restrictions
- Not applicable
Related MCP Connectors
Polish phone number lookup: who called, spam and scam checks, UKE DNO registry, CERT phishing stats
Caller ID and phone lookup: names, spam reports, fraud risk score, name/email search.
Who-called phone lookups: community verdict, spam rating, operator and reviews (ktozvonil.net).
Check phone numbers (WhatsApp, Telegram, carrier, spam reputation) and e-mail addresses.
Related MCP Servers
- AlicenseAqualityDmaintenancePolish phone number lookup: who called, spam and scam checks, UKE DNO registry, CERT phishing stats51MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to look up Danish phone numbers for operator, company (CVR), and spam/trust information using official open data.1MIT
- FlicenseNot gradedqualityAmaintenanceEnables phone number intelligence and spam-risk detection by combining metadata, FTC complaint history, and IPQS reputation into explainable risk scores with confidence levels.1-
- AlicenseAqualityDmaintenanceProvides North American (NANP) area code and phone number intelligence for AI agents, including area code lookup, phone validation, carrier info, city/state coverage, local time, and scam context.872 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.