Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,558Letters: 14Defects: 1,331counted 4 min ago
teppi

Server definition

Hash
sha256:f59accab9efff8c88f0d5edb09c2df99817449b6f03a77f5e2f5d2de0c546d07
What it is
What a remote MCP server returned when asked what it offers: 5 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "Estimate API workload costs in USD per request, day and month, with rates and dated snapshot provenance. Use for token budgets; use ai_subscription_stack_cost for chat or coding subscriptions. Model IDs use providerId/id from https://operatornest.com/api/models?subset=pricing, filtered to the MCP catalog; the OSS bundle lists accepted IDs in src/data/pricing-snapshot.json. Rates stay offline until the catalog is updated; missing rates return null. Cached tokens are part of total input; published batch and long-context rates apply only when eligible. Non-token charges are excluded.", "inputSchema": { "additionalProperties": false, "properties": { "batchModelIds": { "description": "Optional subset of modelIds to price with published batch discounts. Omission or [] uses standard rates; IDs without a published discount are rejected.", "examples": [ [] ], "items": { "description": "Selected model ID with a published batch discount.", "maxLength": 200, "minLength": 1, "pattern": "\\S", "type": "string" }, "maxItems": 20, "minItems": 0, "type": "array", "uniqueItems": true }, "cachedInputTokens": { "description": "Cached portion of inputTokens per request; must not exceed inputTokens. Use 0 without caching.", "examples": [ 5000 ], "maximum": 100000000, "minimum": 0, "type": "integer" }, "inputTokens": { "description": "Total input tokens per request, including cached input tokens.", "examples": [ 10000 ], "maximum": 100000000, "minimum": 0, "type": "integer" }, "modelIds": { "description": "Unique providerId/id values from the MCP pricing catalog. Unknown or unavailable IDs fail validation.", "items": { "description": "Model ID accepted by the MCP pricing catalog.", "maxLength": 200, "minLength": 1, "pattern": "\\S", "type": "string" }, "maxItems": 20, "minItems": 1, "type": "array", "uniqueItems": true }, "outputTokens": { "description": "Generated output tokens per request.", "examples": [ 2000 ], "maximum": 100000000, "minimum": 0, "type": "integer" }, "requestsPerDay": { "description": "Requests used to scale the daily estimate, independent of requestsPerMonth.", "examples": [ 100 ], "maximum": 10000000, "minimum": 0, "type": "integer" }, "requestsPerMonth": { "description": "Requests used to scale the monthly estimate; not inferred from the daily count.", "examples": [ 3000 ], "maximum": 100000000, "minimum": 0, "type": "integer" } }, "required": [ "inputTokens", "cachedInputTokens", "outputTokens", "requestsPerDay", "requestsPerMonth", "modelIds" ], "type": "object" }, "name": "ai_api_cost", "outputSchema": { "additionalProperties": false, "description": "API token cost estimates with normalized inputs, USD units, rate assumptions and catalog snapshot provenance.", "properties": { "assumptions": { "description": "Limits and assumptions to retain when presenting the result.", "items": { "type": "string" }, "type": "array" }, "estimates": { "description": "Cost estimates in selected-model order.", "items": { "additionalProperties": false, "properties": { "batch": { "description": "Whether a requested published batch discount was applied.", "type": "boolean" }, "longContext": { "description": "Whether published long-context rate multipliers apply.", "type": "boolean" }, "modelId": { "description": "Selected providerId/id from the pricing catalog.", "type": "string" }, "name": { "description": "Display name of the selected model or plan.", "type": "string" }, "note": { "description": "Catalog note about pricing limitations.", "type": "string" }, "perDay": { "description": "Estimated USD per day at requestsPerDay; null when rates are unlisted.", "type": [ "number", "null" ] }, "perMonth": { "description": "Estimated USD per month at requestsPerMonth; null when rates are unlisted.", "type": [ "number", "null" ] }, "perRequest": { "description": "Estimated USD per request; null when any required rate is unlisted.", "type": [ "number", "null" ] }, "ratesPerMillion": { "additionalProperties": false, "description": "USD rates per million tokens after long-context multipliers, before batch discounts; null means unlisted.", "properties": { "cachedInput": { "description": "Cached-input USD rate per million tokens; falls back to the input rate when absent.", "type": [ "number", "null" ] }, "input": { "description": "Uncached-input USD rate per million tokens; null means unlisted.", "type": [ "number", "null" ] }, "output": { "description": "Output USD rate per million tokens; null means unlisted.", "type": [ "number", "null" ] } }, "required": [ "input", "cachedInput", "output" ], "type": "object" }, "sourceUrl": { "description": "Official rate or scheduler syntax reference URL.", "format": "uri", "type": "string" } }, "required": [ "modelId", "name", "perRequest", "perDay", "perMonth", "longContext", "batch", "ratesPerMillion", "sourceUrl", "note" ], "type": "object" }, "type": "array" }, "input": { "additionalProperties": false, "description": "Normalized inputs used for this calculation.", "properties": { "batchModelIds": { "description": "Optional subset of modelIds to price with published batch discounts. Omission or [] uses standard rates; IDs without a published discount are rejected.", "examples": [ [] ], "items": { "description": "Selected model ID with a published batch discount.", "maxLength": 200, "minLength": 1, "pattern": "\\S", "type": "string" }, "maxItems": 20, "minItems": 0, "type": "array", "uniqueItems": true }, "cachedInputTokens": { "description": "Cached portion of inputTokens per request; must not exceed inputTokens. Use 0 without caching.", "examples": [ 5000 ], "maximum": 100000000, "minimum": 0, "type": "integer" }, "inputTokens": { "description": "Total input tokens per request, including cached input tokens.", "examples": [ 10000 ], "maximum": 100000000, "minimum": 0, "type": "integer" }, "modelIds": { "description": "Unique providerId/id values from the MCP pricing catalog. Unknown or unavailable IDs fail validation.", "items": { "description": "Model ID accepted by the MCP pricing catalog.", "maxLength": 200, "minLength": 1, "pattern": "\\S", "type": "string" }, "maxItems": 20, "minItems": 1, "type": "array", "uniqueItems": true }, "outputTokens": { "description": "Generated output tokens per request.", "examples": [ 2000 ], "maximum": 100000000, "minimum": 0, "type": "integer" }, "requestsPerDay": { "description": "Requests used to scale the daily estimate, independent of requestsPerMonth.", "examples": [ 100 ], "maximum": 10000000, "minimum": 0, "type": "integer" }, "requestsPerMonth": { "description": "Requests used to scale the monthly estimate; not inferred from the daily count.", "examples": [ 3000 ], "maximum": 100000000, "minimum": 0, "type": "integer" } }, "required": [ "inputTokens", "cachedInputTokens", "outputTokens", "requestsPerDay", "requestsPerMonth", "modelIds" ], "type": "object" }, "method": { "description": "Calculation or ranking method applied to the inputs.", "type": "string" }, "provenance": { "additionalProperties": { "description": "Unit or source detail for the named field.", "type": "string" }, "description": "Dated data sources or runtime time-zone information used for this result.", "type": "object" }, "tool": { "const": "ai-api-cost-calculator", "description": "Calculator identifier for this result." }, "units": { "additionalProperties": { "description": "Unit or source detail for the named field.", "type": "string" }, "description": "Units for the numeric and time fields in this result.", "type": "object" } }, "required": [ "tool", "input", "units", "method", "assumptions", "provenance", "estimates" ], "type": "object" } }, { "description": "Total selected AI chat and coding subscriptions in USD and identify overlapping capabilities. Use to review a subscription stack; use ai_api_cost for API token charges. Select unique planIds from the schema enum; [] returns zero totals and no plans. Returns monthly and annual totals, selected plans, capability groups and dated official sources. Annual totals use published annual billing or twelve monthly charges; taxes, regional differences and promotions are excluded. Bundled rates are dated estimates, without live billing lookup or subscription changes.", "inputSchema": { "additionalProperties": false, "properties": { "planIds": { "description": "Unique subscription IDs from the enum. An empty list returns zero totals and no selected plans.", "examples": [ [ "chatgpt-plus", "claude-pro" ], [] ], "items": { "description": "ID of a plan in the bundled subscription catalog.", "enum": [ "chatgpt-go", "chatgpt-plus", "chatgpt-pro", "claude-pro", "claude-max-5x", "claude-max-20x", "google-ai-pro", "google-ai-ultra-5x", "google-ai-ultra-20x", "supergrok", "supergrok-plus", "perplexity-pro", "perplexity-max", "microsoft-365-premium", "mistral-pro", "manus-pro", "genspark-plus", "cursor-pro" ], "type": "string" }, "maxItems": 18, "minItems": 0, "type": "array", "uniqueItems": true } }, "required": [ "planIds" ], "type": "object" }, "name": "ai_subscription_stack_cost", "outputSchema": { "additionalProperties": false, "description": "Subscription totals, capability overlap and dated plan sources with normalized selection.", "properties": { "annualTotal": { "description": "Sum of published annual charges or twelve monthly charges per plan; excludes taxes, regional changes and promotions.", "type": "number" }, "assumptions": { "description": "Limits and assumptions to retain when presenting the result.", "items": { "type": "string" }, "type": "array" }, "input": { "additionalProperties": false, "description": "Normalized inputs used for this calculation.", "properties": { "planIds": { "description": "Unique subscription IDs from the enum. An empty list returns zero totals and no selected plans.", "examples": [ [ "chatgpt-plus", "claude-pro" ], [] ], "items": { "description": "ID of a plan in the bundled subscription catalog.", "enum": [ "chatgpt-go", "chatgpt-plus", "chatgpt-pro", "claude-pro", "claude-max-5x", "claude-max-20x", "google-ai-pro", "google-ai-ultra-5x", "google-ai-ultra-20x", "supergrok", "supergrok-plus", "perplexity-pro", "perplexity-max", "microsoft-365-premium", "mistral-pro", "manus-pro", "genspark-plus", "cursor-pro" ], "type": "string" }, "maxItems": 18, "minItems": 0, "type": "array", "uniqueItems": true } }, "required": [ "planIds" ], "type": "object" }, "method": { "description": "Calculation or ranking method applied to the inputs.", "type": "string" }, "monthlyTotal": { "description": "Sum of selected monthly USD charges; zero for an empty stack.", "type": "number" }, "overlap": { "description": "Capability groups and selected plan IDs; more than one plan ID indicates overlap.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Catalog identifier for a plan or capability.", "type": "string" }, "label": { "description": "Human-readable capability label.", "type": "string" }, "planIds": { "description": "Selected plans offering this capability; more than one ID indicates overlap.", "items": { "type": "string" }, "type": "array" } }, "required": [ "id", "label", "planIds" ], "type": "object" }, "type": "array" }, "plans": { "description": "Selected plans with published USD charges and dated sources, in input order.", "items": { "additionalProperties": false, "properties": { "annual": { "description": "Published USD annual charge; null if only monthly billing is listed.", "type": [ "number", "null" ] }, "annualNote": { "description": "Qualification about annual billing.", "type": "string" }, "capabilities": { "additionalProperties": { "description": "Whether the plan offers this capability.", "type": "boolean" }, "description": "Capability IDs mapped to whether the selected plan includes them.", "type": "object" }, "checked": { "description": "Date the referenced catalog or scheduler source was checked.", "type": "string" }, "id": { "description": "Catalog identifier for a plan or capability.", "type": "string" }, "modelFamilies": { "description": "Model family labels listed for the plan.", "items": { "type": "string" }, "type": "array" }, "modelSource": { "description": "Official source for plan model access.", "type": "string" }, "monthly": { "description": "Published USD monthly charge.", "type": "number" }, "name": { "description": "Display name of the selected model or plan.", "type": "string" }, "provider": { "description": "Public subscription provider name.", "type": "string" }, "source": { "description": "Official plan pricing URL.", "type": "string" }, "sourceNote": { "description": "Qualification about the source or plan availability.", "type": "string" } }, "required": [ "id", "provider", "name", "monthly", "annual", "capabilities", "modelFamilies", "source", "modelSource", "checked" ], "type": "object" }, "type": "array" }, "provenance": { "additionalProperties": false, "description": "Dated data sources or runtime time-zone information used for this result.", "properties": { "checked": { "description": "Date the referenced catalog or scheduler source was checked.", "type": "string" }, "sources": { "description": "Official pricing sources for the selected plans.", "items": { "additionalProperties": false, "properties": { "checked": { "description": "Date the referenced catalog or scheduler source was checked.", "type": "string" }, "planId": { "description": "Selected plan ID corresponding to this source.", "type": "string" }, "url": { "description": "Official plan pricing URL.", "type": "string" } }, "required": [ "planId", "url", "checked" ], "type": "object" }, "type": "array" } }, "required": [ "checked", "sources" ], "type": "object" }, "tool": { "const": "ai-subscription-cost-calculator", "description": "Calculator identifier for this result." }, "units": { "additionalProperties": false, "description": "Units for the numeric and time fields in this result.", "properties": { "totals": { "const": "USD", "description": "Currency for subscription totals." } }, "required": [ "totals" ], "type": "object" } }, "required": [ "tool", "input", "method", "assumptions", "units", "plans", "monthlyTotal", "annualTotal", "overlap", "provenance" ], "type": "object" } }, { "description": "Preview up to 10 cron matches strictly after a supplied UTC instant, within a 366-day search. Use to check existing scheduler syntax; use recurring_schedule to draft task recurrence calendars or meeting_time_zones for participant overlap. Returns UTC starts, local labels, normalized inputs and a dated syntax source; fewer matches or [] means the search window ended. Supports numeric stars, lists, ranges, steps and weekday names in the selected dialect; rejects L, W, # and named months. cloudflare requires UTC; other zones follow runtime daylight saving transitions. No schedule is installed or run.", "inputSchema": { "additionalProperties": false, "properties": { "after": { "description": "UTC ISO instant from 2000 through 2100; matches are strictly after this instant. Only Z offsets are accepted.", "examples": [ "2026-10-02T00:00:00Z" ], "format": "date-time", "maxLength": 24, "minLength": 20, "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,3})?Z$", "type": "string" }, "count": { "description": "Maximum matches to return. The list may be shorter or empty if no further matches occur within the 366-day search.", "examples": [ 3 ], "maximum": 10, "minimum": 1, "type": "integer" }, "dialect": { "description": "Scheduler syntax and weekday numbering. github uses 0 or 7 for Sunday and 1–6 for Monday–Saturday; the others use 1–7 for Sunday–Saturday.", "enum": [ "github", "cloudflare", "quartz", "aws" ], "examples": [ "github" ], "type": "string" }, "expression": { "description": "Cron fields in the selected dialect: five for github/cloudflare, six or seven for quartz, six for aws (optional cron(...) wrapper). Supports *, lists, ranges, steps and weekday names; rejects L, W, # and named months. Quartz/aws require ? in exactly one day field.", "examples": [ "0 9 * * 1-5" ], "maxLength": 200, "minLength": 1, "pattern": "\\S", "type": "string" }, "zone": { "description": "IANA time zone for matching local cron fields. cloudflare requires UTC. Daylight saving transitions follow the runtime time-zone database.", "examples": [ "UTC", "America/New_York" ], "maxLength": 100, "minLength": 1, "pattern": "\\S", "type": "string" } }, "required": [ "expression", "dialect", "zone", "after", "count" ], "type": "object" }, "name": "cron_next_runs", "outputSchema": { "additionalProperties": false, "description": "Bounded cron preview with normalized syntax, UTC starts, local labels and scheduler source.", "properties": { "assumptions": { "description": "Limits and assumptions to retain when presenting the result.", "items": { "type": "string" }, "type": "array" }, "input": { "additionalProperties": false, "description": "Normalized inputs used for this calculation.", "properties": { "after": { "description": "UTC ISO instant from 2000 through 2100; matches are strictly after this instant. Only Z offsets are accepted.", "examples": [ "2026-10-02T00:00:00Z" ], "format": "date-time", "maxLength": 24, "minLength": 20, "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,3})?Z$", "type": "string" }, "count": { "description": "Maximum matches to return. The list may be shorter or empty if no further matches occur within the 366-day search.", "examples": [ 3 ], "maximum": 10, "minimum": 1, "type": "integer" }, "dialect": { "description": "Scheduler syntax and weekday numbering. github uses 0 or 7 for Sunday and 1–6 for Monday–Saturday; the others use 1–7 for Sunday–Saturday.", "enum": [ "github", "cloudflare", "quartz", "aws" ], "examples": [ "github" ], "type": "string" }, "expression": { "description": "Cron fields in the selected dialect: five for github/cloudflare, six or seven for quartz, six for aws (optional cron(...) wrapper). Supports *, lists, ranges, steps and weekday names; rejects L, W, # and named months. Quartz/aws require ? in exactly one day field.", "examples": [ "0 9 * * 1-5" ], "maxLength": 200, "minLength": 1, "pattern": "\\S", "type": "string" }, "zone": { "description": "IANA time zone for matching local cron fields. cloudflare requires UTC. Daylight saving transitions follow the runtime time-zone database.", "examples": [ "UTC", "America/New_York" ], "maxLength": 100, "minLength": 1, "pattern": "\\S", "type": "string" } }, "required": [ "expression", "dialect", "zone", "after", "count" ], "type": "object" }, "method": { "description": "Calculation or ranking method applied to the inputs.", "type": "string" }, "provenance": { "additionalProperties": false, "description": "Dated data sources or runtime time-zone information used for this result.", "properties": { "checked": { "description": "Date the referenced catalog or scheduler source was checked.", "type": "string" }, "sourceUrl": { "description": "Official rate or scheduler syntax reference URL.", "type": "string" } }, "required": [ "sourceUrl", "checked" ], "type": "object" }, "runs": { "description": "Chronological cron matches strictly after after, up to count; may be shorter or empty within the search window.", "items": { "additionalProperties": false, "properties": { "label": { "description": "Start formatted in the requested IANA time zone.", "type": "string" }, "startUtc": { "description": "Start instant in ISO 8601 UTC.", "format": "date-time", "type": "string" } }, "required": [ "startUtc", "label" ], "type": "object" }, "maxItems": 10, "type": "array" }, "searchDays": { "const": 366, "description": "Maximum search window in days." }, "tool": { "const": "cron-expression-generator", "description": "Calculator identifier for this result." } }, "required": [ "tool", "input", "method", "assumptions", "runs", "searchDays", "provenance" ], "type": "object" } }, { "description": "Find shared 30-minute meeting slots inside 09:00–17:00 for 2–8 participants. Use to compare workday overlap; use recurring_schedule for repeating task calendars or cron_next_runs for scheduler previews. Returns all candidates, overlap count and up to three best slots ranked nearest to each person’s 13:00, with UTC starts and local labels. The date belongs to the first participant’s zone; daylight saving uses runtime IANA data. No calendar availability or holiday lookup, invitations or calendar writes.", "inputSchema": { "additionalProperties": false, "properties": { "date": { "description": "Meeting date in the first person’s local time zone, from 2000-01-01 to 2100-12-31.", "examples": [ "2026-10-05" ], "format": "date", "maxLength": 10, "minLength": 10, "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "people": { "description": "Participants in display order. The first person determines the local date; all must fit a full half-hour inside 09:00–17:00.", "items": { "additionalProperties": false, "properties": { "name": { "description": "Participant label used in the returned local-time display.", "examples": [ "Sam" ], "maxLength": 80, "minLength": 1, "pattern": "\\S", "type": "string" }, "zone": { "description": "IANA time zone supported by Intl.DateTimeFormat.", "examples": [ "America/New_York", "Asia/Kolkata" ], "maxLength": 100, "minLength": 1, "pattern": "\\S", "type": "string" } }, "required": [ "name", "zone" ], "type": "object" }, "maxItems": 8, "minItems": 2, "type": "array" } }, "required": [ "date", "people" ], "type": "object" }, "name": "meeting_time_zones", "outputSchema": { "additionalProperties": false, "description": "Meeting candidates and ranked shared slots with normalized participants, local labels and DST assumptions.", "properties": { "assumptions": { "description": "Limits and assumptions to retain when presenting the result.", "items": { "type": "string" }, "type": "array" }, "bestSlots": { "description": "Up to three shared slots ranked by score, then earliest UTC start; [] means no overlap.", "items": { "additionalProperties": false, "properties": { "inside": { "description": "Whether each participant’s full half-hour fits their 09:00–17:00 workday, in input order.", "items": { "type": "boolean" }, "type": "array" }, "labels": { "description": "Local start labels for participants in input order.", "items": { "type": "string" }, "type": "array" }, "score": { "description": "Sum of absolute hours from 13:00 at each participant’s slot midpoint; lower ranks first.", "type": "number" }, "start": { "description": "Unix epoch milliseconds.", "type": "integer" }, "startUtc": { "description": "Start instant in ISO 8601 UTC.", "format": "date-time", "type": "string" } }, "required": [ "start", "startUtc", "inside", "labels", "score" ], "type": "object" }, "maxItems": 3, "type": "array" }, "input": { "additionalProperties": false, "description": "Normalized inputs used for this calculation.", "properties": { "date": { "description": "Meeting date in the first person’s local time zone, from 2000-01-01 to 2100-12-31.", "examples": [ "2026-10-05" ], "format": "date", "maxLength": 10, "minLength": 10, "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "people": { "description": "Participants in display order. The first person determines the local date; all must fit a full half-hour inside 09:00–17:00.", "items": { "additionalProperties": false, "properties": { "name": { "description": "Participant label used in the returned local-time display.", "examples": [ "Sam" ], "maxLength": 80, "minLength": 1, "pattern": "\\S", "type": "string" }, "zone": { "description": "IANA time zone supported by Intl.DateTimeFormat.", "examples": [ "America/New_York", "Asia/Kolkata" ], "maxLength": 100, "minLength": 1, "pattern": "\\S", "type": "string" } }, "required": [ "name", "zone" ], "type": "object" }, "maxItems": 8, "minItems": 2, "type": "array" } }, "required": [ "date", "people" ], "type": "object" }, "method": { "description": "Calculation or ranking method applied to the inputs.", "type": "string" }, "overlapCount": { "description": "Number of candidate slots inside every participant’s workday.", "minimum": 0, "type": "integer" }, "provenance": { "additionalProperties": { "description": "Unit or source detail for the named field.", "type": "string" }, "description": "Dated data sources or runtime time-zone information used for this result.", "type": "object" }, "rows": { "description": "All candidate half-hour starts on the first participant’s local date, in chronological order.", "items": { "additionalProperties": false, "properties": { "inside": { "description": "Whether each participant’s full half-hour fits their 09:00–17:00 workday, in input order.", "items": { "type": "boolean" }, "type": "array" }, "labels": { "description": "Local start labels for participants in input order.", "items": { "type": "string" }, "type": "array" }, "score": { "description": "Sum of absolute hours from 13:00 at each participant’s slot midpoint; lower ranks first.", "type": "number" }, "start": { "description": "Unix epoch milliseconds.", "type": "integer" }, "startUtc": { "description": "Start instant in ISO 8601 UTC.", "format": "date-time", "type": "string" } }, "required": [ "start", "startUtc", "inside", "labels", "score" ], "type": "object" }, "type": "array" }, "tool": { "const": "meeting-time-zone-planner", "description": "Calculator identifier for this result." }, "units": { "additionalProperties": { "description": "Unit or source detail for the named field.", "type": "string" }, "description": "Units for the numeric and time fields in this result.", "type": "object" } }, "required": [ "tool", "input", "units", "method", "assumptions", "provenance", "rows", "overlapCount", "bestSlots" ], "type": "object" } }, { "description": "Prepare weekly, biweekly or monthly task calendars and estimate monthly effort for up to 20 tasks. Use to draft a recurring work plan; use cron_next_runs to preview existing cron syntax or meeting_time_zones for shared workday slots. Returns monthly hours, first dates, recurrence rules and an RFC 5545 calendar. Times float in the importing calendar’s local zone; weekly estimates use 52/12 runs per month and biweekly 26/12. owner is a planning label, with no assignment or execution. No calendar is updated; an empty task list returns zero hours and no events.", "inputSchema": { "additionalProperties": false, "properties": { "startDate": { "description": "Earliest date for the first occurrence of each task, from 2000-01-01 to 2100-12-31.", "examples": [ "2026-10-05" ], "format": "date", "maxLength": 10, "minLength": 10, "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "tasks": { "description": "Tasks to include in the estimate and calendar. [] returns zero hours and a calendar with no events.", "items": { "additionalProperties": false, "properties": { "day": { "description": "Weekday for weekly/biweekly tasks. Required but ignored for monthly tasks.", "enum": [ "MO", "TU", "WE", "TH", "FR", "SA", "SU" ], "examples": [ "MO" ], "type": "string" }, "frequency": { "description": "Repeat every week, every two weeks from the first matching weekday, or every month.", "enum": [ "weekly", "biweekly", "monthly" ], "type": "string" }, "minutes": { "description": "Estimated minutes per run; used for event duration and monthly hours.", "examples": [ 35 ], "maximum": 1440, "minimum": 1, "type": "integer" }, "monthday": { "description": "Day of month for monthly tasks, limited to dates present in every month. Required but ignored for weekly/biweekly tasks.", "examples": [ 1 ], "maximum": 28, "minimum": 1, "type": "integer" }, "owner": { "description": "Planning label: delegate to an operator, keep for yourself, or decide later. Included in the calendar note; does not assign or execute work.", "enum": [ "delegate", "keep", "decide" ], "type": "string" }, "time": { "description": "24-hour HH:mm start time, floating in the importing calendar’s local time zone.", "examples": [ "09:00" ], "maxLength": 5, "minLength": 5, "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$", "type": "string" }, "title": { "description": "Task label used as the calendar event summary.", "examples": [ "Investor update" ], "maxLength": 80, "minLength": 1, "pattern": "\\S", "type": "string" } }, "required": [ "title", "frequency", "day", "monthday", "minutes", "time", "owner" ], "type": "object" }, "maxItems": 20, "minItems": 0, "type": "array" } }, "required": [ "startDate", "tasks" ], "type": "object" }, "name": "recurring_schedule", "outputSchema": { "additionalProperties": false, "description": "Monthly effort estimate, normalized recurrence rules and an importable floating-time calendar.", "properties": { "assumptions": { "description": "Limits and assumptions to retain when presenting the result.", "items": { "type": "string" }, "type": "array" }, "ics": { "description": "RFC 5545 calendar with CRLF folding and floating local times.", "type": "string" }, "input": { "additionalProperties": false, "description": "Normalized inputs used for this calculation.", "properties": { "startDate": { "description": "Earliest date for the first occurrence of each task, from 2000-01-01 to 2100-12-31.", "examples": [ "2026-10-05" ], "format": "date", "maxLength": 10, "minLength": 10, "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "tasks": { "description": "Tasks to include in the estimate and calendar. [] returns zero hours and a calendar with no events.", "items": { "additionalProperties": false, "properties": { "day": { "description": "Weekday for weekly/biweekly tasks. Required but ignored for monthly tasks.", "enum": [ "MO", "TU", "WE", "TH", "FR", "SA", "SU" ], "examples": [ "MO" ], "type": "string" }, "frequency": { "description": "Repeat every week, every two weeks from the first matching weekday, or every month.", "enum": [ "weekly", "biweekly", "monthly" ], "type": "string" }, "minutes": { "description": "Estimated minutes per run; used for event duration and monthly hours.", "examples": [ 35 ], "maximum": 1440, "minimum": 1, "type": "integer" }, "monthday": { "description": "Day of month for monthly tasks, limited to dates present in every month. Required but ignored for weekly/biweekly tasks.", "examples": [ 1 ], "maximum": 28, "minimum": 1, "type": "integer" }, "owner": { "description": "Planning label: delegate to an operator, keep for yourself, or decide later. Included in the calendar note; does not assign or execute work.", "enum": [ "delegate", "keep", "decide" ], "type": "string" }, "time": { "description": "24-hour HH:mm start time, floating in the importing calendar’s local time zone.", "examples": [ "09:00" ], "maxLength": 5, "minLength": 5, "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$", "type": "string" }, "title": { "description": "Task label used as the calendar event summary.", "examples": [ "Investor update" ], "maxLength": 80, "minLength": 1, "pattern": "\\S", "type": "string" } }, "required": [ "title", "frequency", "day", "monthday", "minutes", "time", "owner" ], "type": "object" }, "maxItems": 20, "minItems": 0, "type": "array" } }, "required": [ "startDate", "tasks" ], "type": "object" }, "method": { "description": "Calculation or ranking method applied to the inputs.", "type": "string" }, "monthlyHours": { "description": "Estimated monthly hours using 52/12 weekly, 26/12 biweekly and one monthly run.", "type": "number" }, "provenance": { "additionalProperties": { "description": "Unit or source detail for the named field.", "type": "string" }, "description": "Dated data sources or runtime time-zone information used for this result.", "type": "object" }, "schedules": { "description": "Normalized tasks with their first occurrence and recurrence rule, in input order.", "items": { "additionalProperties": false, "properties": { "day": { "description": "Weekday for weekly/biweekly tasks. Required but ignored for monthly tasks.", "enum": [ "MO", "TU", "WE", "TH", "FR", "SA", "SU" ], "examples": [ "MO" ], "type": "string" }, "firstDate": { "description": "First occurrence on or after startDate.", "format": "date", "type": "string" }, "frequency": { "description": "Repeat every week, every two weeks from the first matching weekday, or every month.", "enum": [ "weekly", "biweekly", "monthly" ], "type": "string" }, "minutes": { "description": "Estimated minutes per run; used for event duration and monthly hours.", "examples": [ 35 ], "maximum": 1440, "minimum": 1, "type": "integer" }, "monthday": { "description": "Day of month for monthly tasks, limited to dates present in every month. Required but ignored for weekly/biweekly tasks.", "examples": [ 1 ], "maximum": 28, "minimum": 1, "type": "integer" }, "owner": { "description": "Planning label: delegate to an operator, keep for yourself, or decide later. Included in the calendar note; does not assign or execute work.", "enum": [ "delegate", "keep", "decide" ], "type": "string" }, "recurrenceRule": { "description": "RFC 5545 RRULE matching the task frequency and day.", "type": "string" }, "time": { "description": "24-hour HH:mm start time, floating in the importing calendar’s local time zone.", "examples": [ "09:00" ], "maxLength": 5, "minLength": 5, "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$", "type": "string" }, "title": { "description": "Task label used as the calendar event summary.", "examples": [ "Investor update" ], "maxLength": 80, "minLength": 1, "pattern": "\\S", "type": "string" } }, "required": [ "title", "frequency", "day", "monthday", "minutes", "time", "owner", "firstDate", "recurrenceRule" ], "type": "object" }, "type": "array" }, "tool": { "const": "recurring-task-planner", "description": "Calculator identifier for this result." }, "units": { "additionalProperties": { "description": "Unit or source detail for the named field.", "type": "string" }, "description": "Units for the numeric and time fields in this result.", "type": "object" } }, "required": [ "tool", "input", "units", "method", "assumptions", "provenance", "monthlyHours", "schedules", "ics" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:f59accab9efff8c88f0d5edb09c2df99817449b6f03a77f5e2f5d2de0c546d07 | sha256sum