Date Math MCP
Deterministic date and time math for AI agents via MCP. Supports business day calculations with country-specific holidays, date arithmetic, DST-aware timezone conversion, meeting overlap finding, cron explanation, natural language date parsing, city time lookup, RRULE expansion, and SLA deadline calculation.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://date-math.datemath.workers.dev/mcpWhat its tools do
11 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Calculate business days between dates excluding holidays
- Convert times between IANA time zones with DST awareness
- Parse natural language dates like 'next Friday' into ISO datetimes
- Find overlapping working hours for meetings across time zones
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- date-math 1.3.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 11 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
11 advertised
date_diff — Date difference
Difference between two dates or datetimes: calendar (Y/M/D), total days/weeks/hours, and business days (weekdays in [from, to) minus holidays; pass country to exclude its public holidays). First 25 calls per day are free, then $0.001 per call (x402).
{
"type": "object",
"required": [
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"example": "2026-11-07T14:30:00Z",
"description": "YYYY-MM-DD, or ISO 8601 datetime with Z or offset"
},
"from": {
"type": "string",
"example": "2026-11-07T14:30:00Z",
"description": "YYYY-MM-DD, or ISO 8601 datetime with Z or offset"
},
"country": {
"type": "string",
"example": "US",
"pattern": "^[A-Za-z]{2}$",
"description": "ISO 3166-1 alpha-2 country code (207 countries); its public holidays (2000–2050) are excluded from business days"
},
"holidays": {
"type": "array",
"items": {
"type": "string",
"example": "2026-11-07",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"maxItems": 1000,
"description": "Dates excluded from business-day counts (weekends are always excluded)"
}
},
"description": "business_days counts weekdays in [from, to) minus holidays; only for date inputs."
}{
"type": "object",
"required": [
"from",
"to",
"direction",
"total_days",
"total_weeks",
"calendar",
"iso_duration"
],
"properties": {
"to": {
"type": "string"
},
"from": {
"type": "string"
},
"calendar": {
"type": "object",
"required": [
"years",
"months",
"days"
],
"properties": {
"days": {
"type": "integer"
},
"years": {
"type": "integer"
},
"months": {
"type": "integer"
}
}
},
"direction": {
"enum": [
"forward",
"backward"
],
"type": "string"
},
"total_days": {
"type": "integer"
},
"total_hours": {
"type": "integer",
"description": "Datetime inputs only"
},
"total_weeks": {
"type": "integer"
},
"iso_duration": {
"type": "string",
"example": "P1M15D"
},
"business_days": {
"type": "integer",
"description": "Weekdays in [from, to) minus holidays (date inputs only)"
},
"total_minutes": {
"type": "integer"
},
"total_seconds": {
"type": "integer"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}date_add — Add to a date
Add or subtract years/months/weeks/days/business days/hours/minutes/seconds. Month-end clamping; business days skip weekends, given holidays, and the public holidays of an optional country. First 25 calls per day are free, then $0.001 per call (x402).
{
"type": "object",
"required": [
"date"
],
"properties": {
"date": {
"type": "string",
"example": "2026-11-07T14:30:00Z",
"description": "YYYY-MM-DD, or ISO 8601 datetime with Z or offset"
},
"days": {
"type": "integer"
},
"hours": {
"type": "integer"
},
"weeks": {
"type": "integer"
},
"years": {
"type": "integer"
},
"months": {
"type": "integer"
},
"country": {
"type": "string",
"example": "US",
"pattern": "^[A-Za-z]{2}$",
"description": "ISO 3166-1 alpha-2 country code (207 countries); its public holidays (2000–2050) are excluded from business days"
},
"minutes": {
"type": "integer"
},
"seconds": {
"type": "integer"
},
"holidays": {
"type": "array",
"items": {
"type": "string",
"example": "2026-11-07",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"maxItems": 1000,
"description": "Dates excluded from business-day counts (weekends are always excluded)"
},
"business_days": {
"type": "integer",
"description": "Applied after calendar units; skips weekends and holidays"
}
},
"description": "Negative values subtract. Months clamp to month end (Jan 31 + 1 month = Feb 28/29). Time units require a datetime input."
}{
"type": "object",
"required": [
"input",
"result",
"weekday",
"is_business_day"
],
"properties": {
"input": {
"type": "string"
},
"result": {
"type": "string",
"description": "YYYY-MM-DD, or ISO datetime (UTC) for datetime input"
},
"weekday": {
"type": "string"
},
"is_business_day": {
"type": "boolean"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}timezone_convert — Convert time zones
Convert an instant or local wall-clock time between IANA time zones (DST-aware). First 25 calls per day are free, then $0.001 per call (x402).
{
"type": "object",
"required": [
"to_timezone"
],
"properties": {
"datetime": {
"type": "string",
"description": "ISO 8601 with offset, local YYYY-MM-DDTHH:MM[:SS] (needs from_timezone), or \"now\" (default)"
},
"to_timezone": {
"type": "string",
"example": "America/New_York"
},
"from_timezone": {
"type": "string",
"example": "Asia/Manila"
}
}
}{
"type": "object",
"required": [
"utc",
"unix_seconds",
"from",
"to"
],
"properties": {
"to": {
"type": "object",
"required": [
"timezone",
"datetime",
"date",
"time",
"weekday",
"utc_offset"
],
"properties": {
"date": {
"type": "string"
},
"time": {
"type": "string"
},
"weekday": {
"type": "string"
},
"datetime": {
"type": "string",
"description": "ISO 8601 with offset"
},
"timezone": {
"type": "string"
},
"utc_offset": {
"type": "string"
}
}
},
"utc": {
"type": "string"
},
"from": {
"type": "object",
"required": [
"timezone",
"datetime",
"date",
"time",
"weekday",
"utc_offset"
],
"properties": {
"date": {
"type": "string"
},
"time": {
"type": "string"
},
"weekday": {
"type": "string"
},
"datetime": {
"type": "string",
"description": "ISO 8601 with offset"
},
"timezone": {
"type": "string"
},
"utc_offset": {
"type": "string"
}
}
},
"unix_seconds": {
"type": "integer"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}date_info — Date facts
Calendar facts for a date: weekday, ISO week, quarter, day of year, leap year, weekend. First 25 calls per day are free, then $0.001 per call (x402).
{
"type": "object",
"required": [
"date"
],
"properties": {
"date": {
"type": "string",
"example": "2026-11-07",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
}
}{
"type": "object",
"required": [
"date",
"weekday",
"iso_week",
"quarter",
"day_of_year",
"is_leap_year",
"is_weekend"
],
"properties": {
"date": {
"type": "string"
},
"quarter": {
"type": "integer"
},
"weekday": {
"type": "string"
},
"iso_week": {
"type": "integer"
},
"iso_year": {
"type": "integer"
},
"is_weekend": {
"type": "boolean"
},
"day_of_year": {
"type": "integer"
},
"days_in_year": {
"type": "integer"
},
"is_leap_year": {
"type": "boolean"
},
"unix_seconds": {
"type": "integer"
},
"days_in_month": {
"type": "integer"
},
"weekday_number": {
"type": "integer",
"description": "ISO: Monday=1 … Sunday=7"
},
"days_remaining_in_year": {
"type": "integer"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}public_holidays — Public holidays
Public holidays for a country and year: 207 countries, 2000–2050. Lunar or government-proclaimed dates are rule-based estimates. First 25 calls per day are free, then $0.001 per call (x402).
{
"type": "object",
"required": [
"country"
],
"properties": {
"year": {
"type": "integer",
"maximum": 2050,
"minimum": 2000,
"description": "Defaults to the current year"
},
"country": {
"type": "string",
"example": "US",
"pattern": "^[A-Za-z]{2}$",
"description": "ISO 3166-1 alpha-2 country code (207 countries); its public holidays (2000–2050) are excluded from business days"
}
}
}{
"type": "object",
"required": [
"country",
"year",
"count",
"holidays"
],
"properties": {
"type": {
"enum": [
"public"
],
"type": "string"
},
"year": {
"type": "integer"
},
"count": {
"type": "integer"
},
"source": {
"type": "string",
"description": "Data attribution"
},
"country": {
"type": "string"
},
"holidays": {
"type": "array",
"items": {
"type": "object",
"required": [
"date",
"name"
],
"properties": {
"date": {
"type": "string"
},
"name": {
"type": "string"
},
"substitute": {
"type": "boolean",
"description": "Observed on another day because the holiday falls on a weekend"
}
}
}
},
"country_name": {
"type": "string"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}working_hours_overlap — Working-hours overlap
Find when working hours overlap across time zones (meeting windows). Per-participant hours optional; skips weekends by default; up to 14 days. First 25 calls per day are free, then $0.001 per call (x402).
{
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "YYYY-MM-DD in the first participant's zone; defaults to today"
},
"days": {
"type": "integer",
"maximum": 14,
"minimum": 1,
"description": "Number of days to search (default 1)"
},
"work_end": {
"type": "string",
"example": "17:00",
"pattern": "^([01]\\d|2[0-4]):[0-5]\\d$"
},
"timezones": {
"type": "array",
"items": {
"type": "string",
"description": "IANA time zone, e.g. Asia/Manila"
},
"maxItems": 10,
"minItems": 2
},
"work_start": {
"type": "string",
"example": "09:00",
"pattern": "^([01]\\d|2[0-4]):[0-5]\\d$"
},
"participants": {
"type": "array",
"items": {
"type": "object",
"required": [
"timezone"
],
"properties": {
"timezone": {
"type": "string",
"description": "IANA time zone, e.g. Asia/Manila"
},
"work_end": {
"type": "string",
"example": "09:00",
"pattern": "^([01]\\d|2[0-4]):[0-5]\\d$"
},
"work_start": {
"type": "string",
"example": "09:00",
"pattern": "^([01]\\d|2[0-4]):[0-5]\\d$"
}
}
},
"maxItems": 10,
"minItems": 2
},
"skip_weekends": {
"type": "boolean",
"description": "Default true"
}
},
"description": "Pass \"timezones\" (strings) or \"participants\" (objects with their own hours)."
}{
"type": "object",
"required": [
"reference_timezone",
"total_overlap_minutes",
"windows"
],
"properties": {
"to": {
"type": "string"
},
"from": {
"type": "string"
},
"windows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"local": {
"type": "array",
"items": {
"type": "object",
"properties": {
"end": {
"type": "string"
},
"start": {
"type": "string"
},
"timezone": {
"type": "string"
}
}
}
},
"end_utc": {
"type": "string"
},
"start_utc": {
"type": "string"
},
"duration_minutes": {
"type": "number"
}
}
}
},
"participants": {
"type": "array",
"items": {
"type": "object"
}
},
"reference_timezone": {
"type": "string"
},
"total_overlap_minutes": {
"type": "number"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}cron_schedule — Cron schedule
Explain a cron expression in plain English and list its next run times in any time zone. First 25 calls per day are free, then $0.001 per call (x402).
{
"type": "object",
"required": [
"expression"
],
"properties": {
"from": {
"type": "string",
"description": "ISO 8601 datetime with offset; default now"
},
"count": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Default 5"
},
"timezone": {
"type": "string",
"description": "Default UTC"
},
"expression": {
"type": "string",
"example": "0 9 * * 1-5",
"description": "5- or 6-field cron expression"
}
}
}{
"type": "object",
"required": [
"expression",
"timezone",
"description",
"next_runs"
],
"properties": {
"from": {
"type": "string"
},
"timezone": {
"type": "string"
},
"next_runs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"utc": {
"type": "string"
},
"local": {
"type": "string"
},
"weekday": {
"type": "string"
}
}
}
},
"expression": {
"type": "string"
},
"description": {
"type": "string"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}parse_date_text — Parse natural-language dates
Resolve natural-language dates like "next Friday at 3pm", "in 2 weeks" or "Dec 25 to Jan 2" to exact datetimes, relative to a reference time and time zone. First 25 calls per day are free, then $0.001 per call (x402).
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"example": "next friday at 3pm",
"maxLength": 1000
},
"timezone": {
"type": "string",
"description": "Default UTC"
},
"reference": {
"type": "string",
"description": "ISO 8601 datetime the text is relative to; default now"
},
"forward_date": {
"type": "boolean",
"description": "Prefer future dates for ambiguous text (default true)"
}
}
}{
"type": "object",
"required": [
"text",
"timezone",
"count",
"results"
],
"properties": {
"text": {
"type": "string"
},
"count": {
"type": "integer"
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"end": {
"type": "object",
"required": [
"utc",
"local"
],
"properties": {
"utc": {
"type": "string"
},
"date": {
"type": "string"
},
"local": {
"type": "string"
},
"weekday": {
"type": "string"
}
}
},
"index": {
"type": "integer"
},
"start": {
"type": "object",
"required": [
"utc",
"local"
],
"properties": {
"utc": {
"type": "string"
},
"date": {
"type": "string"
},
"local": {
"type": "string"
},
"weekday": {
"type": "string"
}
}
},
"certain": {
"type": "array",
"items": {
"type": "string"
}
},
"matched": {
"type": "string"
}
}
}
},
"timezone": {
"type": "string"
},
"reference": {
"type": "string"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}city_time — City time zone and local time
Find the IANA time zone and current local time for up to 10 cities by name ("Cebu", "São Paulo", "Springfield" + country). 7,000+ cities. First 25 calls per day are free, then $0.001 per call (x402).
{
"type": "object",
"properties": {
"at": {
"type": "string",
"description": "ISO 8601 instant to show local time for; default now"
},
"city": {
"type": "string",
"example": "Cebu"
},
"cities": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 1
},
"country": {
"type": "string",
"example": "US",
"pattern": "^[A-Za-z]{2}$",
"description": "ISO 3166-1 alpha-2 country code (207 countries); its public holidays (2000–2050) are excluded from business days"
}
},
"description": "Pass \"city\" or \"cities\"."
}{
"type": "object",
"required": [
"at",
"results"
],
"properties": {
"at": {
"type": "string"
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"best": {
"type": [
"object",
"null"
],
"properties": {
"name": {
"type": "string"
},
"match": {
"type": "string"
},
"region": {
"type": "string"
},
"country": {
"type": "string"
},
"weekday": {
"type": "string"
},
"timezone": {
"type": "string"
},
"local_time": {
"type": "string"
},
"population": {
"type": "integer"
},
"utc_offset": {
"type": "string"
}
}
},
"found": {
"type": "boolean"
},
"query": {
"type": "string"
},
"alternatives": {
"type": "array",
"items": {
"type": "object"
}
}
}
}
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}recurring_dates — Expand recurring events (RRULE)
Expand an iCalendar RRULE ("every 2nd Tuesday", "Mon/Wed until June") into concrete dates and times in a time zone, DST-aware, with optional excluded dates. First 25 calls per day are free, then $0.001 per call (x402).
{
"type": "object",
"required": [
"rrule",
"start"
],
"properties": {
"count": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Default 10"
},
"rrule": {
"type": "string",
"example": "FREQ=MONTHLY;BYDAY=2TU",
"description": "iCalendar RRULE (no DTSTART/TZID inside)"
},
"start": {
"type": "string",
"description": "Local start date or datetime in timezone, e.g. 2026-01-01T10:00"
},
"exclude": {
"type": "array",
"items": {
"type": "string"
},
"description": "Local dates (YYYY-MM-DD) to skip"
},
"timezone": {
"type": "string",
"description": "Default UTC"
}
}
}{
"type": "object",
"required": [
"rrule",
"timezone",
"count",
"occurrences"
],
"properties": {
"count": {
"type": "integer"
},
"rrule": {
"type": "string"
},
"start": {
"type": "string"
},
"timezone": {
"type": "string"
},
"description": {
"type": "string"
},
"occurrences": {
"type": "array",
"items": {
"type": "object",
"properties": {
"utc": {
"type": "string"
},
"date": {
"type": "string"
},
"local": {
"type": "string"
},
"weekday": {
"type": "string"
}
}
}
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}business_hours_deadline — Business-hours deadline / SLA
SLA math in working hours: the deadline N business hours after a start time, or business time elapsed between two times. Custom hours and workdays, holidays, country public holidays, DST-aware. First 25 calls per day are free, then $0.001 per call (x402).
{
"type": "object",
"required": [
"timezone"
],
"properties": {
"end": {
"type": "string",
"description": "Count business time from start to end (max 1 year)"
},
"hours": {
"type": "number",
"maximum": 2000,
"minimum": 0
},
"start": {
"type": "string",
"description": "Local datetime in timezone or ISO 8601 with offset; default now"
},
"country": {
"type": "string",
"example": "US",
"pattern": "^[A-Za-z]{2}$",
"description": "ISO 3166-1 alpha-2 country code (207 countries); its public holidays (2000–2050) are excluded from business days"
},
"minutes": {
"type": "number",
"minimum": 0
},
"holidays": {
"type": "array",
"items": {
"type": "string"
}
},
"timezone": {
"type": "string",
"description": "IANA time zone, e.g. Asia/Manila"
},
"work_end": {
"type": "string",
"example": "17:00",
"pattern": "^([01]\\d|2[0-4]):[0-5]\\d$"
},
"workdays": {
"type": "array",
"items": {
"type": "integer",
"maximum": 6,
"minimum": 0
},
"description": "0 = Sunday; default [1,2,3,4,5]"
},
"work_start": {
"type": "string",
"example": "09:00",
"pattern": "^([01]\\d|2[0-4]):[0-5]\\d$"
}
},
"description": "Pass \"hours\"/\"minutes\" to get a deadline, or \"end\" to count business time between start and end."
}{
"type": "object",
"required": [
"mode",
"timezone",
"start",
"business_minutes"
],
"properties": {
"end": {
"type": "string"
},
"mode": {
"enum": [
"deadline",
"elapsed"
],
"type": "string"
},
"start": {
"type": "string"
},
"weekday": {
"type": "string"
},
"deadline": {
"type": "string"
},
"timezone": {
"type": "string"
},
"deadline_utc": {
"type": "string"
},
"business_hours": {
"type": "number"
},
"business_minutes": {
"type": "number"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 492 ms
- 95th percentile latency
- 492 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 492 ms · metadata changed · 11 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http date-math-mcp-workers https://date-math.datemath.workers.dev/mcpCodex
codex mcp add date-math-mcp-workers --url https://date-math.datemath.workers.dev/mcpCursor
{
"mcpServers": {
"date-math-mcp-workers": {
"url": "https://date-math.datemath.workers.dev/mcp"
}
}
}Cline
{
"mcpServers": {
"date-math-mcp-workers": {
"type": "streamableHttp",
"url": "https://date-math.datemath.workers.dev/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"date-math-mcp-workers": {
"type": "http",
"url": "https://date-math.datemath.workers.dev/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http date-math-mcp-workers https://date-math.datemath.workers.dev/mcpClaude Desktop
https://date-math.datemath.workers.dev/mcpWindsurf
{
"mcpServers": {
"date-math-mcp-workers": {
"serverUrl": "https://date-math.datemath.workers.dev/mcp"
}
}
}Let your agent find its tools
Find servers like Date Math MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.