reference-data-mcp-server
Server Details
Countries, timezones, elements, constants, HTTP status codes, unit conversion, and MIME type lookup.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cyanheads/reference-data-mcp-server
- GitHub Stars
- 1
- Server Listing
- @cyanheads/reference-data-mcp-server
TDQS
Scored across 10 tools
Each tool is scoped to a distinct reference domain or operation: constants, elements, countries, HTTP statuses, MIME types, timezones, and units. Lookup/search pairs for elements and geo are clearly separated by specific-record vs filtered-summary behavior, and timezone lookup vs convert serve different tasks. No two tools appear to answer the same query.
The ref_ prefix and mostly <domain>_<action> structure create a predictable pattern, as seen in ref_element_lookup, ref_element_search, ref_timezone_lookup, and ref_unit_convert. However, ref_http_status and ref_mime_type omit an explicit action suffix, slightly breaking the otherwise consistent convention. These deviations are minor and easy to infer.
Ten tools is a well-scoped size for a multi-domain reference server; each category gets one or two focused tools without redundancy. This is neither too thin nor too heavy, and every tool has a clear purpose.
Core reference workflows are fully covered: specific lookups for constants, elements, countries, HTTP statuses, and MIME types are paired with broader operations like element/country filtering, timezone conversion, and unit conversion. Static reference data does not need CRUD, and query variants such as aliases, partial names, extensions, and keywords are handled. Obvious gaps like currency conversion or list-all endpoints fall outside the server's apparent scope.
Available Tools
10 toolsref_constant_lookupPhysical Constant LookupARead-onlyInspect
Look up a fundamental physical constant by name, symbol, or common alias. Returns the CODATA 2022 value, SI unit expression, relative standard uncertainty, and a short description. Recognizes common names and symbols — "speed of light", "c", "Avogadro's number", "N_A", "Planck", "h", "Boltzmann", "k_B" all resolve correctly. Fuzzy matching returns the closest match plus alternatives.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Constant name, symbol, or common alias (e.g., "speed of light", "c", "Avogadro", "N_A", "Planck constant", "h"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | Full CODATA constant name. |
| unit | No | SI unit expression (e.g., "m s⁻¹", "J K⁻¹", "dimensionless"). |
| error | No | Present when the call failed. Absent on success. |
| exact | No | True when the constant has an exact defined value (no experimental uncertainty). |
| value | No | Numeric value in SI units. |
| symbol | No | Standard mathematical symbol. |
| related | No | Related constants that also matched the query. |
| codata_id | No | CODATA identifier string, or null if not in CODATA registry. |
| description | No | Short description of the constant and its significance. |
| uncertainty | No | Absolute standard uncertainty in SI units. Null for exactly-defined constants. |
| match_strategy | No | How this constant was matched: exact_symbol = case-sensitive symbol hit (e.g. "G"), exact_name = exact alias/name match, fuzzy = partial or contains match. fuzzy signals the query was imprecise and the result is the closest candidate. |
| dataset_version | No | Data source version (CODATA year). |
| uncertainty_relative | No | Relative standard uncertainty or "exact (defined)" for exact values. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnlyHint annotation by specifying the exact return contents (CODATA 2022 value, SI unit expression, relative standard uncertainty, short description) and the fuzzy-matching fallback behavior. It also confirms that both common names and symbols resolve correctly, which is useful behavioral information.
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 sentences front-load the core purpose, then state outputs, then give useful examples and the fuzzy fallback. Every sentence adds information; there is no filler or redundancy.
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-only lookup tool with an output schema, the description covers the query format, acceptable inputs, return contents, and edge-case behavior. Nothing essential is missing for an agent to select and invoke the tool 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% and the schema already documents the query parameter with examples. The description adds value by explaining alias recognition and fuzzy matching, giving the agent a more accurate model of what query strings will work.
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 names a specific verb ('look up'), resource ('fundamental physical constant'), and query forms ('name, symbol, or common alias'). It is clearly distinguishable from sibling tools like ref_element_lookup and ref_geo_lookup because the domain is explicit and illustrated with concrete constant 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?
The description makes the use case clear: any time an agent needs a fundamental physical constant and its CODATA 2022 value or uncertainty. It does not explicitly say when to prefer a sibling tool, but the domain distinction is strong enough that the agent can infer the correct context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ref_element_lookupElement LookupARead-onlyInspect
Look up a periodic table element by name, chemical symbol, or atomic number. Returns the full data record: atomic number, symbol, name, atomic mass (in unified atomic mass units), electron configuration, group, period, block, category (e.g., "noble gas", "transition metal"), Pauling electronegativity, density (g/cm³), melting and boiling points in kelvin, and discovery year. Properties unavailable for synthetic or insufficiently studied elements are returned as null.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | Lookup mode: auto tries atomic number, then symbol, then name. | auto |
| query | Yes | Element name (e.g., "tungsten"), chemical symbol (e.g., "W"), or atomic number as a string (e.g., "74"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | IUPAC element name. |
| block | No | Electron block: s, p, d, or f. |
| error | No | Present when the call failed. Absent on success. |
| group | No | Periodic table group number (1–18). Null for lanthanides and actinides. |
| number | No | Atomic number (proton count). |
| period | No | Periodic table period number (1–7). |
| symbol | No | Chemical symbol (e.g., "Fe"). |
| natural | No | True if the element occurs naturally on Earth. |
| category | No | Element category (e.g., "transition metal", "noble gas", "lanthanide"). |
| appearance | No | Physical appearance description. Null for synthetic elements not macroscopically observed. |
| atomic_mass | No | Standard atomic mass in unified atomic mass units (u). Null for unstable elements with no standard mass. |
| radioactive | No | True if all isotopes are radioactive (no stable isotopes). |
| phase_at_stp | No | Phase at standard temperature and pressure: Solid, Liquid, or Gas. |
| discovery_year | No | Year of discovery. Null for elements known since antiquity. |
| boiling_point_k | No | Boiling point in kelvin at standard pressure. Null for unstable or synthetic elements. |
| dataset_version | No | Data source version identifier. |
| melting_point_k | No | Melting point in kelvin at standard pressure. Null for unstable or synthetic elements. |
| density_g_per_cm3 | No | Density in grams per cubic centimeter at STP. Null for synthetic or poorly studied elements. |
| discovery_scientists | No | Scientist(s) credited with discovery. Null for elements known since antiquity. |
| atomic_mass_estimated | No | True when the atomic mass is estimated or based on the most stable isotope rather than a natural abundance average. |
| electron_configuration | No | Electron configuration using noble gas shorthand (e.g., "[Ar] 3d6 4s2"). |
| electronegativity_pauling | No | Pauling electronegativity scale value. Null for noble gases and heavy synthetic elements. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare `readOnlyHint: true`, so the description does not need to restate non-mutation. It adds useful behavioral detail beyond annotations: unavailable properties for synthetic/insufficiently studied elements are explicitly returned as null. No contradiction with annotations exists.
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 front-loaded with the core lookup behavior and then lists the returned record efficiently. The enumeration of fields is long but earns its place by specifying units and null behavior; minor restructuring could improve readability.
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 and read-only annotations, the description is nearly complete: it states accepted inputs, enumerates returned fields, and clarifies null semantics. It does not explicitly describe failure/not-found behavior or when to use a sibling search tool, which keeps it from being fully complete.
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 the input schema already explains `query` and `by` well. The tool description reinforces the query forms but does not add new parameter-level semantics beyond what the schema provides.
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 identifies the verb ('Look up'), the resource ('periodic table element'), and the three accepted input forms. It is clear enough to distinguish from the 'search' siblings, but it does not explicitly name or contrast with `ref_element_search`, so it stops short of a 5.
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 tool's use case is implied by describing exact lookups by name, symbol, or atomic number, and by enumerating the returned fields. However, there is no explicit guidance about when to choose this lookup tool over `ref_element_search` or the other reference lookup siblings, nor any stated exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ref_element_searchElement SearchARead-onlyInspect
Filter periodic table elements by category, group, period, atomic number range, or atomic mass range. At least one filter is required. Returns matching elements as a summary list. Use ref_element_lookup for the full record on a specific element. Valid categories: alkali metal, alkaline earth metal, transition metal, post-transition metal, metalloid, reactive nonmetal, noble gas, lanthanide, actinide.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Periodic table group number (1–18). Lanthanides and actinides have no group. | |
| period | No | Periodic table period (1–7). | |
| category | No | Element category (partial match): alkali metal, alkaline earth metal, transition metal, post-transition metal, metalloid, reactive nonmetal, noble gas, lanthanide, actinide. | |
| atomic_mass_range | No | Inclusive range of atomic mass in unified atomic mass units. | |
| atomic_number_range | No | Inclusive range of atomic numbers to include. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| notice | No | Recovery hint when no elements matched — echoes active filters and suggests how to broaden. |
| results | No | Matching element summaries. |
| totalMatches | No | Number of elements matching all filters. |
| appliedFilters | No | Active filters applied to the search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, and the description adds useful behavioral context: it returns a summary list and requires at least one filter. This exceeds what the schema alone conveys without contradicting 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 front-loaded with the action and filter options, then gives requirements, output shape, and sibling routing. The category list is useful but partially redundant with the schema's own list, keeping it just shy of top score.
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?
Covers what the tool returns, when it must be used, and which sibling to use for full records; the output schema handles return details. It does not specify multi-filter combination semantics, but that is not clearly necessary for this simple search tool.
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 description adds the crucial constraint that at least one filter must be supplied even though the schema lists zero required parameters, and it enumerates valid category values.
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 opens with a specific verb ('Filter') and resource ('periodic table elements'), and enumerates the exact filter dimensions. It also distinguishes itself from ref_element_lookup by stating that lookup provides the full record for a specific element.
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 explicitly states that at least one filter is required, which defines when the tool is applicable. It also routes users to ref_element_lookup for full records, giving clear guidance on which sibling to choose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ref_geo_lookupCountry LookupARead-onlyInspect
Look up a country by name, ISO alpha-2 code (2 letters), or ISO alpha-3 code (3 letters). Returns the full record: capital, region, official languages, currencies, calling codes, TLD, flag emoji, and IANA timezone IDs. Accepts fuzzy name matching — "Brasil" and "Brazil" both resolve.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | Lookup strategy: auto tries alpha2, alpha3, then name in order. | auto |
| query | Yes | Country name (e.g., "Germany"), ISO alpha-2 code (e.g., "DE"), or ISO alpha-3 code (e.g., "DEU"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| tld | No | Country-code top-level domain (e.g., ".de"), or null if not applicable. |
| flag | No | Flag emoji (e.g., 🇩🇪). |
| name | No | Official English country name. |
| error | No | Present when the call failed. Absent on success. |
| alpha2 | No | ISO 3166-1 alpha-2 code (2 letters). |
| alpha3 | No | ISO 3166-1 alpha-3 code (3 letters). |
| notice | No | Present only when the country was resolved via fuzzy name matching (starts-with or contains), not an exact code or name hit. Echoes the query and the resolved country so the caller can normalize follow-up lookups. |
| region | No | Continent-level region (Africa, Americas, Asia, Europe, Oceania, Antarctic). |
| capital | No | Capital city name, or null if not applicable (e.g., Antarctica). |
| languages | No | Official or widely spoken languages in the country. |
| subregion | No | Subregion within the continent (e.g., "Western Europe"), or null if unavailable. |
| timezones | No | IANA timezone IDs observed in this country (e.g., "America/New_York"). |
| currencies | No | Currencies used in the country. |
| native_name | No | Country name in the primary native language. |
| calling_codes | No | International dialing codes with leading + (e.g., "+1", "+44"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already signaling a safe read operation, the description adds useful behavioral context by revealing fuzzy name matching with the concrete example that 'Brasil' and 'Brazil' both resolve. It also summarizes the returned record fields. It does not contradict the annotations, though it does not discuss error or unknown-query behavior.
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 carry all the essential information with no filler. The primary lookup modes are front-loaded, the return contents are summarized efficiently, and the fuzzy matching example adds value without bloating the description.
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 tool with a full input schema, output schema, and readOnlyHint annotation, the description is largely complete: it covers accepted inputs, result contents, and a notable matching behavior. The main gap is the lack of guidance around ambiguous or unknown queries and no sibling differentiation, but those are minor for this 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 baseline is 3, but the description adds real meaning beyond the schema by explaining fuzzy matching behavior and giving concrete input examples for the query parameter. The 'by' parameter is left to the schema, which is acceptable given the schema already documents the auto/name/alpha2/alpha3 strategy.
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 a specific verb and resource: look up a country by name, ISO alpha-2, or alpha-3 code, and returns a full country record. It is understandable on its own, but it does not explicitly distinguish itself from the sibling ref_geo_search, so it stops short of full sibling differentiation.
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 implies when to use the tool: when you have a country identifier and want the full country record, including fuzzy name matches. However, it gives no explicit guidance about when not to use it or what distinguishes it from ref_geo_search and other lookup tools, so usage context remains implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ref_geo_searchCountry SearchARead-onlyInspect
Search and filter countries by region, subregion, language, currency, or free-text keyword. At least one filter is required. Returns a ranked list of matching country summaries. Use ref_geo_lookup to get the full record for a specific result.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (1–100). | |
| region | No | Filter by continent region: Africa, Americas, Asia, Europe, Oceania, or Antarctic. | |
| keyword | No | Matches against country name, native name, capital city, and subregion. | |
| currency | No | ISO 4217 currency code (e.g., "EUR") or currency name (e.g., "Euro"). | |
| language | No | ISO 639-1 language code (e.g., "pt") or language name (e.g., "Portuguese"). | |
| subregion | No | Filter by subregion (e.g., "Western Europe", "Southeast Asia", "South America"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| notice | No | Recovery hint when no countries matched — echoes active filters and suggests how to broaden. |
| results | No | Matching country summaries, up to limit. |
| truncated | No | True when totalMatches exceeds the limit and results are cut off. |
| totalMatches | No | Total countries matching the filters before limit is applied. |
| appliedFilters | No | Active filters applied to the search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds meaningful behavioral context: at least one filter must be supplied, results are ranked, and returns are summaries rather than full records. It does not explain the ranking criteria, but this is a minor gap.
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 three sentences with no redundant phrasing. The essential constraint 'At least one filter is required' appears early, and the pointer to ref_geo_lookup is concise and useful.
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?
The tool has an output schema, so return values need not be described in detail; the description still notes that results are summaries and ranked. The 'at least one filter' constraint and lookup pointer cover the main usage context. A slight gap is the unspecified meaning of 'ranked,' but overall the description is complete enough for selection and invocation.
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 all six parameters are already well documented. The description enumerates the filter dimensions but adds no new meaning beyond the schema's parameter descriptions. Baseline 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 clearly states the tool searches and filters countries by multiple dimensions and returns a ranked list of summaries. It explicitly contrasts itself with ref_geo_lookup, which fetches the full record, making the tool's distinct purpose obvious.
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 states that at least one filter is required, indicating when the tool is appropriate, and explicitly directs users to ref_geo_lookup for full records. This provides clear routing between sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ref_http_statusHTTP Status Code LookupARead-onlyInspect
Look up an HTTP status code by number or keyword. Returns the reason phrase, description, category (1xx Informational, 2xx Success, 3xx Redirection, 4xx Client Error, 5xx Server Error), whether the code is cacheable by default, and the defining RFC with section reference. For keyword queries, returns the closest match plus alternatives.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Numeric status code (e.g., "404" or "422") or descriptive keyword (e.g., "not found", "too many requests", "unprocessable"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| rfc | No | Defining RFC (e.g., "RFC 9110"). |
| code | No | HTTP status code number. |
| error | No | Present when the call failed. Absent on success. |
| category | No | Status code category (1xx Informational, 2xx Success, 3xx Redirection, 4xx Client Error, 5xx Server Error). |
| cacheable | No | Whether this status code is cacheable by default per RFC 9110. |
| description | No | Human-readable description of when and why this status is used. |
| rfc_section | No | RFC section number (e.g., "15.5.5"), or null if not applicable. |
| alternatives | No | Other status codes that matched the keyword query. Present only for keyword searches with multiple matches. |
| reason_phrase | No | IANA reason phrase (e.g., "Not Found"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, indicating a non-destructive read operation. The description adds detail about the return fields (reason phrase, description, category, cacheability, RFC) and behavior for keyword queries (returns closest match plus alternatives). This goes beyond the basic annotation but doesn't describe potential edge cases such as invalid queries or ambiguous matches. Given the annotation covers safety, a 3 is appropriate.
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 concise, covering purpose, return fields, behavior, and keyword handling in three sentences with no redundancy. It is front-loaded with the core purpose first, then elaboration.
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?
The tool has an output schema which likely describes the return structure, so the description doesn't need to explain return values. The description covers query types and return fields, which is sufficient for an agent to call it correctly. It doesn't cover error cases (e.g., unknown code), but the output schema may handle that. Overall, nearly complete.
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%, with the query parameter fully described in the schema ('Numeric status code... or descriptive keyword...'). The description adds examples of keywords and clarifies the output, but does not add significant new information beyond the schema. Baseline 3 is appropriate since the schema already handles parameter documentation.
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 the tool's purpose: looking up HTTP status codes by number or keyword. It specifically lists the resource (HTTP status codes) and the verb (look up), and details what is returned. It is easily distinguishable from siblings which cover constants, elements, geo, timezone, etc.
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 explains when to use this tool: when the user wants information about an HTTP status code by number or keyword. It does not explicitly mention that for other reference lookups (e.g., constants, elements) the user should use sibling tools, but this is implicit from the sibling names and the scope. No exclusions are stated, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ref_mime_typeMIME Type LookupARead-onlyInspect
Look up a MIME type by type string or file extension. Accepts "image/webp", ".webp", or "webp". Returns the canonical MIME type, known file extensions, whether the type is compressible (relevant for Content-Encoding decisions), and the data source (iana, apache, nginx). For extension lookups, returns the canonical MIME type — e.g., ".jpg" resolves to "image/jpeg". When multiple types map to an extension, the canonical type is returned first with alternatives listed.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | MIME type string (e.g., "application/json", "image/webp") or file extension with or without leading dot (e.g., ".webp", "webp", "js", ".html"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | No | Canonical MIME type string (e.g., "image/jpeg"). |
| error | No | Present when the call failed. Absent on success. |
| source | No | Data source: "iana" (IANA registry), "apache", "nginx", or null. |
| extensions | No | Known file extensions for this MIME type, without leading dots. |
| alternatives | No | Other MIME types that also map to the queried extension, when multiple types share the extension. |
| compressible | No | True when this type is compressible (e.g., text and JSON types); false when not; null when unknown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description carries less safety burden, but it adds valuable behavioral detail: it returns the canonical MIME type, known extensions, compressibility flag, and data source. It also discloses how ambiguity is resolved (canonical first, alternatives listed), which is exactly the kind of behavior an agent needs to interpret results correctly. No contradiction with 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 three sentences with no filler. The core purpose and accepted inputs lead, followed by output details and ambiguity handling. Every sentence earns its place and the length is appropriate for the tool's complexity.
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 a fully described parameter, an output schema, and read-only annotations, the description covers all essential aspects: input forms, output contents, behavior on ambiguous extensions, and a use-case hint (Content-Encoding). It leaves no critical gap that would prevent an agent from calling the tool correctly or interpreting its results.
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 already describes the query parameter with examples and 100% coverage, so the baseline is 3. The description adds extra meaning beyond the schema by reinforcing accepted forms ('image/webp', '.webp', 'webp') and providing a concrete resolution example ('.jpg' → 'image/jpeg'), which helps the agent predict output for edge-case extensions. This modest addition justifies a 4.
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 opens with a specific verb and resource: 'Look up a MIME type by type string or file extension.' It clearly distinguishes itself from sibling lookup tools (constants, elements, geo, HTTP status, timezone, unit) by naming the exact resource type. It also states the accepted input forms, leaving no ambiguity about what the tool does.
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 clear usage context: it explains accepted query formats, the behavior for extension lookups ('.jpg' resolves to 'image/jpeg'), and notes compressibility is relevant for Content-Encoding decisions. It does not explicitly name when not to use the tool versus siblings, but the sibling names make the alternative choice obvious, so the absence of exclusions is not a serious gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ref_timezone_convertTimezone ConversionARead-onlyInspect
Convert a local datetime from one timezone to another. Takes a local time string (no UTC offset, e.g., "2026-05-24T15:30:00") interpreted as local time in the source timezone, returns the equivalent local time in the target timezone. Shows both UTC offsets so DST transitions are visible. Accepts full IANA IDs (e.g., "Asia/Tokyo") or unambiguous city names (e.g., "Tokyo").
| Name | Required | Description | Default |
|---|---|---|---|
| to_tz | Yes | Target IANA timezone ID or unambiguous city name (e.g., "America/New_York" or "New York"). | |
| from_tz | Yes | Source IANA timezone ID or unambiguous city name (e.g., "Asia/Tokyo" or "Tokyo"). | |
| datetime | Yes | Local datetime in ISO 8601 format without timezone offset (e.g., "2026-05-24T15:30:00"). Do not include "Z" or an offset suffix. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| source | No | Source datetime details. |
| target | No | Target datetime details. |
| utc_equivalent | No | The UTC equivalent of the input datetime (ISO 8601 with Z suffix). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and openWorldHint=false, covering the safety profile. The description adds valuable behavioral context beyond annotations: it explains that the input is interpreted as local time in the source timezone, that the output shows both UTC offsets to make DST transitions visible, and that it accepts IANA IDs or city names. This exceeds the minimal disclosure required and does not contradict 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 three sentences, front-loaded with the core verb and purpose. It efficiently conveys input format, output behavior, and accepted timezone formats without redundancy. It could be slightly tightened, but every sentence carries meaningful information and there is no fluff.
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?
The tool has an output schema (indicated by context signals), so return values are already covered. The description fully explains the input contract (local datetime, source/target timezones), the interpretation rule (local time without offset), and the output behavior (equivalent local time with UTC offsets for DST visibility). No critical information needed for correct invocation 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 schema description coverage is 100%, so all three parameters (datetime, from_tz, to_tz) are already documented with descriptions. The description reinforces the datetime format (no offset) but does not add substantive meaning beyond the schema. It mentions accepted formats for timezones (IANA IDs or city names), which is also present in the schema. Thus, baseline 3 is appropriate; the description adds no critical param semantics beyond what the schema provides.
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 ('Convert'), a precise resource (local datetime from one timezone to another), and explicitly defines input/output semantics. It distinguishes itself from the sibling ref_timezone_lookup (which implies lookup, not conversion) by describing the conversion action and output format.
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 clearly conveys when to use the tool (converting local datetimes between timezones) and provides usage context (input is local time without offset, output shows both UTC offsets). It does not explicitly mention when not to use it or name the lookup sibling as an alternative, but the conversion purpose is unambiguous enough to imply selection over a lookup tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ref_timezone_lookupTimezone LookupARead-onlyInspect
Get timezone info by IANA ID, country code, or partial city/region name. Returns current UTC offset, standard offset, whether DST is currently active, and major cities in the timezone. When querying by country code (ISO alpha-2), returns all timezones observed in that country. Accepts partial matches — "Tokyo" resolves to "Asia/Tokyo", "NY" resolves to "America/New_York".
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ISO 8601 datetime to evaluate timezone state at a specific moment (e.g., "2026-01-15T12:00:00"). Defaults to current time. | |
| by | No | Lookup mode: iana for exact IANA ID, country for ISO alpha-2 code, auto tries all strategies. | auto |
| query | Yes | IANA timezone ID (e.g., "America/New_York"), ISO alpha-2 country code (e.g., "US"), or partial city/region name (e.g., "Tokyo", "London"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| timezones | No | Matching timezone records. Multiple records when querying by country. |
| evaluated_at | No | ISO 8601 UTC datetime at which timezone state was evaluated. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds valuable behavioral detail beyond structured data: partial matching behavior with concrete examples ('Tokyo' resolves to 'Asia/Tokyo', 'NY' resolves to 'America/New_York') and the country-mode behavior of returning all timezones observed in that country.
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 focused sentences with no filler. The core purpose is front-loaded, followed by output details and then behavior examples, so the most important information appears first and every sentence 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?
The description covers query modes, return fields, country behavior, and partial matching, while the output schema handles return shape details. For a read-only lookup tool, nothing essential is missing for an agent to invoke 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 baseline is 3. The description adds semantic value beyond the schema by illustrating partial-match resolution and clarifying that country mode returns multiple timezones, which helps the agent anticipate return variety.
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 opens with a specific verb plus resource: 'Get timezone info by IANA ID, country code, or partial city/region name.' It clearly differentiates this from siblings like ref_timezone_convert by specifying lookup-oriented outputs such as UTC offset, DST status, and major cities.
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 clear context on when to use it: any timezone info lookup by ID, country, or partial name. It also explains mode behavior ('auto tries all strategies') and country-query semantics. It does not explicitly name alternatives or exclusion cases, but the context is specific enough for an agent to apply correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ref_unit_convertUnit ConversionARead-onlyInspect
Convert a numeric value between compatible units of measure. Supports: length (mm, cm, m, km, in, ft, yd, mi), mass (mcg, mg, g, kg, oz, lb, mt = metric tonne / 1000 kg, t = US short ton / 907.18 kg), volume (ml, cl, dl, l, kl, tsp, Tbs, fl-oz, cup, pnt, qt, gal, m3), temperature (C, F, K, R — non-linear conversions handled), speed (m/s, km/h, knot, ft/s), pressure (Pa, kPa, MPa, hPa, bar, torr, psi), energy (J, kJ, Wh, kWh, MWh), power (W, mW, kW, MW, GW), frequency (Hz, kHz, MHz, GHz), digital storage (b, Kb, Mb, Gb, Tb, B, KB, MB, GB, TB), and angle (deg, rad, grad). Incompatible units (e.g., km to kg) return an error identifying the quantity mismatch.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Target unit abbreviation (e.g., "mi", "F", "m/s", "kJ", "lb"). | |
| from | Yes | Source unit abbreviation (e.g., "km", "C", "m/h", "kWh", "kg"). | |
| value | Yes | Numeric quantity to convert. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| value | No | Input value as provided. |
| result | No | Converted value (full precision float). |
| measure | No | Physical quantity being measured (e.g., "length", "mass", "temperature"). |
| to_unit | No | Target unit as recognized. |
| from_unit | No | Source unit as recognized. |
| result_precision | No | Human-readable rounded form of the result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already communicates safety, and the description adds meaningful behavioral context: non-linear temperature conversions are handled, unit aliases like 'mt' and 't' are defined with their base values, and mismatched quantities produce an error. Precision or rounding behavior is absent, but the output schema mitigates that gap.
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 front-loaded with the core action and then gives a dense but necessary inventory of supported units. Every sentence earns its place: the first states the purpose, the second lists admissible units, and the third explains failure behavior. The long unit lists could be more scannable with line breaks, but there is no wasted prose.
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 conversion tool with three simple parameters, a read-only annotation, and an output schema, the description covers all needed information: supported categories, unit abbreviations, alias definitions, non-linear handling, and the mismatch error case. An agent can select and invoke this tool correctly without further inference.
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 already documents value, from, and to with 100% coverage, so the baseline is 3. The description adds value by providing the accepted unit catalog, aliases, and category groupings, which directly informs what values can be passed to from and to.
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: 'Convert a numeric value between compatible units of measure.' It enumerates 11 supported quantity types and their unit abbreviations, making it easy to distinguish from sibling reference-lookup tools. The physical-unit scope also separates it from timezone_convert without ambiguity.
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?
Clearly scopes usage to compatible units and explicitly states that incompatible units return an error identifying the quantity mismatch. It does not explicitly name alternative tools or say when not to use it, but the detailed categorization of physical units makes the boundary reasonably clear.
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.
10 tool updates
- First observed
ref_constant_lookup - First observed
ref_element_lookup - First observed
ref_element_search - First observed
ref_geo_lookup - First observed
ref_geo_search - First observed
ref_http_status - First observed
ref_mime_type - First observed
ref_timezone_convert - First observed
ref_timezone_lookup - First observed
ref_unit_convert
Related MCP Connectors
- groundOAuthfyi.ground
Reference data API for classification systems, real-time world data, and unit conversions
Exact reference codes for AI agents: countries, currencies with minor units, HTTP status, MIME.
Geocoding, weather forecasts, and timezone lookups
60+ units, live FX, timezones, and date arithmetic for AI agents.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceEnables local, no-API-key access to country data lookup and search, text and case conversion, and human-friendly number and date formatting through MCP tools.3Apache 2.0- FlicenseNot gradedqualityDmaintenanceConverts units, currencies, timezones, and dates with a generous free tier of 500 calls/month.1-
- AlicenseNot gradedqualityCmaintenanceProvides deterministic, stateless tools for common data work including JSON, CSV, text, encoding, hashing, IDs, date/time, and number statistics.MIT
- AlicenseNot gradedqualityBmaintenanceProvides public holidays, long weekends, and country data for 202 countries via the Nager.Date API, with client-side filtering and timezone-aware checks.BSD Zero Clause
Glama MCP Gateway
Add one secure layer between your agents and this server.