{"id":"iso-date-range-split-by-month","version":"1.0.0","description":"Split an inclusive [start, end] date range into per-calendar-month sub-ranges.","supported_operations":["iso date range split by month","chunk date range by calendar month","monthly billing periods from range"],"unsupported_operations":["fiscal months","split by week or quarter","timezones"],"semantics":["start and end are strict YYYY-MM-DD calendar dates with year 0001-9999. start must not be after end.","The range is split into at most 1200 consecutive sub-ranges, one per calendar month it touches.","The first sub-range starts at start (not necessarily the 1st). The last sub-range ends at end (not necessarily the month end). Every sub-range in between spans a full calendar month.","Sub-ranges are contiguous and in ascending order; their union covers exactly [start, end] with no gaps or overlaps."],"limits":{"year_min":1,"year_max":9999,"max_segments":1200},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","minLength":10,"maxLength":10,"pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"end":{"type":"string","minLength":10,"maxLength":10,"pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}},"output_schema":{"type":"object","additionalProperties":false,"required":["ranges"],"properties":{"ranges":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","minLength":10,"maxLength":10},"end":{"type":"string","minLength":10,"maxLength":10}}}}}},"examples":[{"input":{"start":"2026-01-20","end":"2026-03-10"},"output":{"ranges":[{"start":"2026-01-20","end":"2026-01-31"},{"start":"2026-02-01","end":"2026-02-28"},{"start":"2026-03-01","end":"2026-03-10"}]}}],"execute_url":"/v1/tools/iso-date-range-split-by-month/versions/1.0.0/execute"}