Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,537Letters: 14Defects: 1,323counted 3 min ago
teppi

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 yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:eb5f83bdf4f93e1affafb4288f533bbef2c57bf4fa6d6a1765574615c1e89fe1 | sha256sum