{"id":"appointment-request-check","version":"1.0.0","description":"Check an appointment request against pinned time-zone facts and caller-supplied booking rules.","supported_operations":["check appointment request","validate booking against opening hours","test appointment blackout conflict","check booking notice eligibility","explain rejected appointment time","verify appointment horizon policy"],"unsupported_operations":["reserve an appointment slot","look up provider availability","validate iCalendar documents"],"semantics":["Intervals are half-open [start,end); sorted by start epoch then end epoch.","Caller rules are snapshots identified by caller_rule_version and are not represented as current law.","Ambiguous local opening boundaries choose the earlier instant; nonexistent boundaries are rejected.","No host clock, locale, network, randomness, Intl, or host time zone is used."],"limits":{"max_input_bytes":65536,"max_blackouts":100,"max_opening_rules":14,"max_windows":1000},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["caller_rule_version","zone_id","now","notice_seconds","horizon_seconds","start","duration_seconds","opening_hours","blackouts"],"properties":{"caller_rule_version":{"type":"string","minLength":1,"maxLength":64},"zone_id":{"type":"string","minLength":1,"maxLength":64},"now":{"type":"string","minLength":20,"maxLength":30},"notice_seconds":{"type":"integer","minimum":0,"maximum":31536000},"horizon_seconds":{"type":"integer","minimum":0,"maximum":31536000},"start":{"type":"string","minLength":20,"maxLength":30},"duration_seconds":{"type":"integer","minimum":300,"maximum":28800},"opening_hours":{"type":"array","minItems":1,"maxItems":14,"items":{"type":"object","additionalProperties":false,"required":["weekday","start","end"],"properties":{"weekday":{"type":"integer","minimum":0,"maximum":6},"start":{"type":"string","pattern":"^[0-2][0-9]:[0-5][0-9]$"},"end":{"type":"string","pattern":"^[0-2][0-9]:[0-5][0-9]$"}}}},"blackouts":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","minLength":20,"maxLength":30},"end":{"type":"string","minLength":20,"maxLength":30}}}}}},"output_schema":{"type":"object","additionalProperties":false,"required":["standard_version","data_version","caller_rule_version","zone_id","valid","reason","start_epoch_seconds","end_epoch_seconds"],"properties":{"standard_version":{"type":"string","const":"RFC3339+ISO8601-1:2019"},"data_version":{"type":"string","const":"iana-tzdb-2025b-compact"},"caller_rule_version":{"type":"string","minLength":1,"maxLength":64},"zone_id":{"type":"string"},"valid":{"type":"boolean"},"reason":{"type":"string"},"start_epoch_seconds":{"type":"integer"},"end_epoch_seconds":{"type":"integer"}}},"examples":[{"input":{"caller_rule_version":"policy-v7","zone_id":"UTC","now":"2026-06-01T00:00:00Z","notice_seconds":0,"horizon_seconds":31536000,"opening_hours":[{"weekday":1,"start":"09:00","end":"12:00"}],"blackouts":[],"start":"2026-06-01T09:00:00Z","duration_seconds":3600},"output":{"standard_version":"RFC3339+ISO8601-1:2019","data_version":"iana-tzdb-2025b-compact","caller_rule_version":"policy-v7","zone_id":"UTC","valid":true,"reason":"ok","start_epoch_seconds":1780304400,"end_epoch_seconds":1780308000}},{"input":{"caller_rule_version":"policy-v7","zone_id":"UTC","now":"2026-06-01T00:00:00Z","notice_seconds":0,"horizon_seconds":31536000,"opening_hours":[{"weekday":1,"start":"09:00","end":"12:00"}],"blackouts":[],"start":"2026-06-01T11:00:00Z","duration_seconds":3600},"output":{"standard_version":"RFC3339+ISO8601-1:2019","data_version":"iana-tzdb-2025b-compact","caller_rule_version":"policy-v7","zone_id":"UTC","valid":true,"reason":"ok","start_epoch_seconds":1780311600,"end_epoch_seconds":1780315200}}],"execute_url":"/v1/tools/appointment-request-check/versions/1.0.0/execute"}