tilwhen date engine
Server Details
Deterministic date arithmetic with auditable receipts: business days, due dates, holidays.
- Status
- Healthy
- Uptime
- 100.0% over 61 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 9 tools
Each tool targets a distinct date operation: addition, subtraction, difference, business days, holidays, due date, next occurrence, natural language parsing, and explanation. Even overlapping tools like add_days and business_days are clearly separated by calendar vs. business day semantics.
The naming mixes verb-first (add_days, subtract_days, parse_date_query, explain) with noun-first (business_days, days_between, holidays, invoice_due, next_occurrence). All names are lowercase with underscores, but the pattern is inconsistent, though each name is descriptive.
9 tools is well-scoped for a date engine, covering core date arithmetic, business days, holidays, invoice terms, and query parsing without unnecessary bloat.
The surface covers calendar day addition/subtraction, difference, business days, holidays, next occurrence, invoice terms, and natural language parsing. Minor gaps like explicit formatting or timezone conversion tools exist, but the core domain is well covered.
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. Passing from or to selects span mode and needs both; days and date are then ignored, so add mode takes its start date in date, not from. Optional holiday jurisdiction or custom calendar, and a selectable working week. For calendar days use add_days, subtract_days or days_between.
| 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?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety. The description goes further by explaining nuanced behavior: exclusive start, inclusive end, and that days/date are ignored in span mode—something not evident from annotations or schema alone. It adds meaningful behavioral context without contradicting 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?
The description is ~100 words and front-loads the two modes. Every sentence earns its place—mode definitions, parameter precedence, and alternative tool routing. It is efficient, though slightly dense, which prevents a perfect score.
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 params, two modes, mutual exclusions) and the presence of a rich input schema and output schema, the description covers all essential usage logic. Minor details like default workweek and holiday jurisdiction behavior are left to schema descriptions, but the description sufficiently frames the tool's purpose and boundaries.
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 each parameter has individual descriptions. However, the description explains the critical interactions between parameters (mode selection, ignoring of days/date in span mode) that cannot be inferred from individual property descriptions. This adds significant semantic value beyond 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 description clearly specifies a verb ('calculate') and resource ('business days') with two distinct modes: span mode (between two dates) and add mode (N business days away). It also distinguishes itself from sibling tools by explicitly naming calendar-day alternatives. This is unambiguous and specific.
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?
It provides explicit conditions for each mode ('Passing from or to selects span mode... add mode takes its start date in date, not from') and directs users to alternative tools for calendar days ('For calendar days use add_days, subtract_days or days_between'). This is clear, actionable guidance on when to use this tool versus others.
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 the from date to the to date, midnight to midnight in tz: positive when to is later, negative when it is earlier. Endpoints are exclusive, so this is the gap and consecutive dates are 1 apart. Either date may be "today", resolved in tz. For working days between two dates use business_days; to move a date by N days use add_days or subtract_days.
| 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?
The annotations already declare readOnly and idempotent behavior, and the description adds valuable semantics: midnight-to-midnight in tz, exclusive endpoints, consecutive dates are 1 apart, and 'today' resolution. No behavioral surprises remain.
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?
Four sentences, each earning its place: core semantics, endpoint exclusivity, 'today' behavior, and sibling routing. The most important information is front-loaded, with alternatives at the end.
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 simple pure-computation tool with an output schema and strong annotations, this description covers every aspect an agent needs: result sign, interval semantics, timezone handling, and alternative tools. Nothing essential is missing.
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% and each parameter has a good description, so the baseline is 3. The description adds extra meaning by explaining the relationship between from and to (signed result, which direction is positive) and clarifying that either date can be 'today' resolved in tz.
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?
States a specific verb and resource: computes 'signed whole calendar days from the from date to the to date'. The semantics are precise — positive when to is later, negative when earlier — and the title is reinforced rather than merely restated.
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?
Explicitly names alternatives and the conditions for choosing them: 'For working days between two dates use business_days; to move a date by N days use add_days or subtract_days.' This fully disambiguates the tool from its siblings.
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.
Business-day and public-holiday math for 29 countries: add business days, days between, holidays.
Public holidays for 150+ countries, business-day maths and timezone lookup
Related MCP Servers
- AlicenseAqualityCmaintenanceProvides deterministic business-day calculations for AI agents, correctly handling country-specific weekends and public holidays.683 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.69 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.