Serveur MCP

Epoch Calculator

com.epochcalc/epochcalc
Outils développeur Public et accessible MCP 2026-07-28

Ce que fait ce MCP

Performs timestamp, timezone, duration, cron, date parsing, calendar arithmetic, and holiday countdown calculations.

convert_timestamp
Convert a Unix timestamp (seconds or milliseconds; auto-detected unless unit is given) to a human-readable date in a time zone, with ISO 8601, RFC 2822, UTC offset, DST flag, weekday, and a relative phrase like "3 days ago".
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['timestamp'], 'properties': {'unit': {'enum': ['auto', 'seconds', 'milliseconds'], 'type': 'string', 'description': 'Interpretation of timestamp. Default auto.'}, 'timezone': {'type': 'string', 'description': 'IANA time zone, e.g. "America/New_York". Defaults to UTC.'}, 'timestamp': {'type': 'number', 'description': 'Unix timestamp. Values >= 1e11 are treated as milliseconds unless unit is set.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['epoch_seconds', 'epoch_millis', 'iso', 'utc_iso', 'timezone', 'offset', 'offset_minutes', 'abbreviation', 'is_dst', 'weekday', 'rfc2822', 'human', 'relative'], 'properties': {'iso': {'type': 'string', 'description': 'ISO 8601 with the zone offset.'}, 'human': {'type': 'string', 'description': 'Readable sentence with weekday, date, time and zone.'}, 'is_dst': {'type': 'boolean', 'description': 'Whether daylight-saving time is in effect.'}, 'offset': {'type': 'string', 'description': 'UTC offset, e.g. "+09:00".'}, 'rfc2822': {'type': 'string', 'description': 'RFC 2822 date string.'}, 'utc_iso': {'type': 'string', 'description': 'ISO 8601 in UTC (Z).'}, 'weekday': {'type': 'string', 'description': 'Full weekday name in English.'}, 'relative': {'type': 'string', 'description': 'Relative phrase such as "3 days ago".'}, 'timezone': {'type': 'string', 'description': 'IANA zone name.'}, 'abbreviation': {'type': 'string', 'description': 'Zone abbreviation at that instant, e.g. "BST".'}, 'epoch_millis': {'type': 'integer', 'description': 'Unix time in milliseconds.'}, 'epoch_seconds': {'type': 'integer', 'description': 'Unix time in seconds.'}, 'offset_minutes': {'type': 'integer', 'description': 'UTC offset in minutes.'}}, 'description': 'One instant described in one IANA time zone.'}
convert_timezone
Convert a wall-clock date/time from one IANA time zone to another, correctly across daylight-saving transitions. Returns both sides with offsets, the hour difference at that instant, and whether either zone is on DST.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['datetime', 'from_timezone', 'to_timezone'], 'properties': {'datetime': {'type': 'string', 'description': 'ISO 8601 date/time, e.g. "2026-09-06T09:30". If it has no offset it is read as wall time in from_timezone.'}, 'to_timezone': {'type': 'string', 'description': 'Target IANA zone, e.g. "Europe/London".'}, 'from_timezone': {'type': 'string', 'description': 'Source IANA zone, e.g. "Asia/Tokyo".'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['source', 'target', 'difference_hours', 'same_instant_utc'], 'properties': {'source': {'type': 'object', 'required': ['epoch_seconds', 'epoch_millis', 'iso', 'utc_iso', 'timezone', 'offset', 'offset_minutes', 'abbreviation', 'is_dst', 'weekday', 'rfc2822', 'human'], 'properties': {'iso': {'type': 'string', 'description': 'ISO 8601 with the zone offset.'}, 'human': {'type': 'string', 'description': 'Readable sentence with weekday, date, time and zone.'}, 'is_dst': {'type': 'boolean', 'description': 'Whether daylight-saving time is in effect.'}, 'offset': {'type': 'string', 'description': 'UTC offset, e.g. "+09:00".'}, 'rfc2822': {'type': 'string', 'description': 'RFC 2822 date string.'}, 'utc_iso': {'type': 'string', 'description': 'ISO 8601 in UTC (Z).'}, 'weekday': {'type': 'string', 'description': 'Full weekday name in English.'}, 'timezone': {'type': 'string', 'description': 'IANA zone name.'}, 'abbreviation': {'type': 'string', 'description': 'Zone abbreviation at that instant, e.g. "BST".'}, 'epoch_millis': {'type': 'integer', 'description': 'Unix time in milliseconds.'}, 'epoch_seconds': {'type': 'integer', 'description': 'Unix time in seconds.'}, 'offset_minutes': {'type': 'integer', 'description': 'UTC offset in minutes.'}}, 'description': 'One instant described in one IANA time zone.'}, 'target': {'type': 'object', 'required': ['epoch_seconds', 'epoch_millis', 'iso', 'utc_iso', 'timezone', 'offset', 'offset_minutes', 'abbreviation', 'is_dst', 'weekday', 'rfc2822', 'human'], 'properties': {'iso': {'type': 'string', 'description': 'ISO 8601 with the zone offset.'}, 'human': {'type': 'string', 'description': 'Readable sentence with weekday, date, time and zone.'}, 'is_dst': {'type': 'boolean', 'description': 'Whether daylight-saving time is in effect.'}, 'offset': {'type': 'string', 'description': 'UTC offset, e.g. "+09:00".'}, 'rfc2822': {'type': 'string', 'description': 'RFC 2822 date string.'}, 'utc_iso': {'type': 'string', 'description': 'ISO 8601 in UTC (Z).'}, 'weekday': {'type': 'string', 'description': 'Full weekday name in English.'}, 'timezone': {'type': 'string', 'description': 'IANA zone name.'}, 'abbreviation': {'type': 'string', 'description': 'Zone abbreviation at that instant, e.g. "BST".'}, 'epoch_millis': {'type': 'integer', 'description': 'Unix time in milliseconds.'}, 'epoch_seconds': {'type': 'integer', 'description': 'Unix time in seconds.'}, 'offset_minutes': {'type': 'integer', 'description': 'UTC offset in minutes.'}}, 'description': 'One instant described in one IANA time zone.'}, 'difference_hours': {'type': 'number', 'description': 'target offset minus source offset, in hours.'}, 'same_instant_utc': {'type': 'string', 'description': 'The shared instant as ISO 8601 UTC.'}}}
cron_next_runs
Explain a 5- or 6-field cron expression in plain English and list its next run times in a time zone (as ISO 8601 and Unix timestamps). Use to answer "when does this cron job run next?" or to validate an expression.
Lecture seule
Schéma d’entrée
{'type': 'object', 'required': ['expression'], 'properties': {'from': {'type': 'string', 'description': 'Start evaluating after this date/time (ISO 8601). Defaults to now.'}, 'count': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'How many upcoming runs to return. Default 5.'}, 'timezone': {'type': 'string', 'description': 'Zone the schedule is evaluated in. Defaults to UTC.'}, 'expression': {'type': 'string', 'description': 'Cron expression, e.g. "0 9 * * 1-5".'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['expression', 'description', 'timezone', 'next_runs'], 'properties': {'timezone': {'type': 'string'}, 'next_runs': {'type': 'array', 'items': {'type': 'object', 'required': ['iso', 'utc_iso', 'epoch_seconds', 'weekday'], 'properties': {'iso': {'type': 'string'}, 'utc_iso': {'type': 'string'}, 'weekday': {'type': 'string'}, 'epoch_seconds': {'type': 'integer'}}}}, 'expression': {'type': 'string'}, 'description': {'type': 'string', 'description': 'Plain-English reading of the expression.'}}}
date_duration
The exact duration between two dates or date-times: calendar years/months/days, plus total days, hours, minutes and seconds, and the number of weekdays (Mon-Fri). Handles leap years and DST via the IANA database.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['start', 'end'], 'properties': {'end': {'type': 'string', 'description': 'End date/time (ISO 8601 or Unix timestamp).'}, 'start': {'type': 'string', 'description': 'Start date/time (ISO 8601 or Unix timestamp).'}, 'timezone': {'type': 'string', 'description': 'IANA time zone, e.g. "America/New_York". Defaults to UTC.'}, 'include_end': {'type': 'boolean', 'description': 'Count the end date as a full day (adds one day). Default false.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['start', 'end', 'direction', 'years', 'months', 'days', 'hours', 'minutes', 'seconds', 'total_days', 'total_hours', 'total_minutes', 'total_seconds', 'weekdays', 'weekend_days', 'human'], 'properties': {'end': {'type': 'object', 'required': ['epoch_seconds', 'epoch_millis', 'iso', 'utc_iso', 'timezone', 'offset', 'offset_minutes', 'abbreviation', 'is_dst', 'weekday', 'rfc2822', 'human'], 'properties': {'iso': {'type': 'string', 'description': 'ISO 8601 with the zone offset.'}, 'human': {'type': 'string', 'description': 'Readable sentence with weekday, date, time and zone.'}, 'is_dst': {'type': 'boolean', 'description': 'Whether daylight-saving time is in effect.'}, 'offset': {'type': 'string', 'description': 'UTC offset, e.g. "+09:00".'}, 'rfc2822': {'type': 'string', 'description': 'RFC 2822 date string.'}, 'utc_iso': {'type': 'string', 'description': 'ISO 8601 in UTC (Z).'}, 'weekday': {'type': 'string', 'description': 'Full weekday name in English.'}, 'timezone': {'type': 'string', 'description': 'IANA zone name.'}, 'abbreviation': {'type': 'string', 'description': 'Zone abbreviation at that instant, e.g. "BST".'}, 'epoch_millis': {'type': 'integer', 'description': 'Unix time in milliseconds.'}, 'epoch_seconds': {'type': 'integer', 'description': 'Unix time in seconds.'}, 'offset_minutes': {'type': 'integer', 'description': 'UTC offset in minutes.'}}, 'description': 'One instant described in one IANA time zone.'}, 'days': {'type': 'integer'}, 'hours': {'type': 'integer'}, 'human': {'type': 'string', 'description': 'Calendar duration in words, e.g. "1 year, 2 months, 3 days".'}, 'start': {'type': 'object', 'required': ['epoch_seconds', 'epoch_millis', 'iso', 'utc_iso', 'timezone', 'offset', 'offset_minutes', 'abbreviation', 'is_dst', 'weekday', 'rfc2822', 'human'], 'properties': {'iso': {'type': 'string', 'description': 'ISO 8601 with the zone offset.'}, 'human': {'type': 'string', 'description': 'Readable sentence with weekday, date, time and zone.'}, 'is_dst': {'type': 'boolean', 'description': 'Whether daylight-saving time is in effect.'}, 'offset': {'type': 'string', 'description': 'UTC offset, e.g. "+09:00".'}, 'rfc2822': {'type': 'string', 'description': 'RFC 2822 date string.'}, 'utc_iso': {'type': 'string', 'description': 'ISO 8601 in UTC (Z).'}, 'weekday': {'type': 'string', 'description': 'Full weekday name in English.'}, 'timezone': {'type': 'string', 'description': 'IANA zone name.'}, 'abbreviation': {'type': 'string', 'description': 'Zone abbreviation at that instant, e.g. "BST".'}, 'epoch_millis': {'type': 'integer', 'description': 'Unix time in milliseconds.'}, 'epoch_seconds': {'type': 'integer', 'description': 'Unix time in seconds.'}, 'offset_minutes': {'type': 'integer', 'description': 'UTC offset in minutes.'}}, 'description': 'One instant described in one IANA time zone.'}, 'years': {'type': 'integer'}, 'months': {'type': 'integer'}, 'minutes': {'type': 'integer'}, 'seconds': {'type': 'integer'}, 'weekdays': {'type': 'integer', 'description': 'Monday to Friday days in the span.'}, 'direction': {'enum': ['forward', 'backward'], 'type': 'string'}, 'total_days': {'type': 'integer'}, 'total_hours': {'type': 'integer'}, 'weekend_days': {'type': 'integer'}, 'total_minutes': {'type': 'integer'}, 'total_seconds': {'type': 'integer'}}}
days_until
Countdown to a holiday or to a date: days, hours and minutes remaining, and the next occurrence date. Pass an event slug (e.g. "christmas", "thanksgiving", "easter", "super-bowl") or a date (YYYY-MM-DD). Call with no arguments to list the known events.
Lecture seule
Schéma d’entrée
{'type': 'object', 'properties': {'date': {'type': 'string', 'description': 'A target date (YYYY-MM-DD) or date-time (ISO 8601) instead of an event.'}, 'event': {'type': 'string', 'description': 'Event slug from the known list, e.g. "christmas".'}, 'timezone': {'type': 'string', 'description': 'Zone whose midnight starts the target day. Defaults to UTC.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'days': {'type': 'integer'}, 'name': {'type': 'string'}, 'hours': {'type': 'integer'}, 'human': {'type': 'string', 'description': 'e.g. "in 12 days, 5 hours".'}, 'events': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'name'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'description': {'type': 'string'}}}, 'description': 'Known events (only when called with no arguments).'}, 'target': {'type': 'object', 'required': ['epoch_seconds', 'epoch_millis', 'iso', 'utc_iso', 'timezone', 'offset', 'offset_minutes', 'abbreviation', 'is_dst', 'weekday', 'rfc2822', 'human'], 'properties': {'iso': {'type': 'string', 'description': 'ISO 8601 with the zone offset.'}, 'human': {'type': 'string', 'description': 'Readable sentence with weekday, date, time and zone.'}, 'is_dst': {'type': 'boolean', 'description': 'Whether daylight-saving time is in effect.'}, 'offset': {'type': 'string', 'description': 'UTC offset, e.g. "+09:00".'}, 'rfc2822': {'type': 'string', 'description': 'RFC 2822 date string.'}, 'utc_iso': {'type': 'string', 'description': 'ISO 8601 in UTC (Z).'}, 'weekday': {'type': 'string', 'description': 'Full weekday name in English.'}, 'timezone': {'type': 'string', 'description': 'IANA zone name.'}, 'abbreviation': {'type': 'string', 'description': 'Zone abbreviation at that instant, e.g. "BST".'}, 'epoch_millis': {'type': 'integer', 'description': 'Unix time in milliseconds.'}, 'epoch_seconds': {'type': 'integer', 'description': 'Unix time in seconds.'}, 'offset_minutes': {'type': 'integer', 'description': 'UTC offset in minutes.'}}, 'description': 'One instant described in one IANA time zone.'}, 'is_past': {'type': 'boolean'}, 'minutes': {'type': 'integer'}, 'total_seconds': {'type': 'integer'}}, 'description': 'With an event or date: the countdown fields. With no arguments: only the events list.'}
epoch_math
Add to or subtract from a Unix timestamp in calendar-aware units (years, months, weeks, days, hours, minutes, seconds) in a time zone, e.g. "now + 30 days" or "1748736543 - 3 months". Returns the resulting timestamp in every format.
Lecture seule
Schéma d’entrée
{'type': 'object', 'properties': {'add': {'type': 'object', 'properties': {'days': {'type': 'number'}, 'hours': {'type': 'number'}, 'weeks': {'type': 'number'}, 'years': {'type': 'number'}, 'months': {'type': 'number'}, 'minutes': {'type': 'number'}, 'seconds': {'type': 'number'}}, 'description': 'Units to add.', 'additionalProperties': False}, 'subtract': {'type': 'object', 'properties': {'days': {'type': 'number'}, 'hours': {'type': 'number'}, 'weeks': {'type': 'number'}, 'years': {'type': 'number'}, 'months': {'type': 'number'}, 'minutes': {'type': 'number'}, 'seconds': {'type': 'number'}}, 'description': 'Units to subtract.', 'additionalProperties': False}, 'timezone': {'type': 'string', 'description': 'Zone in which calendar units (months, days across DST) are applied. Defaults to UTC.'}, 'timestamp': {'type': 'number', 'description': 'Base Unix timestamp (seconds or milliseconds, auto-detected). Omit for now.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['base', 'result', 'delta_seconds'], 'properties': {'base': {'type': 'object', 'required': ['epoch_seconds', 'epoch_millis', 'iso', 'utc_iso', 'timezone', 'offset', 'offset_minutes', 'abbreviation', 'is_dst', 'weekday', 'rfc2822', 'human'], 'properties': {'iso': {'type': 'string', 'description': 'ISO 8601 with the zone offset.'}, 'human': {'type': 'string', 'description': 'Readable sentence with weekday, date, time and zone.'}, 'is_dst': {'type': 'boolean', 'description': 'Whether daylight-saving time is in effect.'}, 'offset': {'type': 'string', 'description': 'UTC offset, e.g. "+09:00".'}, 'rfc2822': {'type': 'string', 'description': 'RFC 2822 date string.'}, 'utc_iso': {'type': 'string', 'description': 'ISO 8601 in UTC (Z).'}, 'weekday': {'type': 'string', 'description': 'Full weekday name in English.'}, 'timezone': {'type': 'string', 'description': 'IANA zone name.'}, 'abbreviation': {'type': 'string', 'description': 'Zone abbreviation at that instant, e.g. "BST".'}, 'epoch_millis': {'type': 'integer', 'description': 'Unix time in milliseconds.'}, 'epoch_seconds': {'type': 'integer', 'description': 'Unix time in seconds.'}, 'offset_minutes': {'type': 'integer', 'description': 'UTC offset in minutes.'}}, 'description': 'One instant described in one IANA time zone.'}, 'result': {'type': 'object', 'required': ['epoch_seconds', 'epoch_millis', 'iso', 'utc_iso', 'timezone', 'offset', 'offset_minutes', 'abbreviation', 'is_dst', 'weekday', 'rfc2822', 'human'], 'properties': {'iso': {'type': 'string', 'description': 'ISO 8601 with the zone offset.'}, 'human': {'type': 'string', 'description': 'Readable sentence with weekday, date, time and zone.'}, 'is_dst': {'type': 'boolean', 'description': 'Whether daylight-saving time is in effect.'}, 'offset': {'type': 'string', 'description': 'UTC offset, e.g. "+09:00".'}, 'rfc2822': {'type': 'string', 'description': 'RFC 2822 date string.'}, 'utc_iso': {'type': 'string', 'description': 'ISO 8601 in UTC (Z).'}, 'weekday': {'type': 'string', 'description': 'Full weekday name in English.'}, 'timezone': {'type': 'string', 'description': 'IANA zone name.'}, 'abbreviation': {'type': 'string', 'description': 'Zone abbreviation at that instant, e.g. "BST".'}, 'epoch_millis': {'type': 'integer', 'description': 'Unix time in milliseconds.'}, 'epoch_seconds': {'type': 'integer', 'description': 'Unix time in seconds.'}, 'offset_minutes': {'type': 'integer', 'description': 'UTC offset in minutes.'}}, 'description': 'One instant described in one IANA time zone.'}, 'delta_seconds': {'type': 'integer', 'description': 'result minus base, in seconds.'}}}
parse_datetime
Parse a date/time string (ISO 8601, RFC 2822, HTTP date, SQL "YYYY-MM-DD HH:mm:ss", or a Unix timestamp) into a Unix timestamp and a normalized description. Strings without an offset are interpreted in the given time zone.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'The date/time text to parse.'}, 'timezone': {'type': 'string', 'description': 'Zone to assume when the input carries no offset, and to report the result in. Defaults to UTC.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['epoch_seconds', 'epoch_millis', 'iso', 'utc_iso', 'timezone', 'offset', 'offset_minutes', 'abbreviation', 'is_dst', 'weekday', 'rfc2822', 'human', 'input'], 'properties': {'iso': {'type': 'string', 'description': 'ISO 8601 with the zone offset.'}, 'human': {'type': 'string', 'description': 'Readable sentence with weekday, date, time and zone.'}, 'input': {'type': 'string', 'description': 'The text that was parsed.'}, 'is_dst': {'type': 'boolean', 'description': 'Whether daylight-saving time is in effect.'}, 'offset': {'type': 'string', 'description': 'UTC offset, e.g. "+09:00".'}, 'rfc2822': {'type': 'string', 'description': 'RFC 2822 date string.'}, 'utc_iso': {'type': 'string', 'description': 'ISO 8601 in UTC (Z).'}, 'weekday': {'type': 'string', 'description': 'Full weekday name in English.'}, 'timezone': {'type': 'string', 'description': 'IANA zone name.'}, 'abbreviation': {'type': 'string', 'description': 'Zone abbreviation at that instant, e.g. "BST".'}, 'epoch_millis': {'type': 'integer', 'description': 'Unix time in milliseconds.'}, 'epoch_seconds': {'type': 'integer', 'description': 'Unix time in seconds.'}, 'offset_minutes': {'type': 'integer', 'description': 'UTC offset in minutes.'}}, 'description': 'One instant described in one IANA time zone.'}
time_now
The current time: Unix epoch in seconds and milliseconds, ISO 8601, and the local wall-clock time in a given IANA time zone with its current UTC offset and DST status. Use this before any relative date reasoning.
Lecture seule
Schéma d’entrée
{'type': 'object', 'properties': {'timezone': {'type': 'string', 'description': 'IANA time zone, e.g. "America/New_York". Defaults to UTC.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['epoch_seconds', 'epoch_millis', 'iso', 'utc_iso', 'timezone', 'offset', 'offset_minutes', 'abbreviation', 'is_dst', 'weekday', 'rfc2822', 'human'], 'properties': {'iso': {'type': 'string', 'description': 'ISO 8601 with the zone offset.'}, 'human': {'type': 'string', 'description': 'Readable sentence with weekday, date, time and zone.'}, 'is_dst': {'type': 'boolean', 'description': 'Whether daylight-saving time is in effect.'}, 'offset': {'type': 'string', 'description': 'UTC offset, e.g. "+09:00".'}, 'rfc2822': {'type': 'string', 'description': 'RFC 2822 date string.'}, 'utc_iso': {'type': 'string', 'description': 'ISO 8601 in UTC (Z).'}, 'weekday': {'type': 'string', 'description': 'Full weekday name in English.'}, 'timezone': {'type': 'string', 'description': 'IANA zone name.'}, 'abbreviation': {'type': 'string', 'description': 'Zone abbreviation at that instant, e.g. "BST".'}, 'epoch_millis': {'type': 'integer', 'description': 'Unix time in milliseconds.'}, 'epoch_seconds': {'type': 'integer', 'description': 'Unix time in seconds.'}, 'offset_minutes': {'type': 'integer', 'description': 'UTC offset in minutes.'}}, 'description': 'One instant described in one IANA time zone.'}
Ajouté
days_until
17 September 2026 12:34
Ajouté
cron_next_runs
17 September 2026 12:34
Ajouté
epoch_math
17 September 2026 12:34
Ajouté
date_duration
17 September 2026 12:34
Ajouté
convert_timezone
17 September 2026 12:34
Ajouté
parse_datetime
17 September 2026 12:34
Ajouté
convert_timestamp
17 September 2026 12:34
Ajouté
time_now
17 September 2026 12:34