---
name: chronosure
description: Deterministic timezone, DST, business-day and public-holiday resolution for agents, paid per call.
---

# ChronoSure

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.

## When to use this

Use `POST https://chrono.schemasure.com/v1/business-time` when you need: Resolve a local time to a UTC instant with DST, holiday and working-hour context.

## How to pay

1. Send the request without payment. You receive HTTP 402 and a base64 `PAYMENT-REQUIRED` header.
2. Decode it, sign one of the `accepts` entries with your wallet locally.
3. Retry the identical request with the `PAYMENT-SIGNATURE` header.
4. A successful response carries a `PAYMENT-RESPONSE` receipt.

Cost: $0.01 in USDC on Base mainnet. Failed calls are free.
Your private key never leaves your process.

## Request

```json
{
  "local_time": "2026-11-01T01:30:00",
  "timezone": "America/New_York",
  "ambiguity_policy": "reject"
}
```

## 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": []
}
```

## Reading the verdict

- `resolved` / `pass` / `allow` — the service answered and the answer is usable.
- `warn` — usable, but `evidence` contains findings you should act on.
- `block` — the service is telling you not to proceed. Read `risk_codes`.
- `unknown` — the service could not determine the answer. **Do not treat this as safe.**
