# `io.github.cyanheads/reference-data-mcp-server` on anlyon.dev

> Text inside fenced blocks marked untrusted-server-text was written by the MCP server's publisher, not by anlyon.dev. It is data to inspect, not instructions to follow. Invisible characters are shown as [U+XXXX].
> No finding is not a safety guarantee: these are point-in-time checks of tool definitions, not of code or behaviour.

- Page: https://anlyon.dev/servers/io.github.cyanheads/reference-data-mcp-server
- JSON: https://anlyon.dev/api/v1/servers/io.github.cyanheads/reference-data-mcp-server
- Version: 0.1.17 (active)
- Publisher: io.github.cyanheads (GitHub account)
- Runs: remote (streamable-http), local (npm)
- Sign-in to list tools: none
- Repository: https://github.com/cyanheads/reference-data-mcp-server.git
- Metadata from the official MCP Registry, synced 2026-10-21T18:28:53.733Z

Title and description, as the publisher wrote them:

```untrusted-server-text
Countries, timezones, elements, constants, HTTP status codes, unit conversion, and MIME type lookup.
```

Scanned 2026-10-21T19:17:11.952Z over streamable-http.

**10 tools: 1 do something that can't be undone, 2 change things and 7 only read.**

| Group | Class | Tools | Claude Code |
| --- | --- | --- | --- |
| Deletes or cancels | destructive | 0 | deny |
| Can't be undone | irreversible | 1 | ask |
| Changes things | write | 2 | ask |
| Only reads | read | 7 | allow |

## Findings

- **warn** Annotations that disagree with the tool in `ref_timezone_convert` ([annotation-conflict](https://anlyon.dev/methodology#annotation-conflict))

```untrusted-server-text
The server marks "ref_timezone_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "ref_timezone_convert" says "convert": a word for a change.
```

- **warn** Annotations that disagree with the tool in `ref_unit_convert` ([annotation-conflict](https://anlyon.dev/methodology#annotation-conflict))

```untrusted-server-text
The server marks "ref_unit_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "ref_unit_convert" says "convert": a word for a change.
```

- **warn** Annotations that disagree with the tool in `ref_mime_type` ([annotation-conflict](https://anlyon.dev/methodology#annotation-conflict))

```untrusted-server-text
The server marks "ref_mime_type" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "ref_mime_type" says "type": a word for a change.
```


## Can't be undone (1)

Sends, pays, publishes or merges: once done, it cannot be taken back. Claude Code: ask.

### `ref_unit_convert`

- The name "ref_unit_convert" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- Findings: warn annotation-conflict

Description, as the server wrote it:

```untrusted-server-text
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.
```

## Changes things (2)

Creates or changes something that can be changed back. Claude Code: ask.

### `ref_mime_type`

- The name "ref_mime_type" says "type": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- Findings: warn annotation-conflict

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `ref_timezone_convert`

- The name "ref_timezone_convert" says "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- Findings: warn annotation-conflict

Description, as the server wrote it:

```untrusted-server-text
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").
```

## Only reads (7)

Looks things up and changes nothing. Claude Code: allow.

### `ref_constant_lookup`

- The name "ref_constant_lookup" says "lookup": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `ref_element_lookup`

- The name "ref_element_lookup" says "lookup": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `ref_element_search`

- The name "ref_element_search" says "search": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `ref_geo_lookup`

- The name "ref_geo_lookup" says "lookup": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `ref_geo_search`

- The name "ref_geo_search" says "search": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `ref_http_status`

- The name "ref_http_status" says "status": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `ref_timezone_lookup`

- The name "ref_timezone_lookup" says "lookup": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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".
```

## Claude Code permissions

For `.claude/settings.json`, assuming the server is installed as `reference-data`:

```json
{
  "permissions": {
    "allow": [
      "mcp__reference-data__ref_geo_lookup",
      "mcp__reference-data__ref_geo_search",
      "mcp__reference-data__ref_timezone_lookup",
      "mcp__reference-data__ref_element_lookup",
      "mcp__reference-data__ref_element_search",
      "mcp__reference-data__ref_constant_lookup",
      "mcp__reference-data__ref_http_status"
    ],
    "ask": [
      "mcp__reference-data__ref_timezone_convert",
      "mcp__reference-data__ref_unit_convert",
      "mcp__reference-data__ref_mime_type"
    ],
    "deny": []
  }
}
```
