Server definition
- Hash
- sha256:eb5f83bdf4f93e1affafb4288f533bbef2c57bf4fa6d6a1765574615c1e89fe1
- What it is
- What a remote MCP server returned when asked what it offers: 5 tools
The blob, as servednamed by its sha256
{
"instructions": "Deterministic date/schedule math over MCP. Free: business_days, meeting_overlap, recurrence_expand. Premium (license): deadline_planner, sla_due. All dates ISO YYYY-MM-DD; times 24h HH:MM.",
"tools": [
{
"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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"add_days": {
"default": 0,
"description": "Business days to add; negative subtracts. Range -5000 to\n5000. Ignored when end_date is provided.",
"maximum": 5000,
"minimum": -5000,
"type": "integer"
},
"end_date": {
"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.",
"type": "string"
},
"holidays": {
"default": [],
"description": "Optional list of ISO YYYY-MM-DD dates to treat as\nnon-working days, e.g. [\"2026-12-25\"].",
"items": {
"type": "string"
},
"type": "array"
},
"start_date": {
"description": "Anchor date in ISO format YYYY-MM-DD, e.g. \"2026-03-02\".",
"type": "string"
}
},
"required": [
"start_date"
],
"type": "object"
},
"name": "business_days",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"buffer_days": {
"default": 1,
"description": "Business days of safety margin kept free before\ndue_date, clamped to 0-365. Default 1.",
"type": "integer"
},
"due_date": {
"description": "The deadline, ISO YYYY-MM-DD.",
"type": "string"
},
"holidays": {
"default": [],
"description": "Optional list of ISO YYYY-MM-DD dates treated as\nnon-working days.",
"items": {
"type": "string"
},
"type": "array"
},
"tasks": {
"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.",
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
}
},
"required": [
"due_date",
"tasks"
],
"type": "object"
},
"name": "deadline_planner",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"offsets_utc": {
"description": "One UTC offset per participant, each between -14 and\n+14; fractional offsets allowed, e.g. [-8, 1, 5.5].",
"items": {
"maximum": 14,
"minimum": -14,
"type": "number"
},
"type": "array"
},
"work_end": {
"default": "17:00",
"description": "Working day end, 24h HH:MM; must be later than work_start.\nDefault \"17:00\".",
"type": "string"
},
"work_start": {
"default": "09:00",
"description": "Working day start, 24h HH:MM local in every zone.\nDefault \"09:00\".",
"type": "string"
}
},
"required": [
"offsets_utc"
],
"type": "object"
},
"name": "meeting_overlap",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"count": {
"default": 10,
"description": "How many dates to generate; values outside 1-60 are clamped\ninto that range. Default 10.",
"type": "integer"
},
"every_days": {
"default": 0,
"description": "Interval in days between occurrences; use this OR\nweekly_on, not both.",
"type": "integer"
},
"start_date": {
"description": "First date of the series, ISO YYYY-MM-DD.",
"type": "string"
},
"weekly_on": {
"default": [],
"description": "Weekday names to recur on, e.g. [\"mon\", \"thu\"]; full names\nlike \"monday\" also work.",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"start_date"
],
"type": "object"
},
"name": "recurrence_expand",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"business_hours_only": {
"default": false,
"description": "If true, only time inside day_start-day_end on\nbusiness days counts toward the SLA.",
"type": "boolean"
},
"day_end": {
"default": "17:00",
"description": "Business day end, 24h HH:MM; must be later than day_start.\nDefault \"17:00\".",
"type": "string"
},
"day_start": {
"default": "09:00",
"description": "Business day start, 24h HH:MM. Default \"09:00\".",
"type": "string"
},
"holidays": {
"default": [],
"description": "Optional list of ISO YYYY-MM-DD dates that never count as\nworking days.",
"items": {
"type": "string"
},
"type": "array"
},
"opened_at": {
"description": "When the SLA clock started, ISO datetime YYYY-MM-DDTHH:MM.",
"type": "string"
},
"sla_hours": {
"description": "SLA length in hours; greater than 0, at most 24000;\nfractions allowed, e.g. 7.5.",
"exclusiveMinimum": 0,
"maximum": 24000,
"type": "number"
}
},
"required": [
"opened_at",
"sla_hours"
],
"type": "object"
},
"name": "sla_due",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:eb5f83bdf4f93e1affafb4288f533bbef2c57bf4fa6d6a1765574615c1e89fe1 | sha256sum