{"name":"com.tilwhen/tilwhen","slug":"tilwhen","title":"tilwhen date engine","description":"Deterministic date arithmetic with auditable receipts: business days, due dates, holidays.","url":"https://mcp.market/server/tilwhen","rating":null,"grade":"C","score":69,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://tilwhen.com/mcp","version":"1.0.1","remotes":[{"type":"streamable-http","url":"https://mcp.tilwhen.com/mcp"}],"packages":[],"tools":[{"name":"add_days","description":"The 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^(\\d{4}-\\d{2}-\\d{2}|today)$","description":"ISO date YYYY-MM-DD, or \"today\" (resolved in tz)","default":"today"},"days":{"type":"integer","minimum":-100000,"maximum":100000,"description":"Whole calendar days to add. Negative counts backwards."},"tz":{"type":"string","maxLength":64,"default":"UTC","description":"IANA timezone that defines \"today\" (e.g. Africa/Kampala). Default UTC."}},"required":["days"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"business_days","description":"Span 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. Optional holiday jurisdiction or custom calendar, and a selectable working week.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"from":{"type":"string","pattern":"^(\\d{4}-\\d{2}-\\d{2}|today)$","description":"ISO date YYYY-MM-DD, or \"today\" (resolved in tz)"},"to":{"type":"string","pattern":"^(\\d{4}-\\d{2}-\\d{2}|today)$","description":"ISO date YYYY-MM-DD, or \"today\" (resolved in tz)"},"date":{"type":"string","pattern":"^(\\d{4}-\\d{2}-\\d{2}|today)$","description":"ISO date YYYY-MM-DD, or \"today\" (resolved in tz)"},"days":{"type":"integer","minimum":-100000,"maximum":100000,"description":"Add mode: business days to move. Negative counts backwards."},"jurisdiction":{"type":"string","maxLength":8,"description":"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":{"type":"array","items":{"type":"string"},"maxItems":1000,"description":"Custom organizational holiday calendar as ISO dates (mutually exclusive with jurisdiction)"},"workweek":{"type":"string","enum":["mon-fri","sun-thu","mon-sat"],"description":"Working week. Default mon-fri (Sat+Sun weekend)."},"tz":{"type":"string","maxLength":64,"default":"UTC","description":"IANA timezone that defines \"today\" (e.g. Africa/Kampala). Default UTC."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"days_between","description":"Signed whole calendar days from one date to another, midnight to midnight, endpoints exclusive (the gap).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"from":{"type":"string","pattern":"^(\\d{4}-\\d{2}-\\d{2}|today)$","description":"ISO date YYYY-MM-DD, or \"today\" (resolved in tz)"},"to":{"type":"string","pattern":"^(\\d{4}-\\d{2}-\\d{2}|today)$","description":"ISO date YYYY-MM-DD, or \"today\" (resolved in tz)"},"tz":{"type":"string","maxLength":64,"default":"UTC","description":"IANA timezone that defines \"today\" (e.g. Africa/Kampala). Default UTC."}},"required":["from","to"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"explain","description":"Runs 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"op":{"type":"string","enum":["add_days","subtract_days","days_between","business_days","invoice_due","next_occurrence","holiday_lookup"],"description":"Operation to explain. holiday_lookup is the holidays tool; the others share their tool's name."},"date":{"type":"string","pattern":"^(\\d{4}-\\d{2}-\\d{2}|today)$","description":"ISO date YYYY-MM-DD, or \"today\" (resolved in tz)"},"days":{"type":"integer","minimum":-100000,"maximum":100000,"description":"Day count for add_days, subtract_days and business_days add mode."},"from":{"type":"string","pattern":"^(\\d{4}-\\d{2}-\\d{2}|today)$","description":"ISO date YYYY-MM-DD, or \"today\" (resolved in tz)"},"to":{"type":"string","pattern":"^(\\d{4}-\\d{2}-\\d{2}|today)$","description":"ISO date YYYY-MM-DD, or \"today\" (resolved in tz)"},"invoiceDate":{"type":"string","pattern":"^(\\d{4}-\\d{2}-\\d{2}|today)$","description":"ISO date YYYY-MM-DD, or \"today\" (resolved in tz)"},"net":{"type":"integer","minimum":0,"maximum":3650,"description":"Net-N payment terms in calendar days (Net 30 = 30)."},"roll":{"type":"boolean","description":"Roll a weekend or holiday due date forward to the next business day. Default false."},"event":{"type":"string","maxLength":40,"description":"Event slug (e.g. christmas). Exactly one of event/weekday."},"weekday":{"type":"integer","minimum":0,"maximum":6,"description":"0 = Sunday .. 6 = Saturday. Exactly one of event/weekday."},"year":{"type":"integer","minimum":1600,"maximum":3000,"description":"Calendar year for holiday_lookup, e.g. 2027"},"jurisdiction":{"type":"string","maxLength":8,"description":"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":{"type":"array","items":{"type":"string"},"maxItems":1000,"description":"Custom organizational holiday calendar as ISO dates (mutually exclusive with jurisdiction)"},"workweek":{"type":"string","enum":["mon-fri","sun-thu","mon-sat"],"description":"Working week. Default mon-fri (Sat+Sun weekend)."},"tz":{"type":"string","maxLength":64,"default":"UTC","description":"IANA timezone that defines \"today\" (e.g. Africa/Kampala). Default UTC."}},"required":["op"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"holidays","description":"Observed 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"jurisdiction":{"type":"string","maxLength":8,"description":"Holiday jurisdiction id: US, GB, GB-SCT, GB-NIR, IE, FR, CA, AU, UG (alias UK for GB)."},"year":{"type":"integer","minimum":1600,"maximum":3000,"description":"Calendar year to list, e.g. 2027"}},"required":["jurisdiction","year"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"invoice_due","description":"Due 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"invoiceDate":{"type":"string","pattern":"^(\\d{4}-\\d{2}-\\d{2}|today)$","description":"ISO date YYYY-MM-DD, or \"today\" (resolved in tz)","default":"today"},"net":{"type":"integer","minimum":0,"maximum":3650,"description":"Net-N payment terms in calendar days (Net 30 = 30)."},"roll":{"type":"boolean","description":"Roll a weekend or holiday due date forward to the next business day. Default false."},"jurisdiction":{"type":"string","maxLength":8,"description":"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":{"type":"array","items":{"type":"string"},"maxItems":1000,"description":"Custom organizational holiday calendar as ISO dates (mutually exclusive with jurisdiction)"},"workweek":{"type":"string","enum":["mon-fri","sun-thu","mon-sat"],"description":"Working week. Default mon-fri (Sat+Sun weekend)."},"tz":{"type":"string","maxLength":64,"default":"UTC","description":"IANA timezone that defines \"today\" (e.g. Africa/Kampala). Default UTC."}},"required":["net"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"next_occurrence","description":"The 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event":{"type":"string","maxLength":40,"description":"Event slug (e.g. christmas). Exactly one of event/weekday."},"weekday":{"type":"integer","minimum":0,"maximum":6,"description":"0 = Sunday .. 6 = Saturday. Exactly one of event/weekday."},"from":{"type":"string","pattern":"^(\\d{4}-\\d{2}-\\d{2}|today)$","description":"ISO date YYYY-MM-DD, or \"today\" (resolved in tz)"},"tz":{"type":"string","maxLength":64,"default":"UTC","description":"IANA timezone that defines \"today\" (e.g. Africa/Kampala). Default UTC."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"parse_date_query","description":"Parses 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":200,"description":"The date question in plain language. Pass the user's wording rather than a date you computed."},"tz":{"type":"string","maxLength":64,"default":"UTC","description":"IANA timezone that defines \"today\" (e.g. Africa/Kampala). Default UTC."},"locale":{"type":"string","enum":["mdy","dmy"],"description":"Resolves ambiguous slash dates; omit to receive clarification choices"}},"required":["q"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"subtract_days","description":"The 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^(\\d{4}-\\d{2}-\\d{2}|today)$","description":"ISO date YYYY-MM-DD, or \"today\" (resolved in tz)","default":"today"},"days":{"type":"integer","minimum":-100000,"maximum":100000,"description":"Whole calendar days to subtract. Negative counts forwards."},"tz":{"type":"string","maxLength":64,"default":"UTC","description":"IANA timezone that defines \"today\" (e.g. Africa/Kampala). Default UTC."}},"required":["days"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":69,"grade":"C","scanned_at":"2026-09-19T09:53:30.208Z","report":{"scannerVersion":"0.1.3","scannedAt":"2026-09-19T09:53:30.196Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 514ms"]},"poisoning":{"score":15,"max":15,"notes":["9 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://mcp.tilwhen.com/mcp","reachable":true,"authRequired":false,"latencyMs":514,"serverInfo":{"name":"tilwhen","version":"1.0.0"}}],"packages":[],"repo":{"found":false},"icon":{"url":"https://tilwhen.com/favicon.svg","source":"site"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}