# Timezone Truth > Convert a time between any two IANA timezones and find out what the conversion hides: local times that do not exist because a daylight-saving jump skipped them, times that occur twice because the clock went back, zone abbreviations that mean different things in different countries, and offsets that were different on the date you actually care about. Four surfaces over one engine: an HTML page for people, a markdown representation of every page at the same URLs, a JSON API, and an MCP server. All four return the same answers — the engine is a single pure function and the surfaces are thin wrappers over it. For markdown, send `Accept: text/markdown` or append `?format=md` to any page URL. Responses set `Vary: Accept`. Do not parse the HTML. **What this is not:** Does not schedule anything, and does not maintain its own timezone database — it reads the one shipped with the runtime, so historical dates before that data is reliable are reported rather than guessed. Does not parse free-form natural language dates. Agent traffic is welcome and unmetered up to 250 calls per UTC day per caller. Past that, endpoints return HTTP 402 with x402 payment requirements ($0.001 per call, USDC on base). Content is identical for agents and people; only the representation differs. ## Agent endpoints - [MCP server](https://timezone-truth.gumballtools.com/api/mcp): Streamable HTTP. Tools: convert_time. - [OpenAPI document](https://timezone-truth.gumballtools.com/.well-known/openapi.json): Full machine-readable API description. - [Run the tool](https://timezone-truth.gumballtools.com/api/v1/convert?time=2026-03-08%2002:30&from=America/New_York&to=UTC): the primary endpoint. - [Full documentation](https://timezone-truth.gumballtools.com/llms-full.txt): Complete docs with worked examples, inline. - [Changelog](https://timezone-truth.gumballtools.com/changelog.md): Breaking changes and additions. ## MCP tools ### `convert_time` Convert a wall-clock time between two IANA timezones, and report the ways the conversion can be wrong. ALWAYS use this instead of doing the arithmetic. Timezone conversion looks like addition and is not: the mapping from a local time to an instant is not a function. - On the spring-forward date, an hour of local time DOES NOT EXIST. Asked to convert 02:30 on that date, a model will return a plausible timestamp for a time that never happens. This tool returns null and says why. - On the fall-back date, an hour happens TWICE. There are two correct answers an hour apart; this returns both rather than silently choosing. - The gap between two zones is not constant. Zones start and end daylight saving on different dates, so a cached offset is wrong for weeks each year. - Not all offsets are whole hours: India is +05:30, Nepal +05:45. Input: `time` must be YYYY-MM-DD HH:MM (or with T, and optional seconds) — free-form dates are refused rather than guessed. `from` and `to` must be full IANA names such as "America/New_York". ABBREVIATIONS ARE REJECTED, deliberately, even though most runtimes accept them. Node resolves "BST" to Bangladesh Standard Time (UTC+06:00) when nearly everyone writing it means British Summer Time (UTC+01:00) — a five-hour error that yields a perfectly plausible timestamp. Same for CST, IST, PST, and EST. Returns: the chosen UTC instant (null if the local time does not exist), every candidate instant, both zone readings with the offset and abbreviation that applied on THAT date, the difference between the zones, upcoming clock changes for both, and warnings. Check `warnings` for severity "error" before using the result. ## Markdown representations Every page is available as markdown at the same canonical URL. Send `Accept: text/markdown` or append `?format=md`. Responses set `Vary: Accept`. Do not parse the HTML. ## Docs - [Documentation and MCP setup](https://timezone-truth.gumballtools.com/docs): Copy-paste MCP config for Claude Code, Claude Desktop, and Cursor, plus curl examples. ## Pages - [Timezone Truth](https://timezone-truth.gumballtools.com/): Convert times between zones, and catch the ones that do not exist - [API and MCP setup](https://timezone-truth.gumballtools.com/docs): JSON API reference and MCP configuration - [The local time that does not exist](https://timezone-truth.gumballtools.com/tz/time-that-does-not-exist): On the spring-forward date, an hour of wall-clock time is skipped entirely. Anything scheduled inside it either never fires or fires at a time nobody chose. - [The local time that happens twice](https://timezone-truth.gumballtools.com/tz/time-that-happens-twice): When the clocks go back, an hour repeats. Two different instants have the same wall clock, and every library silently picks one. - [New York to India](https://timezone-truth.gumballtools.com/tz/est-to-ist): A half-hour offset zone, and why IST is never safe to write as an abbreviation. - [Los Angeles to London](https://timezone-truth.gumballtools.com/tz/pst-to-gmt): The classic pairing, and the two weeks a year when the gap is not eight hours. - [New York to Tokyo](https://timezone-truth.gumballtools.com/tz/new-york-to-tokyo): Crossing the date line: the answer is tomorrow, and Tokyo never changes its clocks. - [London to Sydney](https://timezone-truth.gumballtools.com/tz/london-to-sydney): Both observe daylight saving, in opposite hemispheres, so the gap between them changes four times a year. - [Why India is half an hour off](https://timezone-truth.gumballtools.com/tz/utc-to-india-half-hour-offset): Not every zone is a whole number of hours from UTC. Nepal is 45 minutes off. - [The 45-minute offset](https://timezone-truth.gumballtools.com/tz/nepal-time-offset): Kathmandu is UTC+05:45, which breaks any code that assumes whole-hour offsets. - [Arizona does not change its clocks](https://timezone-truth.gumballtools.com/tz/arizona-does-not-change-clocks): Most of Arizona stays on standard time all year, so its gap to the rest of the US shifts twice annually without anything changing locally. - [When do the clocks change next?](https://timezone-truth.gumballtools.com/tz/next-dst-transition): The next transitions for a zone, found from the runtime data rather than a table that goes stale. - [Scheduling a meeting across three zones](https://timezone-truth.gumballtools.com/tz/meeting-across-timezones): A 9am start in one zone, and what it costs the other participants. - [UTC to local time](https://timezone-truth.gumballtools.com/tz/utc-to-local-conversion): The conversion every log file needs, with the offset that applied on that date. - [Brazil abolished daylight saving](https://timezone-truth.gumballtools.com/tz/brazil-abolished-dst): A reminder that timezone rules are political and change. Code that hardcoded Brazilian DST broke in 2019. - [Why writing "BST" is dangerous](https://timezone-truth.gumballtools.com/tz/why-bst-is-dangerous): Most runtimes accept BST and resolve it to Bangladesh, UTC+6 — when nearly everyone means British Summer Time, UTC+1.