Tools · data
Time zone conversion (IANA tz database, DST-aware)
One instant as wall-clock time in up to 20 IANA time zones: local time with offset, abbreviation, DST state, weekday and date. A local time is read in `from`; one skipped or repeated by a DST change is resolved by a stated rule and flagged. Years 1970-2100. Send {} for now in eight major zones. Bad input is 400, an unknown zone 404 - neither is charged. Pay-per-call via x402.
$0.001 per call, paid in USDC on Base or Solana with x402 — no account, no API key. POST https://fiatdock.com/v1/time/convert (or GET with the same fields as query parameters) · MCP tool timezone_convert. An answer the tool cannot produce is refused with 4xx/5xx and is not charged.
Inputs
| Field | Type | Description | Example |
|---|---|---|---|
time | string | The moment to convert, ISO 8601: with Z or an offset ("2026-10-08T15:00:00Z", "2026-10-08T15:00+02:00") it is an absolute instant; without one ("2026-10-08T15:00") it is wall-clock time in `from`; a bare date means 00:00 there. Years 1970-2100. Default: now | "2026-10-08T15:00" |
from | string | IANA time zone a local `time` is read in (and shown in as fromLocalTime), e.g. America/New_York; default UTC | "America/New_York" |
to | string | IANA time zones to show the instant in, up to 20 (default America/Los_Angeles,America/New_York,Europe/London,Europe/Berlin,Asia/Dubai,Asia/Kolkata,Asia/Tokyo,Australia/Sydney) (comma-separated, or a JSON array) | "Europe/Berlin,Asia/Tokyo" |
Example
Request body
{"time":"2026-10-08T15:00","from":"America/New_York","to":"Europe/Berlin,Asia/Tokyo"}
Answer (the published example)
{"instantUtc":"2026-10-08T19:00:00.000Z","inputWasLocal":true,"localTimeIssue":null,"alternativeInstantUtc":null,"from":"America/New_York","fromLocalTime":"2026-10-08T15:00:00-04:00","count":2,"times":[{"zone":"Europe/Berlin","resolvedZone":"Europe/Berlin","localTime":"2026-10-08T21:00:00+02:00","utcOffset":"+02:00","abbreviation":"GMT+2","isDst":true,"dayOfWeek":"Thursday","date":"2026-10-08"},{"zone":"Asia/Tokyo","resolvedZone":"Asia/Tokyo","localTime":"2026-10-09T04:00:00+09:00","utcOffset":"+09:00","abbreviation":"GMT+9","isDst":false,"dayOfWeek":"Friday","date":"2026-10-09"}],"source":"IANA time zone database via Node.js Intl (ICU 78.3, tz 2026c)","asOf":"2026-10-08T12:00:00.000Z","note":"localTime is the wall-clock time in each zone at instantUtc, with that zone's UTC offset. A time with no Z or offset is read as wall-clock time in `from`."}
Call it
curl
# 1) ask: an unpaid call answers 402 with the exact price (free)
curl -i -X POST https://fiatdock.com/v1/time/convert -H 'content-type: application/json' -d '{"time":"2026-10-08T15:00","from":"America/New_York","to":"Europe/Berlin,Asia/Tokyo"}'
# 2) pay: any x402 client signs that 402 and resends — see Node or Python below
Node
// npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";
const pay = wrapFetchWithPaymentFromConfig(fetch, {
schemes: [{ network: "eip155:*", client: new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_PRIVATE_KEY)) }],
});
const r = await pay("https://fiatdock.com/v1/time/convert", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({"time":"2026-10-08T15:00","from":"America/New_York","to":"Europe/Berlin,Asia/Tokyo"}),
});
console.log(r.status, await r.json());
Python
# pip install "x402[httpx,evm]"
import asyncio, json, os
from eth_account import Account
from x402 import x402Client
from x402.http.clients import x402HttpxClient
from x402.mechanisms.evm.exact import register_exact_evm_client
async def main():
client = register_exact_evm_client(x402Client(), Account.from_key(os.environ["AGENT_PRIVATE_KEY"]))
async with x402HttpxClient(client) as http:
r = await http.post("https://fiatdock.com/v1/time/convert", json=json.loads("{\"time\":\"2026-10-08T15:00\",\"from\":\"America/New_York\",\"to\":\"Europe/Berlin,Asia/Tokyo\"}"))
print(r.status_code, r.json())
asyncio.run(main())
MCP (Claude, Cursor, any MCP client)
{"mcpServers":{"fiatdock":{"command":"npx","args":["-y","fiatdock-mcp"],"env":{"AGENT_PRIVATE_KEY":"0x<your agent wallet key>"}}}}
// then call the tool "timezone_convert" — the package pays each call from that wallet
The wallet needs USDC on Base. Prefer no install? The remote server https://fiatdock.com/mcp answers the 402 as tool output for an agent that signs its own payments.
Related tools
- Address intelligence on Base — $0.0045
- Base gas price — $0.001
- Base latest block — $0.001
- ETH balance on Base — $0.001
- USDC balance on Base — $0.001
- ERC-20 token metadata — $0.002
Machine-readable: OpenAPI · tools.json · llms.txt · /.well-known/x402