{"id":"local-interval-compare","version":"1.0.0","description":"Normalize and compare two discrete millisecond intervals with deterministic boundary relations.","supported_operations":["compare normalized intervals","classify two time intervals","detect interval overlap","detect adjacent intervals","order disjoint intervals","compare inclusive interval boundaries"],"unsupported_operations":["compare recurring schedules","merge interval collections","resolve local time zones"],"semantics":["Both operands are normalized to half-open millisecond intervals before comparison.","Relations are empty, equal, contains, contained_by, before, after, meets, met_by, or overlaps.","Empty wins the tie-break; otherwise equality, containment, boundary contact, disjointness, then overlap.","Caller comparison rules are versioned by caller_rule_version."],"limits":{"max_input_bytes":4096,"max_intervals":2},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["left","right","caller_rule_version"],"properties":{"left":{"type":"object","additionalProperties":false,"required":["start_ms","end_ms","endpoint_convention"],"properties":{"start_ms":{"type":"string","minLength":1,"maxLength":32,"pattern":"^-?(?:0|[1-9]\\d*)$"},"end_ms":{"type":"string","minLength":1,"maxLength":32,"pattern":"^-?(?:0|[1-9]\\d*)$"},"endpoint_convention":{"type":"string","enum":["[)","[]","()","(]"]}}},"right":{"type":"object","additionalProperties":false,"required":["start_ms","end_ms","endpoint_convention"],"properties":{"start_ms":{"type":"string","minLength":1,"maxLength":32,"pattern":"^-?(?:0|[1-9]\\d*)$"},"end_ms":{"type":"string","minLength":1,"maxLength":32,"pattern":"^-?(?:0|[1-9]\\d*)$"},"endpoint_convention":{"type":"string","enum":["[)","[]","()","(]"]}}},"caller_rule_version":{"type":"string","minLength":1,"maxLength":64}}},"output_schema":{"type":"object","additionalProperties":false,"required":["standard_version","data_version","caller_rule_version","relation","left_normalized","right_normalized"],"properties":{"standard_version":{"type":"string"},"data_version":{"type":"string"},"caller_rule_version":{"type":"string"},"relation":{"type":"string","enum":["empty","equal","contains","contained_by","before","after","meets","met_by","overlaps"]},"left_normalized":{"type":"object","additionalProperties":false,"required":["start_ms","end_ms","endpoint_convention"],"properties":{"start_ms":{"type":"string","minLength":1,"maxLength":32,"pattern":"^-?(?:0|[1-9]\\d*)$"},"end_ms":{"type":"string","minLength":1,"maxLength":32,"pattern":"^-?(?:0|[1-9]\\d*)$"},"endpoint_convention":{"type":"string","enum":["[)","[]","()","(]"]}}},"right_normalized":{"type":"object","additionalProperties":false,"required":["start_ms","end_ms","endpoint_convention"],"properties":{"start_ms":{"type":"string","minLength":1,"maxLength":32,"pattern":"^-?(?:0|[1-9]\\d*)$"},"end_ms":{"type":"string","minLength":1,"maxLength":32,"pattern":"^-?(?:0|[1-9]\\d*)$"},"endpoint_convention":{"type":"string","enum":["[)","[]","()","(]"]}}}}},"examples":[{"input":{"left":{"start_ms":"0","end_ms":"10","endpoint_convention":"[)"},"right":{"start_ms":"10","end_ms":"20","endpoint_convention":"[)"},"caller_rule_version":"r1"},"output":{"standard_version":"RFC9557/RFC3339/ISO8601-1:2019","data_version":"iana-tzdb-2025b-subset-nyc","caller_rule_version":"r1","relation":"meets","left_normalized":{"start_ms":"0","end_ms":"10","endpoint_convention":"[)"},"right_normalized":{"start_ms":"10","end_ms":"20","endpoint_convention":"[)"}}},{"input":{"left":{"start_ms":"0","end_ms":"20","endpoint_convention":"[)"},"right":{"start_ms":"5","end_ms":"10","endpoint_convention":"[)"},"caller_rule_version":"r2"},"output":{"standard_version":"RFC9557/RFC3339/ISO8601-1:2019","data_version":"iana-tzdb-2025b-subset-nyc","caller_rule_version":"r2","relation":"contains","left_normalized":{"start_ms":"0","end_ms":"20","endpoint_convention":"[)"},"right_normalized":{"start_ms":"5","end_ms":"10","endpoint_convention":"[)"}}}],"execute_url":"/v1/tools/local-interval-compare/versions/1.0.0/execute"}