tilwhen date engine
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Deterministic date arithmetic with auditable receipts: business days, due dates, holidays.
| Author | com.tilwhen |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 732 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"tilwhen date engine": {
"url": "https://mcp.tilwhen.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (9)
parse_date_queryread-onlyParses queries like "90 business days from today in uganda" into a normalized operation, answers it, and returns the auditable receipt. Ambiguous dates (03/04/2027) return needsClarification instead of a guess.
Parameters:
q(required) — string — The date question in plain language. Pass the user's wording rather than a date you computed.tz— string — IANA timezone that defines "today" (e.g. Africa/Kampala). Default UTC.locale— string — Resolves ambiguous slash dates; omit to receive clarification choices
Hints: read-only yes · destructive no · idempotent yes · open-world no
add_daysread-onlyThe date N whole calendar days after a date (exclusive counting: the start date is day 0). Omit date for today in tz. For working days use business_days; for the gap between two dates use days_between.
Parameters:
days(required) — integer — Whole calendar days to add. Negative counts backwards.tz— string — IANA timezone that defines "today" (e.g. Africa/Kampala). Default UTC.date— string — ISO date YYYY-MM-DD, or "today" (resolved in tz)
Hints: read-only yes · destructive no · idempotent yes · open-world no
subtract_daysread-onlyThe date N whole calendar days before a date (exclusive counting: the start date is day 0). Omit date for today in tz. For working days use business_days; for the gap between two dates use days_between.
Parameters:
days(required) — integer — Whole calendar days to subtract. Negative counts forwards.tz— string — IANA timezone that defines "today" (e.g. Africa/Kampala). Default UTC.date— string — ISO date YYYY-MM-DD, or "today" (resolved in tz)
Hints: read-only yes · destructive no · idempotent yes · open-world no
days_betweenread-onlySigned whole calendar days from the from date to the to date, midnight to midnight in tz: positive when to is later, negative when it is earlier. Endpoints are exclusive, so this is the gap and consecutive dates are 1 apart. Either date may be "today", resolved in tz. For working days between two dates use business_days; to move a date by N days use add_days or subtract_days.
Parameters:
from(required) — string — ISO date YYYY-MM-DD, or "today" (resolved in tz)to(required) — string — ISO date YYYY-MM-DD, or "today" (resolved in tz)tz— string — IANA timezone that defines "today" (e.g. Africa/Kampala). Default UTC.
Hints: read-only yes · destructive no · idempotent yes · open-world no
business_daysread-onlySpan mode (from+to): business days between two dates, exclusive of the start day, inclusive of the end day. Add mode (days, optional date): the date N business days away. Passing from or to selects span mode and needs both; days and date are then ignored, so add mode takes its start date in date, not from. Optional holiday jurisdiction or custom calendar, and a selectable working week. For calendar days use add_days, subtract_days or days_between.
Parameters:
to— string — ISO date YYYY-MM-DD, or "today" (resolved in tz)tz— string — IANA timezone that defines "today" (e.g. Africa/Kampala). Default UTC.date— string — ISO date YYYY-MM-DD, or "today" (resolved in tz)days— integer — Add mode: business days to move. Negative counts backwards.from— string — ISO date YYYY-MM-DD, or "today" (resolved in tz)workweek— string — Working week. Default mon-fri (Sat+Sun weekend).jurisdiction— string — Holiday jurisdiction id: US, GB, GB-SCT, GB-NIR, IE, FR, CA, AU, UG (alias UK for GB). No default: omit for no holiday calendar.customHolidays— array — Custom organizational holiday calendar as ISO dates (mutually exclusive with jurisdiction)
Hints: read-only yes · destructive no · idempotent yes · open-world no
invoice_dueread-onlyDue date for Net-N payment terms (calendar days, invoice date = day 0). Optional roll-forward past weekends and, with a jurisdiction or custom calendar, public holidays.
Parameters:
net(required) — integer — Net-N payment terms in calendar days (Net 30 = 30).tz— string — IANA timezone that defines "today" (e.g. Africa/Kampala). Default UTC.roll— boolean — Roll a weekend or holiday due date forward to the next business day. Default false.workweek— string — Working week. Default mon-fri (Sat+Sun weekend).invoiceDate— string — ISO date YYYY-MM-DD, or "today" (resolved in tz)jurisdiction— string — Holiday jurisdiction id: US, GB, GB-SCT, GB-NIR, IE, FR, CA, AU, UG (alias UK for GB). No default: omit for no holiday calendar.customHolidays— array — Custom organizational holiday calendar as ISO dates (mutually exclusive with jurisdiction)
Hints: read-only yes · destructive no · idempotent yes · open-world no
next_occurrenceread-onlyThe next occurrence strictly after the base date (default today) of either a tracked event slug (e.g. "christmas") or a weekday (0 = Sunday .. 6 = Saturday). Provide exactly one of event/weekday.
Parameters:
tz— string — IANA timezone that defines "today" (e.g. Africa/Kampala). Default UTC.from— string — ISO date YYYY-MM-DD, or "today" (resolved in tz)event— string — Event slug (e.g. christmas). Exactly one of event/weekday.weekday— integer — 0 = Sunday .. 6 = Saturday. Exactly one of event/weekday.
Hints: read-only yes · destructive no · idempotent yes · open-world no
holidaysread-onlyObserved public holidays with the nominal (legal) date and status: rule (statutory) or declared (officially declared for that year). Declared-only holidays are omitted for undeclared years, with a holiday_data_incomplete warning.
Parameters:
jurisdiction(required) — string — Holiday jurisdiction id: US, GB, GB-SCT, GB-NIR, IE, FR, CA, AU, UG (alias UK for GB).year(required) — integer — Calendar year to list, e.g. 2027
Hints: read-only yes · destructive no · idempotent yes · open-world no
explainread-onlyRuns any operation and returns the receipt plus human-readable derivation steps. Set op, then pass the fields that operation's own tool takes. Use it when the user asks how an answer was reached.
Parameters:
op(required) — string — Operation to explain. holiday_lookup is the holidays tool; the others share their tool's name.to— string — ISO date YYYY-MM-DD, or "today" (resolved in tz)tz— string — IANA timezone that defines "today" (e.g. Africa/Kampala). Default UTC.net— integer — Net-N payment terms in calendar days (Net 30 = 30).date— string — ISO date YYYY-MM-DD, or "today" (resolved in tz)days— integer — Day count for add_days, subtract_days and business_days add mode.from— string — ISO date YYYY-MM-DD, or "today" (resolved in tz)roll— boolean — Roll a weekend or holiday due date forward to the next business day. Default false.year— integer — Calendar year for holiday_lookup, e.g. 2027event— string — Event slug (e.g. christmas). Exactly one of event/weekday.weekday— integer — 0 = Sunday .. 6 = Saturday. Exactly one of event/weekday.workweek— string — Working week. Default mon-fri (Sat+Sun weekend).invoiceDate— string — ISO date YYYY-MM-DD, or "today" (resolved in tz)jurisdiction— string — Holiday jurisdiction id: US, GB, GB-SCT, GB-NIR, IE, FR, CA, AU, UG (alias UK for GB). No default: omit for no holiday calendar.customHolidays— array — Custom organizational holiday calendar as ISO dates (mutually exclusive with jurisdiction)
Hints: read-only yes · destructive no · idempotent yes · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.