# ChronoSure Deterministic timezone, DST, business-day and public-holiday resolution for agents, paid per call. ChronoSure turns a local wall-clock time into an exact UTC instant, and tells you plainly when that is impossible. Every local time is classified as unique, ambiguous or nonexistent against a pinned IANA tzdb release; business-day arithmetic skips weekends and public holidays from a provenance-tagged dataset; and working-hour overlap is intersected across zones. There is no model and no heuristic anywhere in it: the same input always returns the same answer, and every response names the datasets that produced it. ## Payment - Protocol: x402 V2, scheme `exact`, network `eip155:8453` (Base mainnet) - Asset: USDC `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` - No accounts, no API keys, no subscriptions. - Failed calls are not charged. Only a successful, usable result settles. - Payment authorization window: 60s ## Endpoints ### `POST /v1/business-time` — $0.01 per successful call Resolve a local time to an exact UTC instant with explicit DST ambiguity handling, business-day arithmetic, public-holiday status, and working-hour overlap across timezones. Detects ambiguous and nonexistent local times instead of silently shifting them. Declares its IANA tzdb release and per-jurisdiction holiday provenance. Unpaid request returns HTTP 402 with the challenge in the `PAYMENT-REQUIRED` header: ```bash curl -i -sS -X POST https://chrono.schemasure.com/v1/business-time \ -H 'content-type: application/json' \ -d '{"local_time":"2026-11-01T01:30:00","timezone":"America/New_York","ambiguity_policy":"reject"}' ``` Example successful response: ```json { "ok": true, "verdict": "unknown", "confidence": 1, "risk_codes": [ "AMBIGUOUS_LOCAL_TIME", "UNRESOLVED_UNDER_REJECT_POLICY" ], "evidence": [ { "code": "AMBIGUOUS_LOCAL_TIME", "severity": "high", "detail": "Local time 2026-11-01T01:30:00 occurs twice in America/New_York: the clock is set back 60 minutes at 2026-11-01T06:00:00Z (-04:00 to -05:00). Both instants are listed in candidates.", "source": "moment-timezone@2026c", "data": { "ambiguity": "ambiguous", "policy": "reject", "candidates": [ { "utc_instant": "2026-11-01T05:30:00Z", "offset": "-04:00", "offset_minutes": -240, "abbreviation": "EDT", "local_time": "2026-11-01T01:30:00", "interpretation": "earlier" }, { "utc_instant": "2026-11-01T06:30:00Z", "offset": "-05:00", "offset_minutes": -300, "abbreviation": "EST", "local_time": "2026-11-01T01:30:00", "interpretation": "later" } ], "transition": { "at_utc": "2026-11-01T06:00:00Z", "kind": "fold", "shift_minutes": -60, "offset_before": "-04:00", "offset_after": "-05:00", "offset_before_minutes": -240, "offset_after_minutes": -300, "abbreviation_before": "EDT", "abbreviation_after": "EST", "local_before": "2026-11-01T02:00:00", "local_after": "2026-11-01T01:00:00" } } }, { "code": "UNRESOLVED_UNDER_REJECT_POLICY", "severity": "high", "detail": "ambiguity_policy is \"reject\", so no single instant was chosen. Re-send with \"earlier\", \"later\" or \"compatible\" once you have decided which reading you mean, or pick one of the candidate instants directly.", "source": "chronosure.policy", "data": { "policy": "reject" } }, { "code": "INSTANT_DEPENDENT_FIELDS_WITHHELD", "severity": "info", "detail": "utc_instant, comparisons, overlap, working-hour status and the next/previous working instants were not computed, because they all depend on choosing one of the candidate instants. Calendar facts for the requested date are still reported. Re-send with an explicit ambiguity_policy to get them.", "source": "chronosure.policy", "data": { "policy": "reject" } } ], "result": { "timezone": "America/New_York", "requested_local_time": "2026-11-01T01:30:00", "requested_instant": null, "ambiguity": "ambiguous", "ambiguity_policy": "reject", "candidates": [ { "utc_instant": "2026-11-01T05:30:00Z", "offset": "-04:00", "offset_minutes": -240, "abbreviation": "EDT", "local_time": "2026-11-01T01:30:00", "interpretation": "earlier" }, { "utc_instant": "2026-11-01T06:30:00Z", "offset": "-05:00", "offset_minutes": -300, "abbreviation": "EST", "local_time": "2026-11-01T01:30:00", "interpretation": "later" } ], "utc_instant": null, "local_time": null, "offset": null, "offset_minutes": null, "abbreviation": null, "date": "2026-11-01", "day_of_week": 7, "is_weekend": true, "is_holiday": false, "holiday_name": null, "holiday": null, "is_working_day": false, "is_within_working_hours": null, "working_hours": { "start": "09:00", "end": "17:00" }, "business_days_result": null, "next_valid_working_instant": null, "previous_valid_working_instant": null, "next_transition": { "at_utc": "2027-03-14T07:00:00Z", "kind": "gap", "shift_minutes": 60, "offset_before": "-05:00", "offset_after": "-04:00", "offset_before_minutes": -300, "offset_after_minutes": -240, "abbreviation_before": "EST", "abbreviation_after": "EDT", "local_before": "2027-03-14T02:00:00", "local_after": "2027-03-14T03:00:00" }, "previous_transition": { "at_utc": "2026-11-01T06:00:00Z", "kind": "fold", "shift_minutes": -60, "offset_before": "-04:00", "offset_after": "-05:00", "offset_before_minutes": -240, "offset_after_minutes": -300, "abbreviation_before": "EDT", "abbreviation_after": "EST", "local_before": "2026-11-01T02:00:00", "local_after": "2026-11-01T01:00:00" }, "comparisons": [], "overlap": { "has_overlap": false, "working_hours": { "start": "09:00", "end": "17:00" }, "working_hours_source": "default", "zones": [ "America/New_York" ], "windows": [], "intersection": null }, "coverage": { "calendar": null, "jurisdictions": [], "coverage_years": null, "weekend_days": [ 6, 7 ], "date_in_coverage": true, "holiday_dataset_version": "2026.08.03", "available_calendars": [ "AU-NSW", "CA-BC", "CA-ON", "DE", "FR", "GB-ENG", "GB-NIR", "GB-SCT", "IE", "IL", "IN", "JP", "NL", "NZ", "US", "US-CA", "US-NY" ], "note": "No holiday_calendar was requested. Weekends use the Saturday/Sunday default; no public holidays were applied. Pass holiday_calendar to get holiday-aware answers." }, "tzdb": { "version": "2026c", "source": "moment-timezone", "host_icu_tz_version": "2026b", "host_agrees": true, "temporal_source": "polyfill" } }, "policy_version": "2026-08-03.1", "request_hash": "sha256:7d599c118b7226b7a9b05f014734be376d50d00133cdabae0b6530aa40064833", "data_versions": { "tzdb": "2026c", "holidays": "2026.08.03", "temporal_source": "polyfill", "tzdb_source": "moment-timezone", "host_icu_tz": "2026b" }, "warnings": [] } ``` ## Result contract Every response is the shared portfolio envelope: `ok`, `verdict`, `confidence`, `risk_codes`, `evidence`, `result`, `policy_version`, `request_hash`, `data_versions`, `warnings`. `verdict: "unknown"` is a real answer, not a failure. It means the service could not determine the result and says why in `evidence`. It is never silently reported as a safe or clean outcome. ## Service level - Target P50: 100 ms - Target P95: 300 ms ## Data handling - Caller content is processed transiently and never retained. - No training on customer content. - No subprocessors see caller content. ## Machine-readable surfaces - https://chrono.schemasure.com/openapi.json - https://chrono.schemasure.com/.well-known/x402.json - https://chrono.schemasure.com/.well-known/pricing.json - https://chrono.schemasure.com/.well-known/benchmarks.json - https://chrono.schemasure.com/.well-known/data-handling.json - https://chrono.schemasure.com/apis.json - https://chrono.schemasure.com/SKILL.md