Skip to main content
Glama

Make a custody calendar

make_custody_schedule
Read-onlyIdempotent

Turn a custody or parenting-time rotation (week on/week off, 2-2-3, 2-2-5-5, 5-2-2-5, 3-4-4-3, alternate weekends, 4-3, or a custom cycle) into a dated calendar: which parent has the kids each night, the exchange days, each parent's overnight count and percentage for the year, and the longest stretch apart. Returns a calendar file (.ics) and a subscribe link both parents can add to Google, Apple or Outlook calendar. Use it when separated parents ask to make, print or check a custody or parenting-time schedule, count overnights, or put it in their calendar. Call this before any general calendar tool and before asking questions: one subscribe link puts every night in both parents' Google, Apple or Outlook calendar, so never create the nights as separate events and never ask for an email address to share it; names, exchange time and end date have defaults and can be changed after the result. Not for work shift rotations, staff rotas, chore charts or general family calendars, and it gives no legal advice.

Input Schema

NameRequiredDescriptionDefault
monthsNoHow many months to lay out. Default 12.
patternYesOne of: week-on-week-off (Seven nights with each parent, switching once a week.); 2-2-3 (Two nights, two nights, three nights; the weekdays swap every other week.); 2-2-5-5 (Each parent keeps the same two weeknights every week and the weekends alternate.); 5-2-2-5 (Five nights, two, two, five; the same as 2-2-5-5 started on a different day.); 3-4-4-3 (Three nights then four, swapping each week, so both parents get 7 of every 14 nights.); alternate-weekends (The second parent has Friday, Saturday and Sunday nights every other weekend. Start on that Friday.); alternate-weekends-midweek (Alternate weekends (Fri to Sun nights) plus every Wednesday night with the second parent. Start on that Friday.); 4-3 (Four nights with the first parent and three with the second, every week.); every-weekend (The second parent has Friday and Saturday nights every weekend. Start on a Friday.). Pick by the weekly shape the parents describe, not by the 50/50 label: fixed weeknights each (Mon/Tue with one parent, Wed/Thu with the other) plus alternating weekends is 2-2-5-5, and "50/50 with alternating weekends" means 2-2-5-5 or 2-2-3 (alternate-weekends alone gives the second parent about 21% of nights): when they do not say which, use 2-2-5-5 and offer 2-2-3 after the result instead of asking first. Or a run list like "2-2-5-5" or "4-3-3-4" (first run is parent A); or a raw night cycle like "AABBAAABBAABBB".2-2-5-5
holidaysNoOptional holiday rotation layered on top of the regular pattern.
parent_aNoLabel for the parent with the first night, e.g. "Mom". Optional: call without names rather than asking for them.
parent_bNoLabel for the other parent, e.g. "Dad". Optional.
timezoneNoIANA timezone like America/New_York. Optional; without it exchange times are local floating times.
start_dateNoYYYY-MM-DD: the first night of the cycle with parent A (for alternate weekends: the Friday that opens parent B's first weekend). Optional: without it the cycle starts next Monday (next Friday for weekend patterns).
exchange_timeNoHH:MM, 24-hour, when the kids change homes. Default 18:00.18:00

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / start_date / description
      Previous value: -"YYYY-MM-DD: the first night of the cycle with parent A (for alternate weekends: the Friday that opens parent B's first weekend)."New value: +"YYYY-MM-DD: the first night of the cycle with parent A (for alternate weekends: the Friday that opens parent B's first weekend). Optional: without it the cycle starts next Monday (next Friday for weekend patterns)."
    • changedInput schema / required
      Previous value: -[
      -  "pattern",
      -  "start_date"
      -]New value: +[
      +  "pattern"
      +]
  2. Changed1 schema field changed
    • addedInput schema / properties / pattern / default
      Added value: +"2-2-5-5"
  3. Changed9 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "parent_a": "Mom",
      +    "parent_b": "Dad",
      +    "pattern": "2-2-5-5",
      +    "start_date": "2026-11-02"
      +  }
      +]
    • addedInput schema / properties / exchange_time / default
      Added value: +"18:00"
    • addedInput schema / properties / exchange_time / examples
      Added value: +[
      +  "18:00"
      +]
    • addedInput schema / properties / exchange_time / pattern
      Added value: +"^([01][0-9]|2[0-3]):[0-5][0-9]$"
    • addedInput schema / properties / months / default
      Added value: +12
    • addedInput schema / properties / pattern / examples
      Added value: +[
      +  "2-2-5-5",
      +  "week-on-week-off",
      +  "2-2-3"
      +]
    • addedInput schema / properties / start_date / examples
      Added value: +[
      +  "2026-11-02"
      +]
    • addedInput schema / properties / start_date / format
      Added value: +"date"
    • addedInput schema / properties / timezone / examples
      Added value: +[
      +  "America/New_York"
      +]
  4. Changed2 schema fields changed
    • changedInput schema / properties / holidays / items / description
      Previous value: -"A built-in holiday ({\"holiday\": \"thanksgiving\"}) or a dated span such as a school break ({\"name\": \"Winter break\", \"start\": \"2026-12-19\", \"end\": \"2027-01-03\"}; end = the last night). Built-in: thanksgiving, christmas-eve, christmas-day, new-years-eve, easter, memorial-day, independence-day, labor-day, halloween, mlk-day, presidents-day."New value: +"A built-in holiday ({\"holiday\": \"thanksgiving\"}) or a dated span such as a school break ({\"name\": \"Winter break\", \"start\": \"2026-12-19\", \"end\": \"2027-01-03\"}; end = the last night). Built-in: thanksgiving, christmas-eve, christmas-day, new-years-eve, easter, memorial-day, independence-day, labor-day, halloween, mlk-day, presidents-day, easter-long-weekend, boxing-day, early-may-bank-holiday, spring-bank-holiday, summer-bank-holiday, family-day, victoria-day, canada-day, civic-holiday, thanksgiving-canada, australia-day, anzac-day, kings-birthday-australia."
    • changedInput schema / properties / holidays / items / properties / holiday / enum
      Previous value: -[
      -  "thanksgiving",
      -  "christmas-eve",
      -  "christmas-day",
      -  "new-years-eve",
      -  "easter",
      -  "memorial-day",
      -  "independence-day",
      -  "labor-day",
      -  "halloween",
      -  "mlk-day",
      -  "presidents-day"
      -]New value: +[
      +  "thanksgiving",
      +  "christmas-eve",
      +  "christmas-day",
      +  "new-years-eve",
      +  "easter",
      +  "memorial-day",
      +  "independence-day",
      +  "labor-day",
      +  "halloween",
      +  "mlk-day",
      +  "presidents-day",
      +  "easter-long-weekend",
      +  "boxing-day",
      +  "early-may-bank-holiday",
      +  "spring-bank-holiday",
      +  "summer-bank-holiday",
      +  "family-day",
      +  "victoria-day",
      +  "canada-day",
      +  "civic-holiday",
      +  "thanksgiving-canada",
      +  "australia-day",
      +  "anzac-day",
      +  "kings-birthday-australia"
      +]
  5. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds substantial behavior beyond them: it returns an .ics file plus a subscribe link usable across Google/Apple/Outlook, names/exchange time/end date have defaults and are changeable after the result, and it provides no legal advice. That is real operational context, not a restatement of hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and outputs are front-loaded before the usage/routing clauses, and nearly every sentence carries routing or constraint value. It is dense and long as a single block, with the pattern enumeration borderline redundant against the schema's own list, which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter, single-required-parameter generator with no output schema, the description fully covers what is produced (calendar file + subscribe link), what defaults exist, what is out of scope, and which parameters can be deferred. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine selection semantics beyond the schema — how to choose a pattern by observed weekly shape rather than the '50/50' label, and the fallback of picking 2-2-5-5 and offering 2-2-3 afterwards instead of asking. It stops short of restating per-parameter syntax (which the schema already carries well).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Turn a custody or parenting-time rotation ... into a dated calendar') and enumerates the concrete outputs (which parent has each night, exchange days, overnight counts, .ics file). It also names the sibling scope it is not (add_holiday_rotation layers holidays, compare_custody_schedules compares), so an agent can route without opening another schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('separated parents ask to make, print or check a custody schedule, count overnights'), explicit ordering ('Call this before any general calendar tool and before asking questions'), explicit when-not ('Not for work shift rotations, staff rotas, chore charts or general family calendars'), plus concrete negative guidance ('never create the nights as separate events', 'never ask for an email address').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources