MCP-Server

Moltline TimeOps

com.moltlinestudio/timeops
Produktivität Öffentlich und erreichbar MCP 2025-11-25

Was dieses MCP kann

Performs business-day calculations, deadline planning, time-zone meeting overlap, recurrence expansion, and SLA due-time calculations.

business_days
Business Days
Do business-day math that skips weekends and your holiday list. FREE. Either add N business days to start_date (set add_days), or count the business days between start_date and end_date (set end_date). Typical input {"start_date": "2026-03-02", "add_days": 10} returns {"result_date": "2026-03-16", "result_weekday": "Monday", ...}; with end_date set it returns {"business_days_between": N, "from": ..., "to": ...}. Use when the span must exclude weekends and named holidays. Not for plain calendar-day differences, which are a direct subtraction, and not for scheduling backward from a fixed deadline (deadline_planner). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "dates must be YYYY-MM-DD"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['start_date'], 'properties': {'add_days': {'type': 'integer', 'default': 0, 'maximum': 5000, 'minimum': -5000, 'description': 'Business days to add; negative subtracts. Range -5000 to\n5000. Ignored when end_date is provided.'}, 'end_date': {'type': 'string', 'default': '', 'description': 'Optional end date, ISO YYYY-MM-DD. When set, the tool counts\nbusiness days between start_date and end_date instead of adding.'}, 'holidays': {'type': 'array', 'items': {'type': 'string'}, 'default': [], 'description': 'Optional list of ISO YYYY-MM-DD dates to treat as\nnon-working days, e.g. ["2026-12-25"].'}, 'start_date': {'type': 'string', 'description': 'Anchor date in ISO format YYYY-MM-DD, e.g. "2026-03-02".'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'additionalProperties': True}
deadline_planner
Deadline Planner
Plan a task schedule backward from a hard deadline in business days. PREMIUM (license). Given ordered tasks with business-day durations, returns each task's start/end dates, the latest safe start, and slack from today. Typical input {"due_date": "2026-06-01", "tasks": [{"name": "Draft", "days": 3}, {"name": "Review", "days": 2}]} returns {"schedule": [...], "latest_safe_start": "YYYY-MM-DD", "slack_business_days_from_today": N, "verdict": "..."}. Use when the end date is fixed and steps must be placed backward from it. Not for forward counting from a start date (business_days) and not for response-time targets (sla_due). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "due_date must be YYYY-MM-DD"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['due_date', 'tasks'], 'properties': {'tasks': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'Ordered list of task objects, each {"name": str, "days": int}\nwhere days is the business-day duration (1-365); the first 30\ntasks are scheduled.'}, 'due_date': {'type': 'string', 'description': 'The deadline, ISO YYYY-MM-DD.'}, 'holidays': {'type': 'array', 'items': {'type': 'string'}, 'default': [], 'description': 'Optional list of ISO YYYY-MM-DD dates treated as\nnon-working days.'}, 'buffer_days': {'type': 'integer', 'default': 1, 'description': 'Business days of safety margin kept free before\ndue_date, clamped to 0-365. Default 1.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'additionalProperties': True}
meeting_overlap
Meeting Overlap
Find the shared meeting window across time zones inside working hours. FREE. Give one UTC offset per participant and an optional working-hours window. Typical input {"offsets_utc": [-8, 1, 5.5]} returns {"overlap_utc": ["HH:MM", "HH:MM"], "overlap_minutes": N, "local_windows": [...]}; when no shared window exists it returns {"overlap": null, "verdict": "..."}. Use when people in different zones need one shared slot. Not for converting a single known time between zones, and not for expanding a recurring series (recurrence_expand). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "times must be HH:MM"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['offsets_utc'], 'properties': {'work_end': {'type': 'string', 'default': '17:00', 'description': 'Working day end, 24h HH:MM; must be later than work_start.\nDefault "17:00".'}, 'work_start': {'type': 'string', 'default': '09:00', 'description': 'Working day start, 24h HH:MM local in every zone.\nDefault "09:00".'}, 'offsets_utc': {'type': 'array', 'items': {'type': 'number', 'maximum': 14, 'minimum': -14}, 'description': 'One UTC offset per participant, each between -14 and\n+14; fractional offsets allowed, e.g. [-8, 1, 5.5].'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'additionalProperties': True}
recurrence_expand
Recurrence Expand
Expand a recurrence rule into a concrete list of ISO dates. FREE. Set every_days for a fixed interval, or weekly_on for specific weekdays. Typical input {"start_date": "2026-01-05", "every_days": 14, "count": 3} returns {"dates": ["2026-01-05", "2026-01-19", "2026-02-02"]}. Use when a recurrence rule has to become concrete dates. Not for counting working days in a span (business_days) and not for finding a slot across zones (meeting_overlap). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "start_date must be YYYY-MM-DD"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['start_date'], 'properties': {'count': {'type': 'integer', 'default': 10, 'description': 'How many dates to generate; values outside 1-60 are clamped\ninto that range. Default 10.'}, 'weekly_on': {'type': 'array', 'items': {'type': 'string'}, 'default': [], 'description': 'Weekday names to recur on, e.g. ["mon", "thu"]; full names\nlike "monday" also work.'}, 'every_days': {'type': 'integer', 'default': 0, 'description': 'Interval in days between occurrences; use this OR\nweekly_on, not both.'}, 'start_date': {'type': 'string', 'description': 'First date of the series, ISO YYYY-MM-DD.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'additionalProperties': True}
sla_due
Sla Due
Compute when a ticket's SLA falls due, wall-clock or business-hours. PREMIUM (license). Typical input {"opened_at": "2026-03-02T15:30", "sla_hours": 8, "business_hours_only": true} returns {"due": "2026-03-03T15:30", "mode": "business hours 09:00-17:00"}; with business_hours_only false the mode is "wall-clock". Use when a response or resolution clock has started and one due moment is needed. Not for multi-step project schedules (deadline_planner). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "opened_at must be ISO YYYY-MM-DDTHH:MM"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['opened_at', 'sla_hours'], 'properties': {'day_end': {'type': 'string', 'default': '17:00', 'description': 'Business day end, 24h HH:MM; must be later than day_start.\nDefault "17:00".'}, 'holidays': {'type': 'array', 'items': {'type': 'string'}, 'default': [], 'description': 'Optional list of ISO YYYY-MM-DD dates that never count as\nworking days.'}, 'day_start': {'type': 'string', 'default': '09:00', 'description': 'Business day start, 24h HH:MM. Default "09:00".'}, 'opened_at': {'type': 'string', 'description': 'When the SLA clock started, ISO datetime YYYY-MM-DDTHH:MM.'}, 'sla_hours': {'type': 'number', 'maximum': 24000, 'description': 'SLA length in hours; greater than 0, at most 24000;\nfractions allowed, e.g. 7.5.', 'exclusiveMinimum': 0}, 'business_hours_only': {'type': 'boolean', 'default': False, 'description': 'If true, only time inside day_start-day_end on\nbusiness days counts toward the SLA.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'additionalProperties': True}
Hinzugefügt
sla_due
17. September 2026 12:36
Hinzugefügt
deadline_planner
17. September 2026 12:36
Hinzugefügt
recurrence_expand
17. September 2026 12:36
Hinzugefügt
meeting_overlap
17. September 2026 12:36
Hinzugefügt
business_days
17. September 2026 12:36