{"name":"com.moltlinestudio/timeops","slug":"moltlinestudio-timeops","title":"Moltline TimeOps","description":"Business days, meeting overlap and recurrence expansion, deterministic. 3 of 5 tools free.","url":"https://mcp.market/server/moltlinestudio-timeops","rating":null,"grade":"A","score":87,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":23,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-09-19T15:00:29.000Z","license":"MIT"},"uptime":{"percent":100,"checks":3,"ok":3,"last_checked_at":"2026-09-20T03:21:10.089Z","last_ok_at":"2026-09-20T03:21:10.089Z","latency_ms":145},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/GarphenGate/moltline-mcp","website":"https://moltlinestudio.com/servers.html#timeops","version":"1.2.0","remotes":[{"type":"streamable-http","url":"https://mcp.moltlinestudio.com/timeops"}],"packages":[],"tools":[{"name":"business_days","description":"Do business-day math that skips weekends and your holiday list. FREE.\n\nEither add N business days to start_date (set add_days), or count the\nbusiness days between start_date and end_date (set end_date). Typical\ninput {\"start_date\": \"2026-03-02\", \"add_days\": 10} returns\n{\"result_date\": \"2026-03-16\", \"result_weekday\": \"Monday\", ...}; with\nend_date set it returns {\"business_days_between\": N, \"from\": ..., \"to\": ...}.\n\nUse when the span must exclude weekends and named holidays. Not for plain\ncalendar-day differences, which are a direct subtraction, and not for\nscheduling 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"start_date":{"type":"string","description":"Anchor date in ISO format YYYY-MM-DD, e.g. \"2026-03-02\"."},"add_days":{"default":0,"maximum":5000,"minimum":-5000,"type":"integer","description":"Business days to add; negative subtracts. Range -5000 to\n5000. Ignored when end_date is provided."},"end_date":{"default":"","type":"string","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":{"default":[],"items":{"type":"string"},"type":"array","description":"Optional list of ISO YYYY-MM-DD dates to treat as\nnon-working days, e.g. [\"2026-12-25\"]."}},"required":["start_date"],"additionalProperties":false}},{"name":"deadline_planner","description":"Plan a task schedule backward from a hard deadline in business days. PREMIUM (license).\n\nGiven ordered tasks with business-day durations, returns each task's\nstart/end dates, the latest safe start, and slack from today. Typical\ninput {\"due_date\": \"2026-06-01\", \"tasks\": [{\"name\": \"Draft\", \"days\": 3},\n{\"name\": \"Review\", \"days\": 2}]} returns {\"schedule\": [...],\n\"latest_safe_start\": \"YYYY-MM-DD\", \"slack_business_days_from_today\": N,\n\"verdict\": \"...\"}.\n\nUse when the end date is fixed and steps must be placed backward from it.\nNot for forward counting from a start date (business_days) and not for\nresponse-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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"due_date":{"type":"string","description":"The deadline, ISO YYYY-MM-DD."},"tasks":{"items":{"additionalProperties":true,"type":"object"},"type":"array","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."},"holidays":{"default":[],"items":{"type":"string"},"type":"array","description":"Optional list of ISO YYYY-MM-DD dates treated as\nnon-working days."},"buffer_days":{"default":1,"type":"integer","description":"Business days of safety margin kept free before\ndue_date, clamped to 0-365. Default 1."}},"required":["due_date","tasks"],"additionalProperties":false}},{"name":"meeting_overlap","description":"Find the shared meeting window across time zones inside working hours. FREE.\n\nGive one UTC offset per participant and an optional working-hours window.\nTypical input {\"offsets_utc\": [-8, 1, 5.5]} returns {\"overlap_utc\":\n[\"HH:MM\", \"HH:MM\"], \"overlap_minutes\": N, \"local_windows\": [...]}; when no\nshared window exists it returns {\"overlap\": null, \"verdict\": \"...\"}.\n\nUse when people in different zones need one shared slot. Not for\nconverting a single known time between zones, and not for expanding a\nrecurring 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"offsets_utc":{"items":{"maximum":14,"minimum":-14,"type":"number"},"type":"array","description":"One UTC offset per participant, each between -14 and\n+14; fractional offsets allowed, e.g. [-8, 1, 5.5]."},"work_start":{"default":"09:00","type":"string","description":"Working day start, 24h HH:MM local in every zone.\nDefault \"09:00\"."},"work_end":{"default":"17:00","type":"string","description":"Working day end, 24h HH:MM; must be later than work_start.\nDefault \"17:00\"."}},"required":["offsets_utc"],"additionalProperties":false}},{"name":"recurrence_expand","description":"Expand a recurrence rule into a concrete list of ISO dates. FREE.\n\nSet every_days for a fixed interval, or weekly_on for specific weekdays.\nTypical input {\"start_date\": \"2026-01-05\", \"every_days\": 14, \"count\": 3}\nreturns {\"dates\": [\"2026-01-05\", \"2026-01-19\", \"2026-02-02\"]}.\n\nUse when a recurrence rule has to become concrete dates. Not for counting\nworking days in a span (business_days) and not for finding a slot across\nzones (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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"start_date":{"type":"string","description":"First date of the series, ISO YYYY-MM-DD."},"count":{"default":10,"type":"integer","description":"How many dates to generate; values outside 1-60 are clamped\ninto that range. Default 10."},"every_days":{"default":0,"type":"integer","description":"Interval in days between occurrences; use this OR\nweekly_on, not both."},"weekly_on":{"default":[],"items":{"type":"string"},"type":"array","description":"Weekday names to recur on, e.g. [\"mon\", \"thu\"]; full names\nlike \"monday\" also work."}},"required":["start_date"],"additionalProperties":false}},{"name":"sla_due","description":"Compute when a ticket's SLA falls due, wall-clock or business-hours. PREMIUM (license).\n\nTypical input {\"opened_at\": \"2026-03-02T15:30\", \"sla_hours\": 8,\n\"business_hours_only\": true} returns {\"due\": \"2026-03-03T15:30\", \"mode\":\n\"business hours 09:00-17:00\"}; with business_hours_only false the mode is\n\"wall-clock\".\n\nUse when a response or resolution clock has started and one due moment is\nneeded. 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"opened_at":{"type":"string","description":"When the SLA clock started, ISO datetime YYYY-MM-DDTHH:MM."},"sla_hours":{"exclusiveMinimum":0,"maximum":24000,"type":"number","description":"SLA length in hours; greater than 0, at most 24000;\nfractions allowed, e.g. 7.5."},"business_hours_only":{"default":false,"type":"boolean","description":"If true, only time inside day_start-day_end on\nbusiness days counts toward the SLA."},"day_start":{"default":"09:00","type":"string","description":"Business day start, 24h HH:MM. Default \"09:00\"."},"day_end":{"default":"17:00","type":"string","description":"Business day end, 24h HH:MM; must be later than day_start.\nDefault \"17:00\"."},"holidays":{"default":[],"items":{"type":"string"},"type":"array","description":"Optional list of ISO YYYY-MM-DD dates that never count as\nworking days."}},"required":["opened_at","sla_hours"],"additionalProperties":false}}],"scan":{"score":87,"grade":"A","scanned_at":"2026-09-20T00:23:49.720Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T00:23:49.716Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 534ms"]},"poisoning":{"score":15,"max":15,"notes":["5 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":5,"max":10,"notes":["namespace and repository owner differ","website matches verified namespace"]}},"findings":[],"inputs":{"probes":[{"url":"https://mcp.moltlinestudio.com/timeops","reachable":true,"authRequired":false,"latencyMs":534,"serverInfo":{"name":"moltline-timeops","version":"1.1.0"}}],"packages":[],"repo":{"found":true,"owner":"GarphenGate","repo":"moltline-mcp","archived":false,"pushedAt":"2026-09-19T15:00:29Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/316633241?v=4","ownerCreatedAt":"2026-08-13T15:17:26Z","license":"MIT"},"icon":{"url":"https://moltlinestudio.com/icon-192.png","source":"registry","width":192,"height":192},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-19T15:00:29.000Z","score":23}}}},"grade_history":[],"reviews":[]}