tilwhen date engine
Server Details
Deterministic date arithmetic with auditable receipts: business days, due dates, holidays.
- Status
- Healthy
- Uptime
- 100.0% over 40 days
- Last Tested
- Transport
- Streamable HTTP ยท MCP 2025-11-25
- URL
TDQS
Scored across 9 tools
Each tool has a clearly distinct purpose: calendar arithmetic, business-day arithmetic, date differences, holiday lookup, due dates, next occurrences, natural language parsing, and explanation. Cross-references in descriptions actively reduce any potential confusion between overlapping operations.
All names are lowercase snake_case and highly descriptive, but the pattern is not uniformly verb_noun: add_days and subtract_days are verb-first, while business_days, days_between, holidays, invoice_due, and next_occurrence are noun-first. This is a minor inconsistency rather than a serious problem.
Nine tools is a well-scoped size for a date engine. Each tool covers a distinct operation needed for calendar, business-day, holiday, and payment-due-date calculations, and none feel redundant.
The tool surface covers core date workflows: calendar day add/subtract/difference, business days, holidays, invoice due dates, next occurrences, and query parsing. Minor gaps remain, such as direct weekday-of-date lookup, month/year arithmetic, or timezone conversion, but these do not break the primary use cases.
Available Tools
9 toolsadd_daysAdd calendar days to a dateARead-onlyIdempotentInspect
The date N whole calendar days after a date (exclusive counting: the start date is day 0). Omit date for today in tz. For working days use business_days; for the gap between two dates use days_between.
| Name | Required | Description | Default |
|---|---|---|---|
| tz | No | IANA timezone that defines "today" (e.g. Africa/Kampala). Default UTC. | UTC |
| date | No | ISO date YYYY-MM-DD, or "today" (resolved in tz) | today |
| days | Yes | Whole calendar days to add. Negative counts backwards. |
Output Schema
| Name | Required | Description |
|---|---|---|
| answer | Yes | The calculated answer (kind-discriminated) |
| receipt | Yes | Auditable receipt: inputs, timezone, convention, workweek, holiday calendar, exclusions, versions, stable result ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: the exclusive counting convention (start date is day 0), the 'today' resolution in tz, and the negative-days behavior implied by the schema. It doesn't describe return format, but the output schema exists and the operation is a pure calculation, so the added context is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the core operation and counting rule, the 'today' behavior, and sibling routing. The most important semantic detail (exclusive counting) is front-loaded. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a pure read-only date calculation with full schema coverage, an output schema, and annotations covering safety, the description is complete. It explains the counting convention, the 'today' resolution, and routes to alternatives. An agent has everything needed to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters (tz, date, days) with types, defaults, and constraints. The description adds the key semantic detail that counting is exclusive (start date is day 0), which clarifies the 'days' parameter's meaning. However, it doesn't add much beyond that because the schema already carries the parameter documentation. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('add') and resource ('calendar days to a date'), and immediately clarifies the counting convention ('exclusive counting: the start date is day 0'). It also distinguishes itself from siblings by naming business_days and days_between as alternatives. This is a clear, specific purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool vs alternatives: 'For working days use business_days; for the gap between two dates use days_between.' It also explains the 'today' behavior in tz. This is explicit routing guidance, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
business_daysBusiness-day calculationsARead-onlyIdempotentInspect
Span mode (from+to): business days between two dates, exclusive of the start day, inclusive of the end day. Add mode (days, optional date): the date N business days away. Optional holiday jurisdiction or custom calendar, and a selectable working week.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ISO date YYYY-MM-DD, or "today" (resolved in tz) | |
| tz | No | IANA timezone that defines "today" (e.g. Africa/Kampala). Default UTC. | UTC |
| date | No | ISO date YYYY-MM-DD, or "today" (resolved in tz) | |
| days | No | Add mode: business days to move. Negative counts backwards. | |
| from | No | ISO date YYYY-MM-DD, or "today" (resolved in tz) | |
| workweek | No | Working week. Default mon-fri (Sat+Sun weekend). | |
| jurisdiction | No | Holiday jurisdiction id: US, GB, GB-SCT, GB-NIR, IE, FR, CA, AU, UG (alias UK for GB). No default: omit for no holiday calendar. | |
| customHolidays | No | Custom organizational holiday calendar as ISO dates (mutually exclusive with jurisdiction) |
Output Schema
| Name | Required | Description |
|---|---|---|
| answer | Yes | The calculated answer (kind-discriminated) |
| receipt | Yes | Auditable receipt: inputs, timezone, convention, workweek, holiday calendar, exclusions, versions, stable result ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavioral specifics: the span mode is 'exclusive of the start day, inclusive of the end day', and add mode returns 'the date N business days away'. It also notes the optional holiday jurisdiction/custom calendar and selectable working week. These go beyond the readOnlyHint and idempotentHint annotations, which already indicate safety, so the description adds value without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler. The first sentence front-loads the two primary modes and their boundary rules, the second covers optional configurations. Every clause contributes meaning, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, two modes, output schema present), the description covers the key operational aspects: boundary inclusivity, mode selection, and optional holiday/workweek handling. It doesn't explain return values, but the output schema handles that. Timezone handling is in the schema, so nothing critical is missing for a read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds semantic grouping by explicitly defining two modes (span via 'from' and 'to', add via 'days' and optional 'date') and mentions the optional holiday/workweek parameters. This helps the agent understand parameter relationships beyond the schema's individual descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states two modes (span and add) with specific behaviors: 'business days between two dates' and 'date N business days away'. It also mentions optional holiday/workweek options. However, it does not explicitly distinguish itself from siblings like days_between or add_days, which could overlap, so it loses a point for not addressing sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through its mode descriptions but provides no explicit guidance on when to choose this tool over alternatives. It never mentions days_between, add_days, or other siblings, nor any conditions for when not to use it. The absence of any routing or exclusions leaves the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
days_betweenDays between two datesARead-onlyIdempotentInspect
Signed whole calendar days from one date to another, midnight to midnight, endpoints exclusive (the gap).
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | ISO date YYYY-MM-DD, or "today" (resolved in tz) | |
| tz | No | IANA timezone that defines "today" (e.g. Africa/Kampala). Default UTC. | UTC |
| from | Yes | ISO date YYYY-MM-DD, or "today" (resolved in tz) |
Output Schema
| Name | Required | Description |
|---|---|---|
| answer | Yes | The calculated answer (kind-discriminated) |
| receipt | Yes | Auditable receipt: inputs, timezone, convention, workweek, holiday calendar, exclusions, versions, stable result ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the tool is safe to call. The description adds meaningful behavioral detail: signed result, midnight-to-midnight boundary, and endpoint exclusivity. This clarifies the exact calculation semantics beyond what annotations provide, though it doesn't discuss edge cases like DST, which is acceptable given the schema covers timezone handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, zero filler, and the core semantics are front-loaded. The description is extremely efficient and earns every word.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, idempotent date calculation with a full schema and output schema, the description fully specifies the behavior. No critical details are missing; an agent can correctly invoke it without needing additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes all three parameters with formats and the meaning of tz. The description's mention of 'from one date to another' aligns with the from/to parameters but adds no new detail beyond the schema. Since schema coverage is 100%, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific computation: signed whole calendar days between two dates, with clear semantics (midnight-to-midnight, endpoints exclusive). This clearly differentiates it from siblings like add_days/subtract_days (which modify dates) and business_days (which count business days). The verb is implicit but the resource and operation are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is for calendar day gaps but does not explicitly direct the agent away from business_days or other sibling tools. Given the sibling list includes business_days, explicit routing would improve clarity, but the context is clear enough that an agent can infer when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explainExplain a calculation step by stepARead-onlyIdempotentInspect
Runs any operation and returns the receipt plus human-readable derivation steps. Set op, then pass the fields that operation's own tool takes. Use it when the user asks how an answer was reached.
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | Operation to explain. holiday_lookup is the holidays tool; the others share their tool's name. | |
| to | No | ISO date YYYY-MM-DD, or "today" (resolved in tz) | |
| tz | No | IANA timezone that defines "today" (e.g. Africa/Kampala). Default UTC. | UTC |
| net | No | Net-N payment terms in calendar days (Net 30 = 30). | |
| date | No | ISO date YYYY-MM-DD, or "today" (resolved in tz) | |
| days | No | Day count for add_days, subtract_days and business_days add mode. | |
| from | No | ISO date YYYY-MM-DD, or "today" (resolved in tz) | |
| roll | No | Roll a weekend or holiday due date forward to the next business day. Default false. | |
| year | No | Calendar year for holiday_lookup, e.g. 2027 | |
| event | No | Event slug (e.g. christmas). Exactly one of event/weekday. | |
| weekday | No | 0 = Sunday .. 6 = Saturday. Exactly one of event/weekday. | |
| workweek | No | Working week. Default mon-fri (Sat+Sun weekend). | |
| invoiceDate | No | ISO date YYYY-MM-DD, or "today" (resolved in tz) | |
| jurisdiction | No | Holiday jurisdiction id: US, GB, GB-SCT, GB-NIR, IE, FR, CA, AU, UG (alias UK for GB). No default: omit for no holiday calendar. | |
| customHolidays | No | Custom organizational holiday calendar as ISO dates (mutually exclusive with jurisdiction) |
Output Schema
| Name | Required | Description |
|---|---|---|
| steps | Yes | Human-readable derivation, identical to the REST /api/v1/explain output |
| receipt | Yes | Auditable receipt for the operation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true, and non-destructive. The description adds useful behavioral context beyond that: the tool delegates to another operation, the op parameter selects which one, and the result is a receipt plus derivation steps. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences front-load the core function and output, then give the invocation pattern and intended use case. Every sentence earns its place with no redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter meta-tool with an output schema and safety annotations, the description is sufficient: it defines the routing via op and points to the operation-specific tools for parameter details. It doesn't enumerate each op's parameter mapping, but the sibling tools and schema descriptions fill that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters, so baseline is 3. The description adds the crucial meta-instruction that op selects the operation and the remaining fields should be the ones that operation's own tool takes, which is not obvious from the flat schema. This helps the agent identify the relevant parameter subset.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete verb and deliverable: it runs an operation and returns a receipt plus human-readable derivation steps. It also distinguishes itself from the computational sibling tools by stating it is for explaining how an answer was reached, not merely computing it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Use it when the user asks how an answer was reached.' It also explains the invocation pattern (set op, pass the target operation's fields). It doesn't explicitly say when not to use it or name alternative tools, but the delegation pattern implies a direct sibling-tool alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
holidaysPublic holidays for a jurisdiction and yearARead-onlyIdempotentInspect
Observed public holidays with the nominal (legal) date and status: rule (statutory) or declared (officially declared for that year). Declared-only holidays are omitted for undeclared years, with a holiday_data_incomplete warning.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Calendar year to list, e.g. 2027 | |
| jurisdiction | Yes | Holiday jurisdiction id: US, GB, GB-SCT, GB-NIR, IE, FR, CA, AU, UG (alias UK for GB). |
Output Schema
| Name | Required | Description |
|---|---|---|
| answer | Yes | The calculated answer (kind-discriminated) |
| receipt | Yes | Auditable receipt: inputs, timezone, convention, workweek, holiday calendar, exclusions, versions, stable result ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/non-destructive annotations, the description discloses two important behaviors: holidays carry a nominal legal date plus a rule/declared status, and declared-only holidays are omitted for undeclared years with a holiday_data_incomplete warning. This lets the agent predict missing data and interpret response fields without calling the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the core result and then cover the important edge case (undeclared years). Every clause earns its place, with no redundant restatement of the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the small parameter set, robust read-only annotations, full schema descriptions, and the declared output schema, this description answers all the behavioral questions an agent needs: status semantics, omission behavior, and warning. No significant context gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with jurisdiction and year both described in the schema. The description adds no additional parameter detail, so the baseline 3 is appropriate; it does not hurt, but it also does not improve on the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and description clearly identify the resource (public holidays) and the jurisdiction/year scope, and the description adds the status distinction (rule vs declared) that separates this from a trivial date list. It uses a noun phrase rather than an explicit 'returns/lists' verb, and it doesn't explicitly contrast with sibling tools, though none of the date-utility siblings are direct alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the title and description: call this when you need public holidays for a jurisdiction and year. There is no explicit when-to-use, when-not-to-use, or mention of alternatives such as business_days, so the agent must infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoice_dueInvoice due date from net termsARead-onlyIdempotentInspect
Due date for Net-N payment terms (calendar days, invoice date = day 0). Optional roll-forward past weekends and, with a jurisdiction or custom calendar, public holidays.
| Name | Required | Description | Default |
|---|---|---|---|
| tz | No | IANA timezone that defines "today" (e.g. Africa/Kampala). Default UTC. | UTC |
| net | Yes | Net-N payment terms in calendar days (Net 30 = 30). | |
| roll | No | Roll a weekend or holiday due date forward to the next business day. Default false. | |
| workweek | No | Working week. Default mon-fri (Sat+Sun weekend). | |
| invoiceDate | No | ISO date YYYY-MM-DD, or "today" (resolved in tz) | today |
| jurisdiction | No | Holiday jurisdiction id: US, GB, GB-SCT, GB-NIR, IE, FR, CA, AU, UG (alias UK for GB). No default: omit for no holiday calendar. | |
| customHolidays | No | Custom organizational holiday calendar as ISO dates (mutually exclusive with jurisdiction) |
Output Schema
| Name | Required | Description |
|---|---|---|
| answer | Yes | The calculated answer (kind-discriminated) |
| receipt | Yes | Auditable receipt: inputs, timezone, convention, workweek, holiday calendar, exclusions, versions, stable result ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering safety. The description adds valuable behavioral context: the day-0 convention and the optional roll-forward past weekends/holidays. This goes beyond what annotations state and clarifies computation semantics without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that front-load the core purpose and then add optional behavior. There is zero filler, and every word contributes to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters (only 1 required) and an output schema present, the description covers the main behavior adequately. It explains the core computation and optional roll-forward. Minor omissions like the mutual exclusivity of jurisdiction and customHolidays are handled in the schema, so the description is complete for an agent to correctly invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds the 'invoice date = day 0' clarification and the concept of roll-forward, which are not explicitly in the schema's net or roll descriptions. However, this is modest added value since the schema already explains parameters well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool computes a due date for Net-N payment terms, specifying the base (calendar days, invoice date = day 0) and the optional roll-forward behavior. This distinguishes it from sibling tools like add_days or business_days, which handle different date arithmetic. The verb 'Due date' and resource 'Net-N payment terms' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a use case for payment terms with optional roll-forward, but does not explicitly state when to use this tool versus alternatives like business_days or add_days. There are no exclusions or explicit routing to siblings, leaving the agent to infer context from the Net-N terminology.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
next_occurrenceNext occurrence of an event or weekdayARead-onlyIdempotentInspect
The next occurrence strictly after the base date (default today) of either a tracked event slug (e.g. "christmas") or a weekday (0 = Sunday .. 6 = Saturday). Provide exactly one of event/weekday.
| Name | Required | Description | Default |
|---|---|---|---|
| tz | No | IANA timezone that defines "today" (e.g. Africa/Kampala). Default UTC. | UTC |
| from | No | ISO date YYYY-MM-DD, or "today" (resolved in tz) | |
| event | No | Event slug (e.g. christmas). Exactly one of event/weekday. | |
| weekday | No | 0 = Sunday .. 6 = Saturday. Exactly one of event/weekday. |
Output Schema
| Name | Required | Description |
|---|---|---|
| answer | Yes | The calculated answer (kind-discriminated) |
| receipt | Yes | Auditable receipt: inputs, timezone, convention, workweek, holiday calendar, exclusions, versions, stable result ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds useful behavioral context: 'strictly after' (exclusive of base date), 'default today', and 'exactly one of event/weekday'. It does not contradict annotations, but it omits edge-case behavior (e.g., unknown event slug, both provided) โ though the output schema may cover errors. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the core purpose. It efficiently communicates the primary function and the one-of constraint without any filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (4 params, 0 required, output schema present), the description covers the essential behavior: what it returns, the base date default, and the exclusivity. It does not discuss error handling or timezone implications beyond the schema, but the output schema and annotations compensate. The description is adequate for an agent to call the tool correctly in most scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds little beyond the schema: it reiterates 'exactly one' and mentions the default base date, but does not elaborate on the tz semantics or the event slug format beyond examples. The schema already documents all parameters, so the description adds marginal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool computes the next occurrence of a tracked event slug or a weekday, strictly after a base date. It distinguishes itself from siblings like holidays or business_days by explicitly covering event slugs and weekdays, and even specifies the weekday numbering. The verb and resource are implicit but unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus the siblings (e.g., holidays, business_days). It only mentions the one-of constraint between event and weekday, which is parameter usage, not tool selection. There are no exclusions or alternative recommendations, so an agent must infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_date_queryParse a natural-language date questionARead-onlyIdempotentInspect
Parses queries like "90 business days from today in uganda" into a normalized operation, answers it, and returns the auditable receipt. Ambiguous dates (03/04/2027) return needsClarification instead of a guess.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | The date question in plain language. Pass the user's wording rather than a date you computed. | |
| tz | No | IANA timezone that defines "today" (e.g. Africa/Kampala). Default UTC. | UTC |
| locale | No | Resolves ambiguous slash dates; omit to receive clarification choices |
Output Schema
| Name | Required | Description |
|---|---|---|
| answer | No | The calculated answer, absent when parsed is null |
| parsed | Yes | Normalized operation, or null when the query could not be understood confidently |
| receipt | No | Auditable receipt, absent when parsed is null |
| warnings | Yes | Machine-readable notes, e.g. unsupported_unit or time_ignored |
| confidence | Yes | 1.0 is a clean grammar hit; below 0.5 the query is refused rather than guessed |
| canonicalUrl | No | tilwhen page that answers this query, to cite; null when no page covers it |
| needsClarification | No | Present when the query is genuinely ambiguous (e.g. 03/04/2027); offers explicit choices instead of a guess |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only and idempotent, and the description adds meaningful behavior beyond that: it answers the question, returns an auditable receipt, and returns needsClarification for ambiguous dates instead of guessing. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core behavior, and every clause contributes information. No redundant restatement of the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations cover the safety profile, the description supplies the remaining decision-relevant behavior: it answers, receipts, and clarifies ambiguous input. Nothing essential is missing for a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all three parameters at 100%, so the baseline is 3. The example query hints at q and tz usage, but the description does not materially expand on the schema's parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a clear verb and resource: it parses natural-language date questions into a normalized operation, answers them, and returns an auditable receipt. It also distinguishes itself from arithmetic siblings by explicitly covering ambiguity handling (needsClarification) and natural-language input.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is clear: this tool is for natural-language date questions, with a concrete example and explicit ambiguity behavior. However, it never says when not to use it or names alternatives like business_days or days_between, so it lacks full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subtract_daysSubtract calendar days from a dateARead-onlyIdempotentInspect
The date N whole calendar days before a date (exclusive counting: the start date is day 0). Omit date for today in tz. For working days use business_days; for the gap between two dates use days_between.
| Name | Required | Description | Default |
|---|---|---|---|
| tz | No | IANA timezone that defines "today" (e.g. Africa/Kampala). Default UTC. | UTC |
| date | No | ISO date YYYY-MM-DD, or "today" (resolved in tz) | today |
| days | Yes | Whole calendar days to subtract. Negative counts forwards. |
Output Schema
| Name | Required | Description |
|---|---|---|
| answer | Yes | The calculated answer (kind-discriminated) |
| receipt | Yes | Auditable receipt: inputs, timezone, convention, workweek, holiday calendar, exclusions, versions, stable result ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds the crucial exclusive-counting rule ('start date is day 0') and clarifies that 'today' is resolved in tz, which are behavioral details beyond the structured fields and not contained in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the core counting rule is front-loaded, followed by usage defaults and sibling alternatives. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a pure computation tool, the description plus schema fully covers inputs, defaults, edge semantics, and alternative tools. The presence of an output schema means return-value details do not need to be restated, and nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameter names and defaults are already documented. The description adds meaning beyond the schema by defining the exact day-count convention and explaining how to omit the date parameter to use today in a timezone, which refines the semantics of both 'days' and 'date'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific operation: returns the date N whole calendar days before a given date, with explicit exclusive-counting semantics. It also differentiates itself from sibling tools by naming business_days and days_between, clarifying that this is the calendar-day subtraction tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear when-to-use guidance: 'Omit date for today in tz' tells users how to default the main input, and explicitly routes working-day and date-gap use cases to business_days and days_between respectively. No ambiguity remains about which sibling to choose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
- Changed
add_days1 field changed- added
Input schema / properties / days / descriptionAdded value: +"Whole calendar days to add. Negative counts backwards."
- Changed
business_days7 fields changed- removed
Input schema / properties / date / $refRemoved value: -"#/properties/from" - added
Input schema / properties / date / patternAdded value: +"^(\\d{4}-\\d{2}-\\d{2}|today)$" - added
Input schema / properties / date / typeAdded value: +"string" - added
Input schema / properties / days / descriptionAdded value: +"Add mode: business days to move. Negative counts backwards." - removed
Input schema / properties / to / $refRemoved value: -"#/properties/from" - added
Input schema / properties / to / patternAdded value: +"^(\\d{4}-\\d{2}-\\d{2}|today)$" - added
Input schema / properties / to / typeAdded value: +"string"
- Changed
days_between4 fields changed- removed
Input schema / properties / to / $refRemoved value: -"#/properties/from" - added
Input schema / properties / to / descriptionAdded value: +"ISO date YYYY-MM-DD, or \"today\" (resolved in tz)" - added
Input schema / properties / to / patternAdded value: +"^(\\d{4}-\\d{2}-\\d{2}|today)$" - added
Input schema / properties / to / typeAdded value: +"string"
- Changed
explain16 fields changed- added
Input schema / properties / days / descriptionAdded value: +"Day count for add_days, subtract_days and business_days add mode." - added
Input schema / properties / event / descriptionAdded value: +"Event slug (e.g. christmas). Exactly one of event/weekday." - removed
Input schema / properties / from / $refRemoved value: -"#/properties/date" - added
Input schema / properties / from / patternAdded value: +"^(\\d{4}-\\d{2}-\\d{2}|today)$" - added
Input schema / properties / from / typeAdded value: +"string" - removed
Input schema / properties / invoiceDate / $refRemoved value: -"#/properties/date" - added
Input schema / properties / invoiceDate / patternAdded value: +"^(\\d{4}-\\d{2}-\\d{2}|today)$" - added
Input schema / properties / invoiceDate / typeAdded value: +"string" - added
Input schema / properties / net / descriptionAdded value: +"Net-N payment terms in calendar days (Net 30 = 30)." - added
Input schema / properties / op / descriptionAdded value: +"Operation to explain. holiday_lookup is the holidays tool; the others share their tool's name." - added
Input schema / properties / roll / descriptionAdded value: +"Roll a weekend or holiday due date forward to the next business day. Default false." - removed
Input schema / properties / to / $refRemoved value: -"#/properties/date" - added
Input schema / properties / to / patternAdded value: +"^(\\d{4}-\\d{2}-\\d{2}|today)$" - added
Input schema / properties / to / typeAdded value: +"string" - added
Input schema / properties / weekday / descriptionAdded value: +"0 = Sunday .. 6 = Saturday. Exactly one of event/weekday." - added
Input schema / properties / year / descriptionAdded value: +"Calendar year for holiday_lookup, e.g. 2027"
- Changed
holidays2 fields changed- changed
Input schema / properties / jurisdiction / descriptionPrevious value: -"US, GB, GB-SCT, GB-NIR, CA, AU, UG (alias UK)"New value: +"Holiday jurisdiction id: US, GB, GB-SCT, GB-NIR, IE, FR, CA, AU, UG (alias UK for GB)." - added
Input schema / properties / year / descriptionAdded value: +"Calendar year to list, e.g. 2027"
- Changed
invoice_due2 fields changed- added
Input schema / properties / net / descriptionAdded value: +"Net-N payment terms in calendar days (Net 30 = 30)." - added
Input schema / properties / roll / descriptionAdded value: +"Roll a weekend or holiday due date forward to the next business day. Default false."
- Changed
next_occurrence2 fields changed- added
Input schema / properties / event / descriptionAdded value: +"Event slug (e.g. christmas). Exactly one of event/weekday." - added
Input schema / properties / weekday / descriptionAdded value: +"0 = Sunday .. 6 = Saturday. Exactly one of event/weekday."
- Changed
parse_date_query1 field changed- added
Input schema / properties / q / descriptionAdded value: +"The date question in plain language. Pass the user's wording rather than a date you computed."
- Changed
subtract_days1 field changed- added
Input schema / properties / days / descriptionAdded value: +"Whole calendar days to subtract. Negative counts forwards."
9 tool updates
- First observed
add_days - First observed
business_days - First observed
days_between - First observed
explain - First observed
holidays - First observed
invoice_due - First observed
next_occurrence - First observed
parse_date_query - First observed
subtract_days
Related MCP Connectors
Business-day, SLA, cron and recurrence calculations โ offline, holiday-aware, no network.
Zero-signup business-day date-math API: add days, count days between dates, is-business-day.
Date arithmetic: day differences, business days, age, leap years, day-of-week, add/subtract.
Deterministic time tools for AI agents: timezone conversion, business-day math, cron interpretation.
Related MCP Servers
- AlicenseAqualityCmaintenanceProvides deterministic business-day calculations for AI agents, correctly handling country-specific weekends and public holidays.634 npm1Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA zero-signup business-day date arithmetic API that allows adding/subtracting working days, counting business days between two dates, and testing if a date is a business day, with custom holidays.MIT
- AlicenseAqualityCmaintenanceProvides correct trading day and settlement date calculations for multiple exchanges, with no external API calls.65 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables Japanese business calendar operations such as holiday checking, business day calculations, payment date calculation, fiscal year determination, and deadline tracking, all locally without external API.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.